diff --git a/.agents/skills/working-with-qemu/SKILL.md b/.agents/skills/working-with-qemu/SKILL.md
new file mode 100644
index 0000000000..659784115f
--- /dev/null
+++ b/.agents/skills/working-with-qemu/SKILL.md
@@ -0,0 +1,70 @@
+---
+name: working-with-qemu
+description: Use when building, launching, debugging, or capturing screenshots of PebbleOS under QEMU.
+---
+
+# Working with QEMU
+
+PebbleOS can run under a custom QEMU version shipped with the PebbleOS SDK.
+
+## Configure & build
+
+```sh
+./pbl configure --board $BOARD
+./pbl build
+```
+
+where `$BOARD` is any of the `qemu_*` boards:
+
+- `qemu_emery`
+- `qemu_flint`
+- `qemu_gabbro`
+
+QEMU boards target a specific platform, e.g. `qemu_emery` targets the Emery platform, which is the platform used by Pebble Time 2.
+
+## Launch
+
+```sh
+./pbl qemu
+```
+
+The launched QEMU exposes:
+
+- Interactive QEMU monitor on the launching terminal (`-monitor stdio`)
+- Programmatic socket monitor (`-monitor unix:build/qemu-mon.sock`)
+- Serial console over TCP on `localhost:12345` (console) and `localhost:12344` (pebble-tool)
+
+UART1 output is also captured to `build/uart1.log`.
+
+## Console
+
+```sh
+./pbl console
+```
+
+Requires QEMU to be running.
+Uses the TCP serial port to connect to the QEMU console, and provides a prompt for sending commands and receiving responses.
+
+## Screenshot
+
+```sh
+./pbl screenshot # defaults to build/screenshot.png
+./pbl screenshot --screenshot-output /tmp/foo.png
+```
+
+Requires QEMU to be running.
+Uses the programmatic socket monitor to capture a screenshot of the QEMU display and save it to disk.
+Useful to validate or iterate on UI changes.
+
+## Interaction
+
+Keyboard input is captured by QEMU, so you can interact with the PebbleOS UI.
+Keys can also be send programmatically over the socket monitor using the `sendkey` command.
+They key mapping is:
+
+| QEMU key | PebbleOS key |
+| -------- | ------------ |
+| `left` | `back` |
+| `right` | `select` |
+| `up` | `up` |
+| `down` | `down` |
diff --git a/.clang-format b/.clang-format
index 7f61ec4889..643199a8a9 100644
--- a/.clang-format
+++ b/.clang-format
@@ -5,4 +5,5 @@ UseTab: Never
PointerAlignment: Right
ColumnLimit: 100
SortIncludes: Never
+AllowShortFunctionsOnASingleLine: Empty
---
diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md
new file mode 120000
index 0000000000..be77ac83a1
--- /dev/null
+++ b/.claude/CLAUDE.md
@@ -0,0 +1 @@
+../AGENTS.md
\ No newline at end of file
diff --git a/.claude/skills b/.claude/skills
new file mode 120000
index 0000000000..2b7a412b8f
--- /dev/null
+++ b/.claude/skills
@@ -0,0 +1 @@
+../.agents/skills
\ No newline at end of file
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000000..88736e5655
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,6 @@
+# PebbleOS code owners.
+#
+# Everything is currently owned by the maintainers below. As the project
+# grows, ownership may be split by area.
+
+* @gmarull @jplexer
diff --git a/.github/workflows/build-bootloader.yml b/.github/workflows/build-bootloader.yml
deleted file mode 100644
index 2c09f3b700..0000000000
--- a/.github/workflows/build-bootloader.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: Build Bootloader
-
-on:
- push:
- branches: [main]
- pull_request:
- branches: [main]
- paths:
- - '.github/workflows/build-bootloader.yml'
- - 'platform/**'
- - 'third_party/**'
-
-jobs:
- build:
- runs-on: ubuntu-24.04
-
- container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
-
- strategy:
- matrix:
- board: ["asterix"]
-
- steps:
- - name: Mark Github workspace as safe
- run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
-
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- submodules: true
-
- - name: Install Python dependencies
- run: |
- pip install -U pip
- pip install -r requirements.txt
-
- - name: Obtain platform name
- id: get-platform
- run: |
- BOARD=${{ matrix.board }}
- PLATFORM=${BOARD%%_*}
- echo "platform=$PLATFORM" >> "$GITHUB_OUTPUT"
-
- - name: Configure bootloader
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf configure --board ${{ matrix.board }}
-
- - name: Build bootloader
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf build
-
- - name: Store bootloader images
- uses: actions/upload-artifact@v4
- with:
- name: bootloader-${{ matrix.board }}
- path: |
- platform/${{ steps.get-platform.outputs.platform }}/boot/build/tintin_boot.*
diff --git a/.github/workflows/build-firmware.yml b/.github/workflows/build-firmware.yml
index e8867c7ed0..cd6395afa9 100644
--- a/.github/workflows/build-firmware.yml
+++ b/.github/workflows/build-firmware.yml
@@ -5,35 +5,58 @@ on:
branches: [main]
pull_request:
branches: [main]
- paths:
- - '.github/workflows/build-firmware.yml'
- - 'resources/**'
- - 'sdk/**'
- - 'src/**'
- - 'stored_apps/**'
- - 'tools/**'
- - 'third_party/**'
- - 'waftools/**'
- - 'waf'
- - 'wscript'
jobs:
- build:
+ changes-firmware:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-build: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
+ steps:
+ - uses: dorny/paths-filter@v4
+ if: github.event_name == 'pull_request'
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/build-firmware.yml'
+ - 'boards/**'
+ - 'platform/**'
+ - 'resources/**'
+ - 'sdk/**'
+ - 'src/**'
+ - 'stored_apps/**'
+ - 'tools/**'
+ - 'third_party/**'
+ - 'waftools/**'
+ - 'waf'
+ - 'wscript'
+
+ build-firmware:
+ needs: changes-firmware
+ if: needs.changes-firmware.outputs.should-build == 'true'
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
strategy:
matrix:
- board: ["snowy_bb2", "spalding_bb2", "silk_bb2", "asterix", "obelix", "obelix_bb"]
+ board:
+ - asterix
+ - obelix@dvt
+ - obelix@pvt
+ - getafix@evt
+ - getafix@dvt
+ - getafix@dvt2
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -48,16 +71,14 @@ jobs:
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- - name: Node modules cache
- uses: actions/cache@v4
- with:
- path: ${{ steps.npm-cache-dir.outputs.dir }}
- key: ${{ runner.os }}-node-${{ hashFiles('third_party/jerryscript/jerryscript/js_tooling/package.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
+ - name: Set artifact board name
+ id: artifact_board
+ run: echo "NAME=$(printf '%s' "$BOARD" | tr @ _)" >> "$GITHUB_OUTPUT"
+ env:
+ BOARD: ${{ matrix.board }}
- name: Configure
- run: ./waf configure --board ${{ matrix.board }}
+ run: ./waf configure --board '${{ matrix.board }}'
- name: Build
run: ./waf build
@@ -66,9 +87,9 @@ jobs:
run: ./waf bundle
- name: Store
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
- name: firmware-${{ matrix.board }}
+ name: firmware-${{ steps.artifact_board.outputs.NAME }}
path: |
build/**/*.elf
build/**/*.pbz
@@ -77,17 +98,24 @@ jobs:
- name: Get Build ID
id: build_id
run: |
- echo "BUILD_ID=$(arm-none-eabi-readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
+ echo "BUILD_ID=$(readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
- name: Upload log hash dictionary
- uses: Noelware/s3-action@2.3.1
- if: ${{ github.event_name == 'push' }}
- with:
- access-key-id: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
- secret-key: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
- endpoint: ${{ vars.LOG_HASH_BUCKET_ENDPOINT }}
- bucket: ${{ vars.LOG_HASH_BUCKET_NAME }}
- files: |
- build/src/fw/tintin_fw_loghash_dict.json
- path-format: ${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json
-
+ if: ${{ github.event_name == 'push' && github.repository == 'coredevices/PebbleOS' }}
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
+ AWS_DEFAULT_REGION: us-east-1
+ run: |
+ pip install awscli
+ aws s3 cp build/src/fw/tintin_fw_loghash_dict.json \
+ "s3://${{ vars.LOG_HASH_BUCKET_NAME }}/${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json" \
+ --endpoint-url "${{ vars.LOG_HASH_BUCKET_ENDPOINT }}"
+
+ build-firmware-status:
+ needs: [changes-firmware, build-firmware]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.build-firmware.result == 'failure' || needs.build-firmware.result == 'cancelled'
+ run: exit 1
diff --git a/.github/workflows/build-prf.yml b/.github/workflows/build-prf.yml
index f2dd5d26a7..1fab0411b9 100644
--- a/.github/workflows/build-prf.yml
+++ b/.github/workflows/build-prf.yml
@@ -5,34 +5,59 @@ on:
branches: [main]
pull_request:
branches: [main]
- paths:
- - '.github/workflows/build-prf.yml'
- - 'resources/**'
- - 'src/**'
- - 'tools/**'
- - 'third_party/**'
- - 'waftools/**'
- - 'waf'
- - 'wscript'
jobs:
- build:
+ changes-prf:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-build: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
+ steps:
+ - uses: dorny/paths-filter@v4
+ if: github.event_name == 'pull_request'
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/build-prf.yml'
+ - 'boards/**'
+ - 'platform/**'
+ - 'resources/**'
+ - 'src/**'
+ - 'tools/**'
+ - 'third_party/**'
+ - 'waftools/**'
+ - 'waf'
+ - 'wscript'
+
+ build-prf:
+ needs: changes-prf
+ if: needs.changes-prf.outputs.should-build == 'true'
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
strategy:
matrix:
- board: ["asterix", "obelix", "obelix_bb"]
- mode: ["normal", "mfg"]
+ board:
+ - asterix
+ - obelix@dvt
+ - obelix@pvt
+ - getafix@evt
+ - getafix@dvt
+ - getafix@dvt2
+ mode:
+ - normal
+ - mfg
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -47,50 +72,56 @@ jobs:
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- - name: Node modules cache
- uses: actions/cache@v4
- with:
- path: ${{ steps.npm-cache-dir.outputs.dir }}
- key: ${{ runner.os }}-node-${{ hashFiles('third_party/jerryscript/jerryscript/js_tooling/package.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
+ - name: Set artifact board name
+ id: artifact_board
+ run: echo "NAME=$(printf '%s' "$BOARD" | tr @ _)" >> "$GITHUB_OUTPUT"
+ env:
+ BOARD: ${{ matrix.board }}
- name: Configure
run: |
if [ "${{ matrix.mode }}" == "mfg" ]; then
- OPTS="--mfg --nohash"
+ OPTS="-DCONFIG_MFG=y -DCONFIG_LOG_HASHED=n"
fi
- ./waf configure --board ${{ matrix.board }} $OPTS
+ ./waf configure --board '${{ matrix.board }}' --variant=prf $OPTS
- name: Build
- run: ./waf build_prf
+ run: ./waf build
- name: Bundle
- run: ./waf bundle_prf
+ run: ./waf bundle
- name: Store
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
- name: prf-${{ matrix.board }}-${{ matrix.mode }}
+ name: prf-${{ steps.artifact_board.outputs.NAME }}-${{ matrix.mode }}
path: |
build/**/*.elf
build/**/*.pbz
- build/prf/src/fw/tintin_fw_loghash_dict.json
+ build/src/fw/tintin_fw_loghash_dict.json
- name: Get Build ID
id: build_id
run: |
- echo "BUILD_ID=$(arm-none-eabi-readelf -n build/prf/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
+ echo "BUILD_ID=$(readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
- name: Upload log hash dictionary
- uses: Noelware/s3-action@2.3.1
- if: ${{ github.event_name == 'push' }}
- with:
- access-key-id: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
- secret-key: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
- endpoint: ${{ vars.LOG_HASH_BUCKET_ENDPOINT }}
- bucket: ${{ vars.LOG_HASH_BUCKET_NAME }}
- files: |
- build/prf/src/fw/tintin_fw_loghash_dict.json
- path-format: ${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-prf.json
+ if: ${{ github.event_name == 'push' && github.repository == 'coredevices/PebbleOS' }}
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
+ AWS_DEFAULT_REGION: us-east-1
+ run: |
+ pip install awscli
+ aws s3 cp build/src/fw/tintin_fw_loghash_dict.json \
+ "s3://${{ vars.LOG_HASH_BUCKET_NAME }}/${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-prf.json" \
+ --endpoint-url "${{ vars.LOG_HASH_BUCKET_ENDPOINT }}"
+
+ build-prf-status:
+ needs: [changes-prf, build-prf]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.build-prf.result == 'failure' || needs.build-prf.result == 'cancelled'
+ run: exit 1
diff --git a/.github/workflows/build-qemu-sdkshell.yml b/.github/workflows/build-qemu-sdkshell.yml
new file mode 100644
index 0000000000..b7991a63cf
--- /dev/null
+++ b/.github/workflows/build-qemu-sdkshell.yml
@@ -0,0 +1,87 @@
+name: Build Firmware (QEMU + SDK Shell)
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+jobs:
+ changes-qemu-sdkshell:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-build: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
+ steps:
+ - uses: dorny/paths-filter@v4
+ if: github.event_name == 'pull_request'
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/build-qemu-sdkshell.yml'
+ - 'platform/**'
+ - 'resources/**'
+ - 'sdk/**'
+ - 'src/**'
+ - 'stored_apps/**'
+ - 'tools/**'
+ - 'third_party/**'
+ - 'waftools/**'
+ - 'waf'
+ - 'wscript'
+
+ build-qemu-sdkshell:
+ needs: changes-qemu-sdkshell
+ if: needs.changes-qemu-sdkshell.outputs.should-build == 'true'
+ runs-on: ubuntu-24.04
+
+ container:
+ image: ghcr.io/coredevices/pebbleos-docker:v5
+
+ strategy:
+ matrix:
+ board: ["qemu_emery", "qemu_flint", "qemu_gabbro"]
+
+ steps:
+ - name: Mark Github workspace as safe
+ run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
+
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+ submodules: true
+
+ - name: Install Python dependencies
+ run: |
+ pip install -U pip
+ pip install -r requirements.txt
+
+ - name: Get npm cache directory
+ id: npm-cache-dir
+ shell: bash
+ run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
+
+ - name: Configure
+ run: ./waf configure --board ${{ matrix.board }} -DCONFIG_SHELL_SDK=y
+
+ - name: Build
+ run: ./waf build qemu_image_micro qemu_image_spi
+
+ - name: Store
+ uses: actions/upload-artifact@v6
+ with:
+ name: firmware-${{ matrix.board }}-qemu
+ path: |
+ build/qemu_micro_flash.bin
+ build/qemu_spi_flash.bin
+
+ build-qemu-sdkshell-status:
+ needs: [changes-qemu-sdkshell, build-qemu-sdkshell]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.build-qemu-sdkshell.result == 'failure' || needs.build-qemu-sdkshell.result == 'cancelled'
+ run: exit 1
diff --git a/.github/workflows/build-qemu.yml b/.github/workflows/build-qemu.yml
index a8c975d263..34e9d9a4d6 100644
--- a/.github/workflows/build-qemu.yml
+++ b/.github/workflows/build-qemu.yml
@@ -5,35 +5,51 @@ on:
branches: [main]
pull_request:
branches: [main]
- paths:
- - '.github/workflows/build-qemu.yml'
- - 'resources/**'
- - 'sdk/**'
- - 'src/**'
- - 'stored_apps/**'
- - 'tools/**'
- - 'third_party/**'
- - 'waftools/**'
- - 'waf'
- - 'wscript'
jobs:
- build:
+ changes-qemu:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-build: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
+ steps:
+ - uses: dorny/paths-filter@v4
+ if: github.event_name == 'pull_request'
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/build-qemu.yml'
+ - 'platform/**'
+ - 'resources/**'
+ - 'sdk/**'
+ - 'src/**'
+ - 'stored_apps/**'
+ - 'tools/**'
+ - 'third_party/**'
+ - 'waftools/**'
+ - 'waf'
+ - 'wscript'
+
+ build-qemu:
+ needs: changes-qemu
+ if: needs.changes-qemu.outputs.should-build == 'true'
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
strategy:
matrix:
- board: ["snowy_bb2", "spalding_bb2", "silk_bb2"]
+ board: ["qemu_flint", "qemu_emery", "qemu_gabbro"]
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -48,24 +64,24 @@ jobs:
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- - name: Node modules cache
- uses: actions/cache@v4
- with:
- path: ${{ steps.npm-cache-dir.outputs.dir }}
- key: ${{ runner.os }}-node-${{ hashFiles('third_party/jerryscript/jerryscript/js_tooling/package.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
-
- name: Configure
- run: ./waf configure --board ${{ matrix.board }} --qemu
+ run: ./waf configure --board ${{ matrix.board }}
- name: Build
run: ./waf build qemu_image_micro qemu_image_spi
- name: Store
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: firmware-${{ matrix.board }}-qemu
path: |
build/qemu_micro_flash.bin
build/qemu_spi_flash.bin
+
+ build-qemu-status:
+ needs: [changes-qemu, build-qemu]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.build-qemu.result == 'failure' || needs.build-qemu.result == 'cancelled'
+ run: exit 1
diff --git a/.github/workflows/build-translation-source.yml b/.github/workflows/build-translation-source.yml
index ed9869e600..0c5602e1f4 100644
--- a/.github/workflows/build-translation-source.yml
+++ b/.github/workflows/build-translation-source.yml
@@ -16,14 +16,14 @@ jobs:
BOARD_NAME: "asterix"
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
diff --git a/.github/workflows/compliance.yml b/.github/workflows/compliance.yml
index ac8e9fe232..d71ad71236 100644
--- a/.github/workflows/compliance.yml
+++ b/.github/workflows/compliance.yml
@@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
@@ -16,5 +16,104 @@ jobs:
- name: Install GitLint
run: pip install gitlint
- - name: Run GitLint
+ - name: Run GitLint
run: gitlint --commits "${{ github.event.pull_request.base.sha }}..HEAD"
+
+ ruff:
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+ fetch-depth: 0
+
+ - name: Install ruff
+ run: pip install ruff
+
+ - name: Run ruff format check
+ run: |
+ base="${{ github.event.pull_request.base.sha }}"
+
+ # collect submodule paths to skip
+ submodules=$(git config --file .gitmodules --get-regexp '\.path$' \
+ | awk '{print $2}')
+
+ files=()
+ for file in $(git diff --name-only --diff-filter=d "$base"...HEAD -- '*.py'); do
+ skip=false
+ for sm in $submodules; do
+ case "$file" in "$sm"/*) skip=true; break ;; esac
+ done
+ if $skip; then continue; fi
+ files+=("$file")
+ done
+
+ if [ ${#files[@]} -eq 0 ]; then
+ echo "No Python files changed."
+ exit 0
+ fi
+
+ ruff format --check "${files[@]}"
+
+ license:
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
+ fetch-depth: 0
+
+ - name: Check SPDX license headers
+ run: |
+ base="${{ github.event.pull_request.base.sha }}"
+ failed_files=()
+
+ # collect submodule paths to skip
+ submodules=$(git config --file .gitmodules --get-regexp '\.path$' \
+ | awk '{print $2}')
+
+ for file in $(git diff --name-only --diff-filter=d "$base"...HEAD -- \
+ '*.c' '*.h' '*.S' '*.py' '*.sh'); do
+ # skip files inside git submodules
+ skip=false
+ for sm in $submodules; do
+ case "$file" in "$sm"/*) skip=true; break ;; esac
+ done
+ if $skip; then continue; fi
+
+ if ! head -10 "$file" | grep -q "SPDX-License-Identifier: Apache-2.0"; then
+ # Resolve the file's pre-PR identity: either same path or
+ # the source of a rename.
+ origin="$file"
+ if ! git cat-file -e "$base":"$origin" 2>/dev/null; then
+ origin=$(git diff --find-renames --diff-filter=R --name-status \
+ "$base"...HEAD | awk -v f="$file" '$3 == f {print $2}')
+ fi
+
+ # If the file (or its rename source) existed before this PR and
+ # already lacked Apache-2.0, skip it as pre-existing.
+ if [ -n "$origin" ] && git cat-file -e "$base":"$origin" 2>/dev/null; then
+ if ! git show "$base":"$origin" | head -10 \
+ | grep -q "SPDX-License-Identifier: Apache-2.0"; then
+ echo "::notice file=$file::Skipping: pre-existing non-Apache-2.0 license"
+ continue
+ fi
+ fi
+ echo "::error file=$file::Missing 'SPDX-License-Identifier: Apache-2.0' header"
+ failed_files+=("$file")
+ fi
+ done
+
+ if [ ${#failed_files[@]} -ne 0 ]; then
+ echo ""
+ echo "${#failed_files[@]} file(s) missing Apache-2.0 SPDX license header:"
+ for f in "${failed_files[@]}"; do
+ echo " - $f"
+ done
+ echo ""
+ echo "Expected within the first 10 lines:"
+ echo " /* SPDX-License-Identifier: Apache-2.0 */"
+ exit 1
+ fi
diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml
index 6ebf483452..61f057d6b3 100644
--- a/.github/workflows/crowdin-pull.yml
+++ b/.github/workflows/crowdin-pull.yml
@@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
- name: Pull translations from Crowdin
uses: crowdin/github-action@v2
diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml
new file mode 100644
index 0000000000..f18705bceb
--- /dev/null
+++ b/.github/workflows/nix.yml
@@ -0,0 +1,76 @@
+name: Nix
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+jobs:
+ changes-nix:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-build: ${{ steps.filter.outputs.src == 'true' }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
+ - uses: dorny/paths-filter@v4
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/nix.yml'
+ - 'flake.nix'
+ - 'flake.lock'
+
+ nix-shell:
+ needs: changes-nix
+ if: needs.changes-nix.outputs.should-build == 'true'
+ runs-on: ${{ matrix.os }}
+ timeout-minutes: 90
+
+ strategy:
+ fail-fast: false
+ matrix:
+ os: [ubuntu-24.04, ubuntu-24.04-arm, macos-15]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+ with:
+ fetch-depth: 0
+ submodules: true
+
+ - name: Install Nix
+ uses: cachix/install-nix-action@v31
+
+ - name: Check flake
+ run: nix flake check
+
+ # Running the SDK binaries verifies autoPatchelfHook resolved all of
+ # their shared-library dependencies.
+ - name: Smoke test SDK tools
+ run: |
+ nix develop --command bash -c '
+ set -ex
+ arm-none-eabi-gcc --version
+ qemu-pebble --version
+ sftool --version
+ '
+
+ - name: Configure
+ run: nix develop --command ./waf configure --board asterix
+
+ - name: Build
+ run: nix develop --command ./waf build
+
+ nix-status:
+ needs: [changes-nix, nix-shell]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.nix-shell.result == 'failure' || needs.nix-shell.result == 'cancelled'
+ run: exit 1
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ab38cbce6f..05a3a1ba33 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -9,92 +9,28 @@ env:
MEMFAULT_CLI_VERSION: "1.6.0"
jobs:
- build-bootloader:
- runs-on: ubuntu-24.04
-
- container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
-
- strategy:
- matrix:
- board: ["asterix"]
-
- steps:
- - name: Mark Github workspace as safe
- run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
-
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- submodules: true
-
- - name: Fetch tags
- run: |
- git fetch --tags --force
-
- - name: Install Python dependencies
- run: |
- pip install -U pip
- pip install -r requirements.txt
-
- - name: Obtain platform name
- id: get-platform
- run: |
- BOARD=${{ matrix.board }}
- PLATFORM=${BOARD%%_*}
- echo "platform=$PLATFORM" >> "$GITHUB_OUTPUT"
-
- - name: Configure bootloader
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf configure --board ${{ matrix.board }}
-
- - name: Build bootloader
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf build
-
- - name: Copy bootloader artifacts
- run: |
- mkdir -p artifacts
- cp platform/${{ steps.get-platform.outputs.platform }}/boot/build/tintin_boot.hex \
- artifacts/bootloader_${{ matrix.board }}_${{github.ref_name}}.hex
-
- - name: Configure bootloader (nowatchdog)
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf configure --board ${{ matrix.board }} --nowatchdog
-
- - name: Build bootloader (nowatchdog)
- working-directory: platform/${{ steps.get-platform.outputs.platform }}/boot
- run: ./waf build
-
- - name: Copy bootloader artifacts (nowatchdog)
- run: |
- mkdir -p artifacts
- cp platform/${{ steps.get-platform.outputs.platform }}/boot/build/tintin_boot.hex \
- artifacts/bootloader_nowatchdog_${{ matrix.board }}_${{github.ref_name}}.hex
-
- - name: Store
- uses: actions/upload-artifact@v4
- with:
- path: artifacts
- name: artifacts-bootloader-${{ matrix.board }}
-
build-prf:
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
strategy:
matrix:
- board: ["asterix", "obelix"]
+ board:
+ - asterix
+ - obelix@dvt
+ - obelix@pvt
+ - getafix@evt
+ - getafix@dvt
+ - getafix@dvt2
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -108,69 +44,83 @@ jobs:
pip install -U pip
pip install -r requirements.txt
+ - name: Set artifact board name
+ id: artifact_board
+ run: echo "NAME=$(printf '%s' "$BOARD" | tr @ _)" >> "$GITHUB_OUTPUT"
+ env:
+ BOARD: ${{ matrix.board }}
+
- name: Configure
- run: ./waf configure --board ${{ matrix.board }} --release
+ run: ./waf configure --board '${{ matrix.board }}' --variant=prf -DCONFIG_RELEASE=y
- name: Build PRF
- run: ./waf build_prf
+ run: ./waf build
- name: Bundle PRF
- run: ./waf bundle_prf
+ run: ./waf bundle
- name: Copy PRF artifacts
run: |
mkdir -p artifacts
- cp build/prf/src/fw/tintin_fw.hex artifacts/prf_${{ matrix.board }}_${{github.ref_name}}.hex
- cp build/prf/src/fw/tintin_fw.bin artifacts/prf_${{ matrix.board }}_${{github.ref_name}}.bin
- cp build/prf/src/fw/tintin_fw.elf artifacts/prf_${{ matrix.board }}_${{github.ref_name}}.elf
- cp build/prf/*.pbz artifacts
- cp build/prf/src/fw/tintin_fw_loghash_dict.json artifacts/prf_${{ matrix.board }}_${{github.ref_name}}_loghash_dict.json
+ cp build/src/fw/tintin_fw.hex artifacts/prf_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.hex
+ cp build/src/fw/tintin_fw.bin artifacts/prf_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.bin
+ cp build/src/fw/tintin_fw.elf artifacts/prf_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.elf
+ cp build/*.pbz artifacts
+ cp build/src/fw/tintin_fw_loghash_dict.json artifacts/prf_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}_loghash_dict.json
- name: Get PRF Build ID
id: prf_build_id
run: |
- echo "BUILD_ID=$(arm-none-eabi-readelf -n build/prf/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
+ echo "BUILD_ID=$(readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
- name: Upload PRF log hash dictionary
- uses: Noelware/s3-action@2.3.1
- with:
- access-key-id: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
- secret-key: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
- endpoint: ${{ vars.LOG_HASH_BUCKET_ENDPOINT }}
- bucket: ${{ vars.LOG_HASH_BUCKET_NAME }}
- files: |
- build/prf/src/fw/tintin_fw_loghash_dict.json
- path-format: ${{ steps.prf_build_id.outputs.BUILD_ID }}-${{ github.sha }}-prf.json
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
+ AWS_DEFAULT_REGION: us-east-1
+ run: |
+ pip install awscli
+ aws s3 cp build/src/fw/tintin_fw_loghash_dict.json \
+ "s3://${{ vars.LOG_HASH_BUCKET_NAME }}/${{ steps.prf_build_id.outputs.BUILD_ID }}-${{ github.sha }}-prf.json" \
+ --endpoint-url "${{ vars.LOG_HASH_BUCKET_ENDPOINT }}"
- name: Configure PRF MFG
- run: ./waf configure --board ${{ matrix.board }} --mfg --nohash --release
+ run: ./waf configure --board '${{ matrix.board }}' --variant=prf -DCONFIG_MFG=y -DCONFIG_LOG_HASHED=n -DCONFIG_RELEASE=y
- name: Build MFG PRF
- run: ./waf build_prf
+ run: ./waf build
- name: Copy MFG PRF artifacts
run: |
mkdir -p artifacts
- cp build/prf/src/fw/tintin_fw.hex artifacts/prf_mfg_${{ matrix.board }}_${{github.ref_name}}.hex
- cp build/prf/src/fw/tintin_fw.bin artifacts/prf_mfg_${{ matrix.board }}_${{github.ref_name}}.bin
- cp build/prf/src/fw/tintin_fw.elf artifacts/prf_mfg_${{ matrix.board }}_${{github.ref_name}}.elf
+ cp build/src/fw/tintin_fw.hex artifacts/prf_mfg_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.hex
+ cp build/src/fw/tintin_fw.bin artifacts/prf_mfg_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.bin
+ cp build/src/fw/tintin_fw.elf artifacts/prf_mfg_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}.elf
- name: Store
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
- name: artifacts-prf-${{ matrix.board }}
+ name: artifacts-prf-${{ steps.artifact_board.outputs.NAME }}
path: artifacts
build-firmware:
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
strategy:
matrix:
- board: ["asterix", "obelix"]
- slot: [0, 1]
+ board:
+ - asterix
+ - obelix@dvt
+ - obelix@pvt
+ - getafix@evt
+ - getafix@dvt
+ - getafix@dvt2
+ slot:
+ - 0
+ - 1
exclude:
- board: "asterix"
@@ -181,7 +131,7 @@ jobs:
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -200,16 +150,25 @@ jobs:
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- - name: Node modules cache
- uses: actions/cache@v4
- with:
- path: ${{ steps.npm-cache-dir.outputs.dir }}
- key: ${{ runner.os }}-node-${{ hashFiles('third_party/jerryscript/jerryscript/js_tooling/package.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
+ - name: Set artifact board name
+ id: artifact_board
+ run: echo "NAME=$(printf '%s' "$BOARD" | tr @ _)" >> "$GITHUB_OUTPUT"
+ env:
+ BOARD: ${{ matrix.board }}
+
+ - name: Set slot suffix
+ id: slot_suffix
+ run: |
+ NEEDS_SUFFIX="obelix_dvt obelix_pvt getafix_evt getafix_dvt getafix_dvt2"
+
+ if echo $NEEDS_SUFFIX | grep -wq "${{ steps.artifact_board.outputs.NAME }}"; then
+ echo "SLOT_SUFFIX=_slot${{ matrix.slot }}" >> "$GITHUB_OUTPUT"
+ else
+ echo "SLOT_SUFFIX=" >> "$GITHUB_OUTPUT"
+ fi
- name: Configure
- run: ./waf configure --board ${{ matrix.board }} --slot ${{ matrix.slot }} --release
+ run: ./waf configure --board '${{ matrix.board }}' --slot ${{ matrix.slot }} -DCONFIG_RELEASE=y
- name: Build firmware
run: ./waf build
@@ -220,35 +179,36 @@ jobs:
- name: Copy firmware artifacts
run: |
mkdir -p artifacts
- cp build/src/fw/tintin_fw.hex artifacts/firmware_${{ matrix.board }}_${{github.ref_name}}_slot${{ matrix.slot }}.hex
- cp build/src/fw/tintin_fw.bin artifacts/firmware_${{ matrix.board }}_${{github.ref_name}}_slot${{ matrix.slot }}.bin
- cp build/src/fw/tintin_fw.elf artifacts/firmware_${{ matrix.board }}_${{github.ref_name}}_slot${{ matrix.slot }}.elf
+ cp build/src/fw/tintin_fw.hex artifacts/firmware_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}.hex
+ cp build/src/fw/tintin_fw.bin artifacts/firmware_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}.bin
+ cp build/src/fw/tintin_fw.elf artifacts/firmware_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}.elf
cp build/*.pbz artifacts
- cp build/src/fw/tintin_fw_loghash_dict.json artifacts/firmware_${{ matrix.board }}_${{github.ref_name}}_slot${{ matrix.slot }}_loghash_dict.json
+ cp build/src/fw/tintin_fw_loghash_dict.json artifacts/firmware_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}_loghash_dict.json
- name: Get Build ID
id: build_id
run: |
- echo "BUILD_ID=$(arm-none-eabi-readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
+ echo "BUILD_ID=$(readelf -n build/src/fw/tintin_fw.elf | sed -n -e 's/^.*Build ID: //p')" >> "$GITHUB_OUTPUT"
- name: Upload log hash dictionary
- uses: Noelware/s3-action@2.3.1
- with:
- access-key-id: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
- secret-key: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
- endpoint: ${{ vars.LOG_HASH_BUCKET_ENDPOINT }}
- bucket: ${{ vars.LOG_HASH_BUCKET_NAME }}
- files: |
- build/src/fw/tintin_fw_loghash_dict.json
- path-format: ${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json
+ if: ${{ github.repository == 'coredevices/PebbleOS' }}
+ env:
+ AWS_ACCESS_KEY_ID: ${{ secrets.LOG_HASH_BUCKET_KEY_ID }}
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.LOG_HASH_BUCKET_SECRET }}
+ AWS_DEFAULT_REGION: us-east-1
+ run: |
+ pip install awscli
+ aws s3 cp build/src/fw/tintin_fw_loghash_dict.json \
+ "s3://${{ vars.LOG_HASH_BUCKET_NAME }}/${{ steps.build_id.outputs.BUILD_ID }}-${{ github.sha }}-normal.json" \
+ --endpoint-url "${{ vars.LOG_HASH_BUCKET_ENDPOINT }}"
- name: Store
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
- name: artifacts-${{ matrix.board }}-slot${{ matrix.slot }}
+ name: artifacts-${{ steps.artifact_board.outputs.NAME }}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}
path: artifacts
- - name: Upload to Memfault
+ - name: Upload symbols to Memfault
run: |
pip install memfault-cli==${MEMFAULT_CLI_VERSION}
@@ -257,37 +217,41 @@ jobs:
--org ${{ secrets.MEMFAULT_ORG }} \
--project ${{ secrets.MEMFAULT_PROJECT }} \
upload-mcu-symbols \
- artifacts/firmware_${{ matrix.board }}_${{github.ref_name}}_slot${{ matrix.slot }}.elf
-
- memfault \
- --org-token ${{ secrets.MEMFAULT_ORG_TOKEN }} \
- --org ${{ secrets.MEMFAULT_ORG }} \
- --project ${{ secrets.MEMFAULT_PROJECT }} \
- upload-ota-payload \
- --hardware-version ${{ matrix.board }}-slot${{ matrix.slot }} \
- --software-type pebbleos \
- --software-version ${{ github.ref_name }} \
- artifacts/normal_${{ matrix.board }}_${{ github.ref_name }}_slot${{ matrix.slot }}.pbz
+ artifacts/firmware_${{ steps.artifact_board.outputs.NAME }}_${{github.ref_name}}${{ steps.slot_suffix.outputs.SLOT_SUFFIX }}.elf
release:
runs-on: ubuntu-24.04
needs:
- - build-bootloader
- build-prf
- build-firmware
permissions:
contents: write
steps:
+ - name: Checkout
+ uses: actions/checkout@v5
+
- name: Download artifacts
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
- name: Display artifacts
run: ls -R
+ - name: Merge slot-specific pbz files
+ run: |
+ NEEDS_MERGE="obelix_dvt obelix_pvt getafix_evt getafix_dvt getafix_dvt2"
+
+ mkdir artifacts-merged
+ for board in $NEEDS_MERGE; do
+ python3 tools/merge_pbz.py \
+ --slot0-pbz "artifacts-${board}_slot0/normal_${board}_${{ github.ref_name }}_slot0.pbz" \
+ --slot1-pbz "artifacts-${board}_slot1/normal_${board}_${{ github.ref_name }}_slot1.pbz" \
+ --output "artifacts-merged/normal_${board}_${{ github.ref_name }}.pbz"
+ done
+
- name: Create release
- uses: softprops/action-gh-release@v2.2.2
+ uses: softprops/action-gh-release@v3.0.0
with:
files: artifacts-*/*
@@ -295,6 +259,25 @@ jobs:
run: |
pip install memfault-cli==${MEMFAULT_CLI_VERSION}
+ for file in artifacts-*/normal*.pbz; do
+ # Skip slot-specific pbzs
+ if echo $file | grep -q "_slot"; then
+ continue
+ fi
+
+ BOARD=$(echo $file | sed -n -e 's/^.*normal_\([a-zA-Z0-9_]*\)_v.*\.pbz$/\1/p')
+
+ memfault \
+ --org-token ${{ secrets.MEMFAULT_ORG_TOKEN }} \
+ --org ${{ secrets.MEMFAULT_ORG }} \
+ --project ${{ secrets.MEMFAULT_PROJECT }} \
+ upload-ota-payload \
+ --hardware-version $BOARD \
+ --software-type pebbleos \
+ --software-version ${{ github.ref_name }} \
+ $file
+ done
+
memfault \
--org-token ${{ secrets.MEMFAULT_ORG_TOKEN }} \
--org ${{ secrets.MEMFAULT_ORG }} \
diff --git a/.github/workflows/stale-pr.yml b/.github/workflows/stale-pr.yml
index de41d78c29..3a4ffba976 100644
--- a/.github/workflows/stale-pr.yml
+++ b/.github/workflows/stale-pr.yml
@@ -11,7 +11,7 @@ jobs:
stale:
runs-on: ubuntu-24.04
steps:
- - uses: actions/stale@v9
+ - uses: actions/stale@v10
with:
stale-pr-message: 'This pull request has been marked as stale because it has been open (more than) 30 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this pull request will automatically be closed in 7 days. Note, that you can always re-open a closed pull request at any time.'
days-before-pr-stale: 30
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 070b72196f..aab11f034f 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -5,32 +5,49 @@ on:
branches: [main]
pull_request:
branches: [main]
- paths:
- - '.github/workflows/test.yml'
- - 'resources/**'
- - 'sdk/**'
- - 'src/**'
- - 'stored_apps/**'
- - 'tools/**'
- - 'third_party/**'
- - 'waftools/**'
- - 'waf'
- - 'wscript'
env:
- TEST_BOARD: 'snowy_bb2'
+ TEST_BOARD: 'qemu_gabbro'
jobs:
- build:
+ changes-test:
+ runs-on: ubuntu-24.04
+ permissions:
+ pull-requests: read
+ outputs:
+ should-test: ${{ github.event_name == 'push' || steps.filter.outputs.src == 'true' }}
+ steps:
+ - uses: dorny/paths-filter@v4
+ if: github.event_name == 'pull_request'
+ id: filter
+ with:
+ filters: |
+ src:
+ - '.github/workflows/test.yml'
+ - 'platform/**'
+ - 'resources/**'
+ - 'sdk/**'
+ - 'src/**'
+ - 'stored_apps/**'
+ - 'tests/**'
+ - 'tools/**'
+ - 'third_party/**'
+ - 'waftools/**'
+ - 'waf'
+ - 'wscript'
+
+ build-test:
+ needs: changes-test
+ if: needs.changes-test.outputs.should-test == 'true'
runs-on: ubuntu-24.04
container:
- image: ghcr.io/pebble-dev/pebbleos-docker:v1
+ image: ghcr.io/coredevices/pebbleos-docker:v5
steps:
- name: Mark Github workspace as safe
run: git config --system --add safe.directory "${GITHUB_WORKSPACE}"
- name: Checkout
- uses: actions/checkout@v4
+ uses: actions/checkout@v5
with:
fetch-depth: 0
submodules: true
@@ -44,18 +61,28 @@ jobs:
run: ./waf configure --board ${{env.TEST_BOARD}}
- name: Run tests
- run: ./waf test
- continue-on-error: true
+ # -k keeps going after a failing test so the run reports every failure,
+ # not just the first. The job still fails if anything failed.
+ run: ./waf test -k
- name: Publish Test Report
- uses: mikepenz/action-junit-report@v5
- if: success() || failure()
+ uses: mikepenz/action-junit-report@v6
+ if: (!cancelled())
with:
report_paths: build/test/junit.xml
annotate_only: true
- name: Store failed test images
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
+ if: (!cancelled())
with:
name: failed_diff_images
path: build/test/tests/failed/*-diff.png
+
+ test-status:
+ needs: [changes-test, build-test]
+ if: always()
+ runs-on: ubuntu-24.04
+ steps:
+ - if: needs.build-test.result == 'failure' || needs.build-test.result == 'cancelled'
+ run: exit 1
diff --git a/.gitignore b/.gitignore
index 5d0d70f3b9..569195ae17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,7 +37,6 @@ a.out
tools/font/ttf
roundrect.h
log.txt
-openocd.cfg
.DS_Store
tools/bitmaps/*.h
tools/bitmaps/*.pbi
@@ -63,3 +62,7 @@ waflib.zip
docs/_build
artifacts/
+
+.claude/settings.local.json
+.envrc
+.direnv
\ No newline at end of file
diff --git a/.gitlint b/.gitlint
index bf75b765a2..2cafa89312 100644
--- a/.gitlint
+++ b/.gitlint
@@ -1,4 +1,5 @@
[general]
+extra-path=tools/gitlint
contrib=contrib-body-requires-signed-off-by,contrib-disallow-cleanup-commits
ignore-merge-commits=false
ignore-fixup-commits=false
diff --git a/.gitmodules b/.gitmodules
index cb9641c02f..41ee2d4a0d 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,15 +1,9 @@
[submodule "src/fw/vendor/CMSIS"]
path = third_party/cmsis_core/CMSIS
url = https://github.com/ARM-software/CMSIS_5.git
-[submodule "src/fw/vendor/stm32-sdk"]
- path = third_party/hal_stm32/stm32-sdk
- url = https://github.com/pebble-dev/stm32-sdk.git
[submodule "src/bluetooth-fw/nimble/vendor/mynewt-nimble"]
path = third_party/nimble/mynewt-nimble
url = https://github.com/coredevices/mynewt-nimble.git
-[submodule "src/bluetooth-fw/nimble/vendor/ti-service-packs"]
- path = third_party/ti_bt_sp/ti-service-packs
- url = https://github.com/coredevices/ti-bt-service-packs.git
[submodule "third_party/hal_nordic/nrfx"]
path = third_party/hal_nordic/nrfx
url = https://github.com/NordicSemiconductor/nrfx
@@ -24,7 +18,7 @@
url = https://github.com/MersenneTwister-Lab/TinyMT
[submodule "third_party/hal_sifli/SiFli-SDK"]
path = third_party/hal_sifli/SiFli-SDK
- url = https://github.com/OpenSiFli/SiFli-SDK.git
+ url = https://github.com/coredevices/SiFli-SDK.git
[submodule "third_party/memfault/memfault-firmware-sdk"]
path = third_party/memfault/memfault-firmware-sdk
url = https://github.com/memfault/memfault-firmware-sdk.git
@@ -40,3 +34,9 @@
[submodule "third_party/hal_lsm6dso/lsm6dso-pid"]
path = third_party/hal_lsm6dso/lsm6dso-pid
url = https://github.com/STMicroelectronics/lsm6dso-pid.git
+[submodule "third_party/resources/iconography"]
+ path = third_party/resources/iconography
+ url = https://github.com/pebble-dev/iconography
+[submodule "third_party/moddable/moddable"]
+ path = third_party/moddable/moddable
+ url = https://github.com/coredevices/moddable.git
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index 9878d8227f..d7dbe1fc5a 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -1,16 +1,5 @@
-# Copyright 2025 Core Devices LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# SPDX-FileCopyrightText: 2025 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000000..7066e0266f
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,86 @@
+# PebbleOS
+
+PebbleOS is the operating system running on Pebble smartwatches.
+
+## Organization
+
+- `docs`: project documentation
+- `python_libs`: tools used in multiple areas, e.g. log dehashing, console, etc.
+- `resources`: firmware resources (icons, fonts, etc.)
+- `sdk`: application SDK generation files
+- `src`: firmware source
+- `tests`: tests
+- `third_party`: third-party code in git submodules, also includes glue code
+- `tools`: a variety of tools or scripts used in multiple areas, from build
+ system, tests, etc.
+- `waftools`: scripts used by the build system
+
+## Code style
+
+- clang-format for C code
+- ruff for Python code
+- Keep code comments short and concise. Extended descriptions can be kept in
+ the Git commit message.
+- Do not put references to issues in the code, only add those to the Git commit message.
+
+## Logging
+
+- `PBL_LOG_WRN` / `PBL_LOG_ERR` are for warnings and errors — use them as
+ the names suggest.
+- Default to `PBL_LOG_DBG` for routine lifecycle / state-transition logs.
+ Reserve `PBL_LOG_INFO` for events that genuinely warrant attention in a
+ default-level log capture; if a code path can fire repeatedly under
+ normal use (e.g. play/pause spam, frequent state changes), it must not
+ log at INFO.
+
+## Firmware development
+
+- Configure: `./pbl configure --board BOARD_NAME`
+
+ - Board names can be obtained from `./pbl --help`
+ - `-DCONFIG_RELEASE=y` enables release mode
+ - `-DCONFIG_MFG=y` enables manufacturing mode
+ - `--variant=normal|prf` selects build variant (default: normal)
+
+- Build firmware: `./pbl build`
+- Run tests: `./pbl test`
+
+## Adding a new SDK function
+
+When exposing a new function to third-party apps (i.e. anything declared
+in an `applib/` header that user apps can call), three things must change
+together — the firmware build alone won't surface it to apps:
+
+1. **Implement the applib wrapper and syscall** — add the function to the
+ appropriate `src/fw/applib/.../.c/.h`, declare the syscall in
+ `src/fw/syscall/syscall.h`, and define it with `DEFINE_SYSCALL` in
+ `src/fw/syscall/syscall_.c`.
+2. **Register the symbol** in
+ `tools/generate_native_sdk/exported_symbols.json` under the matching
+ group, with an `addedRevision` matching the new SDK revision.
+3. **Bump the SDK revision** in
+ `src/fw/process_management/pebble_process_info.h`: increment
+ `PROCESS_INFO_CURRENT_SDK_VERSION_MINOR` and add a `// sdk.major:0xN
+ .minor:0xM -- (rev )` comment line above the
+ `#define`. The revision number in the comment must match
+ `addedRevision` from step 2.
+
+Forgetting steps 2 or 3 means the function compiles into the firmware
+but is invisible to the app SDK build, so third-party apps can't link
+against it.
+
+## Git rules
+
+Main rules:
+
+- Commit using `-s` git option, so commits have `Signed-Off-By`
+- Always indicate commit is co-authored by the current AI model
+- Commit in small chunks, trying to preserve bisectability
+- Commit format is `area: short description`, with longer description in the
+ body if necessary
+- Run `gitlint` on every commit to verify rules are followed
+
+Others:
+
+- If fixing Linear or GitHub issues, include in the commit body a line with
+ `Fixes XXX`, where XXX is the issue number.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 584d4359b4..aec5209087 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,7 @@
# Contribution Guidelines
+Thank you for your interest in contributing to PebbleOS! We welcome contributions of all kinds, including bug fixes, new features, documentation improvements, and more. To ensure a smooth contribution process, please follow the guidelines outlined below.
+
## Developer Certification of Origin (DCO)
To make a good faith effort to ensure licensing criteria are met, this
@@ -54,8 +56,7 @@ Signed-off-by: Your Name
For your commits, replace:
-- `Your Name` with your legal name (pseudonyms, hacker handles, and the
- names of groups are not allowed)
+- `Your Name` with a known identity (sorry, no anonymous contributions.)
- `your.email@example.com` with the same email address you are using to
author the commit (CI will fail if there is no match)
@@ -67,3 +68,25 @@ Additional requirements:
- If you are altering an existing commit created by someone else, you must add
your Signed-off-by: line without removing the existing one.
+
+## Commit Requirements
+- All commits must be atomic and self-contained. Each commit should represent a single logical change to the codebase. Avoid bundling multiple unrelated changes into a single commit.
+- Each commit message must be in the format of "area: description", where "area" is a short identifier for the part of the codebase being changed (e.g., "services" or "applib") and "description" is a brief summary of the change.
+- Each commit message must include the appropriate DCO sign-off as described above.
+- If your commit addresses a specific issue, please include a reference to the issue number in the commit message (e.g., "Fixes #123").
+- If your commit includes changes to documentation, please ensure that the documentation is updated accordingly and that the commit message reflects this.
+
+## Generative AI usage
+The use of large language models (LLMs) is acceptable **if and only if** a thorough manual review is performed. **By submitting a pull request, you are guaranteeing the following:**
+- You have *personally* reviewed all generated code to make sure that it will not cause undue technical issues, including testing for edge cases, ensuring data integrity, and verifying that performance standards are maintained.
+- You have ensured that PebbleOS's UX standards are not meaningfully degraded by this change.
+- You have ensured that any changes to the user interface are in keeping with the design of the rest of the app, or have provided good reason to change them.
+- You fully understand the content of the pull request and are prepared to explain it.
+- You have verified that the change does not reduce overall code quality or maintainability.
+- You own the rights to all content provided, or the license or attribution from the licensed content is properly included.
+
+The following rules additionally apply to contributions made in whole or part using generative AI:
+- The use of generative AI is clearly disclosed with one or more of the following:
+ - Co-authored tag on relevant commits (eg. `Co-Authored-By: Claude Opus 4.7 ` in the commit description, as generated by Claude Code)
+- All submitted text is in English. We do not have the capacity to review text or translations for other languages at this time and we do not trust LLMs to handle this correctly.
+- No AI-generated images, icons, SVG files, or other critically artistic works are included in the content of the pull request.
\ No newline at end of file
diff --git a/Kconfig b/Kconfig
new file mode 100644
index 0000000000..72ef0a6136
--- /dev/null
+++ b/Kconfig
@@ -0,0 +1,143 @@
+mainmenu "PebbleOS Configuration"
+
+# Per-SoC symbol defaults; loaded first so they take precedence.
+osource "src/fw/soc/*/Kconfig.defconfig"
+
+config RELEASE
+ bool "Release build"
+ help
+ Whether this is a release build. Pass
+ `-DCONFIG_RELEASE=y` to `./waf configure` to enable. Gates
+ features like Memfault crash reporting that should only run on
+ shipping firmware.
+
+config RECOVERY_FW
+ bool "Recovery firmware (PRF)"
+ help
+ Build the recovery firmware variant. Set via prj_prf.conf when
+ configuring with --variant=prf; do not set manually.
+
+config MFG
+ bool "Manufacturing firmware"
+ help
+ Enable manufacturing-only functionality in the PRF build. PRF
+ and MFG firmwares are mostly the same, so MFG builds also
+ define the recovery-firmware symbols.
+
+config PBLBOOT
+ bool "PBLBOOT bootloader"
+ help
+ Build for the PBLBOOT bootloader: prepend the PBLBOOT image
+ header to the firmware binary and assume a two-slot flash
+ layout with direct XIP. Disable for boards whose SoC bootloader
+ consumes a raw image and uses a single firmware slot.
+
+menu "Compiler options"
+
+config LTO
+ bool "Link-time optimization"
+
+choice
+ prompt "Optimization level"
+ default SIZE_OPTIMIZATIONS
+
+config SIZE_OPTIMIZATIONS
+ bool "Optimize for size (-Os)"
+
+config DEBUG_OPTIMIZATIONS
+ bool "Optimize for debugging (-Og)"
+
+config NO_OPTIMIZATIONS
+ bool "No optimizations (-O0)"
+ help
+ Previously known as "fat firmware". Requires 1M of onboard
+ flash.
+
+endchoice
+
+config COMPILER_SAVE_TEMPS
+ bool "Save compiler temporaries"
+ help
+ Save *.i and *.s files during compilation.
+
+config DEBUG_INFO
+ bool "Debug information"
+ default y
+ help
+ Compile with -g3 debug information.
+
+endmenu
+
+config IS_BIGBOARD
+ bool "Bigboard revision"
+ help
+ Engineering/development PCB revision of a board (`_bb` suffix
+ in the board name). Gates bigboard-only behaviour that differs
+ from the shipping board.
+
+# Source the active board's Kconfig and its per-board defaults; kconfig.py
+# exports $(BOARD) and $(BOARD_REVISION) from the --board argument.
+rsource "boards/$(BOARD)/Kconfig"
+osource "boards/$(BOARD)/Kconfig.$(BOARD_REVISION)"
+rsource "boards/$(BOARD)/Kconfig.defconfig"
+osource "boards/$(BOARD)/Kconfig.defconfig.$(BOARD_REVISION)"
+
+config BOARD_FAMILY_ASTERIX
+ bool
+ help
+ Hidden symbol selected by boards in the Asterix family.
+
+config BOARD_FAMILY_OBELIX
+ bool
+ help
+ Hidden symbol selected by boards in the Obelix family.
+
+config BOARD_FAMILY_GETAFIX
+ bool
+ help
+ Hidden symbol selected by boards in the Getafix family.
+
+config BOARD_FAMILY_NAME
+ string
+ help
+ Lowercase token identifying the board family (or the single
+ board, for QEMU boards). Used for resource path lookups
+ and string outputs. Set per board in
+ boards//Kconfig.defconfig.
+
+config QEMU_MACHINE
+ string
+ depends on QEMU
+ help
+ QEMU machine identifier passed to qemu-system-arm via the
+ `-machine` flag. Set per board in
+ boards//Kconfig.defconfig.
+
+choice
+ prompt "SDK platform"
+config PLATFORM_EMERY
+ bool "Emery"
+config PLATFORM_FLINT
+ bool "Flint"
+config PLATFORM_GABBRO
+ bool "Gabbro"
+endchoice
+
+choice
+ prompt "Screen color depth"
+
+config SCREEN_COLOR_DEPTH_BITS_1
+ bool "1-bit (monochrome)"
+
+config SCREEN_COLOR_DEPTH_BITS_8
+ bool "8-bit (palette)"
+
+endchoice
+
+config SCREEN_COLOR_DEPTH_BITS
+ int
+ default 1 if SCREEN_COLOR_DEPTH_BITS_1
+ default 8 if SCREEN_COLOR_DEPTH_BITS_8
+
+rsource "src/Kconfig"
+rsource "third_party/Kconfig"
diff --git a/README.md b/README.md
index 4b11a0955f..f1662f6e19 100644
--- a/README.md
+++ b/README.md
@@ -7,9 +7,9 @@
-
+
-
+
## Resources
@@ -19,15 +19,15 @@ Here's a quick summary of resources to help you find your way around:
### Getting Started
- 📖 [Documentation](https://pebbleos-core.readthedocs.io/en/latest)
-- 🚀 [Getting Started Guide](https://pebbleos-core.readthedocs.io/en/latest/getting_started.html)
+- 🚀 [Prerequisites Guide](https://pebbleos-core.readthedocs.io/en/latest/development/getting_started.html)
### Code and Development
-- ⌚ [Source Code Repository](https://github.com/coredevices/pebbleos)
-- 🐛 [Issue Tracker](https://github.com/coredevices/pebbleos/issues)
+- ⌚ [Source Code Repository](https://github.com/coredevices/PebbleOS)
+- 🐛 [Issue Tracker](https://github.com/coredevices/PebbleOS/issues)
- 🤝 [Contribution Guide](CONTRIBUTING.md)
### Community and Support
- 💬 [Discord](https://discordapp.com/invite/aRUAYFN)
-- 👥 [Discussions](https://github.com/coredevices/pebbleos/discussions)
+- 👥 [Discussions](https://github.com/coredevices/PebbleOS/discussions)
diff --git a/SDK_VERSION b/SDK_VERSION
new file mode 100644
index 0000000000..c946ee6160
--- /dev/null
+++ b/SDK_VERSION
@@ -0,0 +1 @@
+0.1.6
diff --git a/applib-targets/emscripten/emscripten_app.c b/applib-targets/emscripten/emscripten_app.c
deleted file mode 100644
index 0215a7fbd4..0000000000
--- a/applib-targets/emscripten/emscripten_app.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "emscripten_app.h"
-#include "emscripten_graphics.h"
-#include "emscripten_resources.h"
-#include "emscripten_tick_timer_service.h"
-
-#include "applib/app.h"
-#include "applib/ui/app_window_stack.h"
-#include "applib/rockyjs/api/rocky_api_graphics.h"
-
-#include
-
-__attribute__((weak)) int app_main(void) {
- Window *window = window_create();
- app_window_stack_push(window, false);
- app_event_loop();
- return 0;
-}
-
-static void prv_event_loop(void) {
- Window *window = app_window_stack_get_top_window();
- if (window && window->is_render_scheduled) {
- GContext *ctx = rocky_api_graphics_get_gcontext();
- layer_render_tree(&window->layer, ctx);
- window->is_render_scheduled = false;
- EM_ASM(
- // Implemented by html-binding.js:
- if (Module.frameBufferMarkDirty) {
- Module.frameBufferMarkDirty()
- }
- );
- }
-}
-
-void emx_app_init(void) {
- emx_graphics_init();
- emx_resources_init();
- emx_tick_timer_service_init();
-}
-
-void emx_app_deinit(void) {
- emx_resources_deinit();
-}
-
-void emx_app_event_loop(void) {
- emscripten_set_main_loop(prv_event_loop,
- 0, /* using window.requestAnimationFrame() */
- 1 /* Simulate infinite loop */);
-}
-
-int main(int argc, char **argv) {
- emx_app_init();
- app_main();
- emx_app_deinit();
-
- return 0;
-}
diff --git a/applib-targets/emscripten/emscripten_app.h b/applib-targets/emscripten/emscripten_app.h
deleted file mode 100644
index 65ba245f88..0000000000
--- a/applib-targets/emscripten/emscripten_app.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-void emx_app_init(void);
-
-void emx_app_event_loop(void);
diff --git a/applib-targets/emscripten/emscripten_clock.c b/applib-targets/emscripten/emscripten_clock.c
deleted file mode 100644
index 6dec898226..0000000000
--- a/applib-targets/emscripten/emscripten_clock.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "services/common/clock.h"
-
-static bool s_clock_is_24h_style;
-
-bool clock_is_24h_style(void) {
- return s_clock_is_24h_style;
-}
-
-void clock_set_24h_style(bool is_24h_style) {
- s_clock_is_24h_style = is_24h_style;
-}
diff --git a/applib-targets/emscripten/emscripten_graphics.c b/applib-targets/emscripten/emscripten_graphics.c
deleted file mode 100644
index 6df3d9d8fa..0000000000
--- a/applib-targets/emscripten/emscripten_graphics.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-#include
-
-#include "applib/fonts/fonts.h"
-#include "applib/graphics/graphics.h"
-#include "applib/graphics/gtypes.h"
-#include "applib/graphics/framebuffer.h"
-#include "applib/graphics/gdraw_command_image.h"
-#include "applib/graphics/gdraw_command_sequence.h"
-#include "applib/graphics/gdraw_command_frame.h"
-#include "applib/graphics/gbitmap_sequence.h"
-#include "applib/graphics/text.h"
-#include "applib/rockyjs/api/rocky_api_graphics.h"
-#include "applib/rockyjs/api/rocky_api_util.h"
-#include "applib/rockyjs/api/rocky_api_errors.h"
-
-#include "jerry-api.h"
-#include "process_state/app_state/app_state.h"
-
-#include
-
-static GContext s_gcontext = {};
-// FIXME: PBL-43469 Support for changing platforms will require a dynamic framebuffer.
-static FrameBuffer s_framebuffer = {};
-static TextRenderState s_text_render_state = {};
-static UnobstructedAreaState s_unobstructed_area_state = {};
-
-// FIXME: Right now, rocky only supports 1 window anyways
-static Window *s_top_window;
-
-GContext *emx_graphics_get_gcontext(void) {
- return &s_gcontext;
-}
-
-void *emx_graphics_get_pixels(void) {
- return s_gcontext.dest_bitmap.addr;
-}
-
-TextRenderState *app_state_get_text_render_state(void) {
- return &s_text_render_state;
-}
-
-Layer** app_state_get_layer_tree_stack(void) {
- static Layer *layer_tree_stack[LAYER_TREE_STACK_SIZE];
- return layer_tree_stack;
-}
-
-Layer** kernel_applib_get_layer_tree_stack(void) {
- PBL_ASSERT(0, "Not expected to be called when compiling to applib-emscripten...");
- return NULL;
-}
-
-// FIXME: Emscripten is cannot deal with two files with the same name
-// (even if the path is different) The framebuffer.c files end up not
-// getting linked in. A longer term fix would be to rename the object
-// file in WAF
-volatile const int FrameBuffer_MaxX = DISP_COLS;
-volatile const int FrameBuffer_MaxY = DISP_ROWS;
-void framebuffer_mark_dirty_rect(FrameBuffer* f, GRect rect) {
-}
-
-size_t framebuffer_get_size_bytes(FrameBuffer *f) {
- return FRAMEBUFFER_SIZE_BYTES;
-}
-
-Window *app_window_stack_get_top_window(void) {
- return s_top_window;
-}
-
-void app_window_stack_push(Window *window, bool animated) {
- PBL_ASSERT(!s_top_window, "Already have a window");
- s_top_window = window;
-}
-
-GContext *graphics_context_get_current_context(void) {
- return &s_gcontext;
-}
-
-// TODO: PBL-43467 Support a user-specified unobstructed area
-UnobstructedAreaState *app_state_get_unobstructed_area_state(void) {
- return &s_unobstructed_area_state;
-}
-
-void unobstructed_area_service_get_area(UnobstructedAreaState *state, GRect *area_out) {
- *area_out = state->area;
-}
-
-// FIXME: PBL-43496 This should take width, height, and format to dynamically
-// allocate our framebuffer GBitmap and support changing platforms.
-void emx_graphics_init(void) {
- framebuffer_init(&s_framebuffer, &(GSize) {DISP_COLS, DISP_ROWS});
- memset(s_framebuffer.buffer, 0xff, FRAMEBUFFER_SIZE_BYTES);
- framebuffer_dirty_all(&s_framebuffer);
- graphics_context_init(&s_gcontext, &s_framebuffer, GContextInitializationMode_App);
-
- s_unobstructed_area_state = (UnobstructedAreaState) {
- .area = {
- .origin = { .x = 0, .y = 0 },
- .size = { .w = 144, .h = 168 },
- },
- };
-}
diff --git a/applib-targets/emscripten/emscripten_graphics.h b/applib-targets/emscripten/emscripten_graphics.h
deleted file mode 100644
index 83e0ec0bf8..0000000000
--- a/applib-targets/emscripten/emscripten_graphics.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include "applib/graphics/gtypes.h"
-#include "process_state/app_state/app_state.h"
-
-void emx_graphics_init(void);
-GContext *emx_graphics_get_gcontext(void);
-void *emx_graphics_get_pixes(void);
-TextRenderState *app_state_get_text_render_state(void);
-void emx_graphics_call_canvas_update_proc(void);
diff --git a/applib-targets/emscripten/emscripten_jerry_api.c b/applib-targets/emscripten/emscripten_jerry_api.c
deleted file mode 100644
index 2bc5eef965..0000000000
--- a/applib-targets/emscripten/emscripten_jerry_api.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "jerry-api.h"
-#include
-
-#include
-
-#define TYPE_ERROR \
- jerry_create_error(JERRY_ERROR_TYPE, NULL);
-
-#define TYPE_ERROR_ARG \
- jerry_create_error(JERRY_ERROR_TYPE, (const jerry_char_t *)"wrong type of argument");
-
-#define TYPE_ERROR_FLAG \
- jerry_create_error(JERRY_ERROR_TYPE, (const jerry_char_t *)"argument cannot have an error flag");
-
-////////////////////////////////////////////////////////////////////////////////
-// Parser and Executor Function
-////////////////////////////////////////////////////////////////////////////////
-
-// Note that `is_strict` is currently unsupported by emscripten
-jerry_value_t jerry_eval(const jerry_char_t *source_p, size_t source_size, bool is_strict) {
- return (jerry_value_t)EM_ASM_INT({
- // jerry_eval() uses an indirect eval() call,
- // so the global execution context is used.
- // Also see ECMA 5.1 -- 10.4.2 Entering Eval Code.
- var indirectEval = eval;
- try {
- return __jerryRefs.ref(indirectEval(Module.Pointer_stringify($0, $1)));
- } catch (e) {
- var error_ref = __jerryRefs.ref(e);
- __jerryRefs.setError(error_ref, true);
- return error_ref;
- }
- }, source_p, source_size);
-}
-
-jerry_value_t jerry_acquire_value(jerry_value_t value) {
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.acquire($0);
- }, value);
-}
-
-void jerry_release_value(jerry_value_t value) {
- EM_ASM_INT({
- __jerryRefs.release($0);
- }, value);
-}
-////////////////////////////////////////////////////////////////////////////////
-// Get the global context
-////////////////////////////////////////////////////////////////////////////////
-jerry_value_t jerry_get_global_object(void) {
- return ((jerry_value_t)EM_ASM_INT_V({ \
- return __jerryRefs.ref(Function('return this;')()); \
- }));
-}
-
-jerry_value_t jerry_get_global_builtin(const jerry_char_t *builtin_name) {
- return ((jerry_value_t)EM_ASM_INT({ \
- return __jerryRefs.ref(Function('return this;')()[Module.Pointer_stringify($0)]); \
- }, builtin_name));
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Jerry Value Type Checking
-////////////////////////////////////////////////////////////////////////////////
-
-#define JERRY_VALUE_HAS_TYPE(ref, typename) \
- ((bool)EM_ASM_INT({ \
- return typeof __jerryRefs.get($0) === (typename); \
- }, (ref)))
-
-#define JERRY_VALUE_IS_INSTANCE(ref, type) \
- ((bool)EM_ASM_INT({ \
- return __jerryRefs.get($0) instanceof (type); \
- }, (ref)))
-
-bool jerry_value_is_array(const jerry_value_t value) {
- return JERRY_VALUE_IS_INSTANCE(value, Array);
-}
-
-bool jerry_value_is_boolean(const jerry_value_t value) {
- return JERRY_VALUE_HAS_TYPE(value, 'boolean');
-}
-
-bool jerry_value_is_constructor(const jerry_value_t value) {
- return jerry_value_is_function(value);
-}
-
-bool jerry_value_is_function(const jerry_value_t value) {
- return JERRY_VALUE_HAS_TYPE(value, 'function');
-}
-
-bool jerry_value_is_number(const jerry_value_t value) {
- return JERRY_VALUE_HAS_TYPE(value, 'number');
-}
-
-bool jerry_value_is_null(const jerry_value_t value) {
- return ((bool)EM_ASM_INT({
- return __jerryRefs.get($0) === null;
- }, value));
-}
-
-bool jerry_value_is_object(const jerry_value_t value) {
- return !jerry_value_is_null(value) &&
- (JERRY_VALUE_HAS_TYPE(value, 'object') || jerry_value_is_function(value));
-}
-
-bool jerry_value_is_string(const jerry_value_t value) {
- return JERRY_VALUE_HAS_TYPE(value, 'string');
-}
-
-bool jerry_value_is_undefined(const jerry_value_t value) {
- return JERRY_VALUE_HAS_TYPE(value, 'undefined');
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Jerry Value Getter Functions
-////////////////////////////////////////////////////////////////////////////////
-
-bool jerry_get_boolean_value(const jerry_value_t value) {
- if (!jerry_value_is_boolean(value)) {
- return false;
- }
- return (bool)EM_ASM_INT({
- return (__jerryRefs.get($0) === true);
- }, value);
-}
-
-double jerry_get_number_value(const jerry_value_t value) {
- if (!jerry_value_is_number(value)) {
- return 0.0;
- }
- return EM_ASM_DOUBLE({
- return __jerryRefs.get($0);
- }, value);
-}
-////////////////////////////////////////////////////////////////////////////////
-// Functions for UTF-8 encoded string values
-////////////////////////////////////////////////////////////////////////////////
-jerry_size_t jerry_get_utf8_string_size(const jerry_value_t value) {
- if (!jerry_value_is_string(value)) {
- return 0;
- }
- return (jerry_size_t)EM_ASM_INT({
- return Module.lengthBytesUTF8(__jerryRefs.get($0));
- }, value);
-}
-
-jerry_size_t jerry_string_to_utf8_char_buffer(const jerry_value_t value,
- jerry_char_t *buffer_p,
- jerry_size_t buffer_size) {
- const jerry_size_t str_size = jerry_get_utf8_string_size(value);
- if (str_size == 0 || buffer_size < str_size || buffer_p == NULL) {
- return 0;
- }
-
- EM_ASM_INT({
- var str = __jerryRefs.get($0);
- // Add one onto the buffer size, since Module.stringToUTF8 adds a null
- // character at the end. This will lead to truncation if we just use
- // buffer_size. Since the actual jerry-api does not do this, we are
- // always careful to allocate space for a null character at the end.
- // Allow stringToUTF8 to write that extra null beyond the passed in
- // buffer_length.
- Module.stringToUTF8(str, $1, $2 + 1);
- }, value, buffer_p, buffer_size);
- return strlen((const char *)buffer_p);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Functions for array object values
-////////////////////////////////////////////////////////////////////////////////
-uint32_t jerry_get_array_length(const jerry_value_t value) {
- if (!jerry_value_is_array(value)) {
- return 0;
- }
- return (uint32_t)EM_ASM_INT({
- return __jerryRefs.get($0).length;
- }, value);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Jerry Value Creation API
-////////////////////////////////////////////////////////////////////////////////
-#define JERRY_CREATE_VALUE(value) \
- ((jerry_value_t)EM_ASM_INT_V({ \
- return __jerryRefs.ref((value)); \
- }))
-
-jerry_value_t jerry_create_array(uint32_t size) {
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(new Array($0));
- }, size);
-}
-
-jerry_value_t jerry_create_boolean(bool value) {
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(Boolean($0));
- }, value);
-}
-
-jerry_value_t jerry_create_error(jerry_error_t error_type, const jerry_char_t *message_p) {
- return jerry_create_error_sz(error_type, message_p, strlen((const char *)message_p));
-}
-
-#define JERRY_ERROR(type, msg, sz) (jerry_value_t)(EM_ASM_INT({ \
- return __jerryRefs.ref(new (type)(Module.Pointer_stringify($0, $1))) \
- }, (msg), (sz)))
-
-jerry_value_t jerry_create_error_sz(jerry_error_t error_type,
- const jerry_char_t *message_p,
- jerry_size_t message_size) {
- jerry_value_t error_ref = 0;
- switch (error_type) {
- case JERRY_ERROR_COMMON:
- error_ref = JERRY_ERROR(Error, message_p, message_size);
- break;
- case JERRY_ERROR_EVAL:
- error_ref = JERRY_ERROR(EvalError, message_p, message_size);
- break;
- case JERRY_ERROR_RANGE:
- error_ref = JERRY_ERROR(RangeError, message_p, message_size);
- break;
- case JERRY_ERROR_REFERENCE:
- error_ref = JERRY_ERROR(ReferenceError, message_p, message_size);
- break;
- case JERRY_ERROR_SYNTAX:
- error_ref = JERRY_ERROR(SyntaxError, message_p, message_size);
- break;
- case JERRY_ERROR_TYPE:
- error_ref = JERRY_ERROR(TypeError, message_p, message_size);
- break;
- case JERRY_ERROR_URI:
- error_ref = JERRY_ERROR(URIError, message_p, message_size);
- break;
- default:
- EM_ASM_INT({
- abort('Cannot create error type: ' + $0);
- }, error_type);
- break;
- }
- jerry_value_set_error_flag(&error_ref);
- return error_ref;
-}
-
-jerry_value_t jerry_create_external_function(jerry_external_handler_t handler_p) {
- return (jerry_value_t)EM_ASM_INT({
- return __jerry_create_external_function($0);
- }, handler_p);
-}
-
-jerry_value_t jerry_create_number(double value) {
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref($0);
- }, value);
-}
-
-jerry_value_t jerry_create_number_infinity(bool negative) {
- if (negative) {
- return JERRY_CREATE_VALUE(-Infinity);
- } else {
- return JERRY_CREATE_VALUE(Infinity);
- }
-}
-
-jerry_value_t jerry_create_number_nan(void) {
- return JERRY_CREATE_VALUE(NaN);
-}
-
-jerry_value_t jerry_create_null(void) {
- return JERRY_CREATE_VALUE(null);
-}
-
-jerry_value_t jerry_create_object(void) {
- return JERRY_CREATE_VALUE(new Object());
-}
-
-jerry_value_t jerry_create_string(const jerry_char_t *str_p) {
- if (!str_p) {
- return jerry_create_undefined();
- }
- return jerry_create_string_utf8_sz(str_p, strlen((const char *)str_p));
-}
-
-jerry_value_t jerry_create_string_sz(const jerry_char_t *str_p, jerry_size_t str_size) {
- return jerry_create_string_utf8_sz(str_p, str_size);
-}
-
-jerry_value_t jerry_create_string_utf8(const jerry_char_t *str_p) {
- if (!str_p) {
- return jerry_create_undefined();
- }
- return jerry_create_string_utf8_sz(str_p, strlen((const char *)str_p));
-}
-
-jerry_value_t jerry_create_string_utf8_sz(const jerry_char_t *str_p, jerry_size_t str_size) {
- if (!str_p) {
- return jerry_create_undefined();
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(Module.Pointer_stringify($0, $1));
- }, str_p, str_size);
-}
-
-jerry_value_t jerry_create_undefined(void) {
- return JERRY_CREATE_VALUE(undefined);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// General API Functions of JS Objects
-////////////////////////////////////////////////////////////////////////////////
-
-bool jerry_has_property(const jerry_value_t obj_val, const jerry_value_t prop_name_val) {
- if (!jerry_value_is_object(obj_val) || !jerry_value_is_string(prop_name_val)) {
- return false;
- }
- return (bool)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var name = __jerryRefs.get($1);
- return (name in obj);
- }, obj_val, prop_name_val);
-}
-
-bool jerry_has_own_property(const jerry_value_t obj_val, const jerry_value_t prop_name_val) {
- if (!jerry_value_is_object(obj_val) || !jerry_value_is_string(prop_name_val)) {
- return false;
- }
- return (bool)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var name = __jerryRefs.get($1);
- return obj.hasOwnProperty(name);
- }, obj_val, prop_name_val);
-}
-
-bool jerry_delete_property(const jerry_value_t obj_val, const jerry_value_t prop_name_val) {
- if (!jerry_value_is_object(obj_val) || !jerry_value_is_string(prop_name_val)) {
- return false;
- }
- return (bool)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var name = __jerryRefs.get($1);
- try {
- return delete obj[name];
- } catch (e) {
- // In strict mode, delete throws SyntaxError if the property is an
- // own non-configurable property.
- return false;
- }
- return true;
- }, obj_val, prop_name_val);
-}
-
-jerry_value_t jerry_get_property(const jerry_value_t obj_val, const jerry_value_t prop_name_val) {
- if (!jerry_value_is_object(obj_val) || !jerry_value_is_string(prop_name_val)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var name = __jerryRefs.get($1);
- return __jerryRefs.ref(obj[name]);
- }, obj_val, prop_name_val);
-}
-
-jerry_value_t jerry_get_property_by_index(const jerry_value_t obj_val, uint32_t index) {
- if (!jerry_value_is_object(obj_val)) {
- return TYPE_ERROR;
- }
- return (jerry_value_t)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- return __jerryRefs.ref(obj[$1]);
- }, obj_val, index);
-}
-
-jerry_value_t jerry_set_property(const jerry_value_t obj_val,
- const jerry_value_t prop_name_val,
- const jerry_value_t value_to_set) {
- if (jerry_value_has_error_flag(value_to_set) ||
- !jerry_value_is_object(obj_val) ||
- !jerry_value_is_string(prop_name_val)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var name = __jerryRefs.get($1);
- var to_set = __jerryRefs.get($2);
- obj[name] = to_set;
- return __jerryRefs.ref(true);
- }, obj_val, prop_name_val, value_to_set);
-}
-
-jerry_value_t jerry_set_property_by_index(const jerry_value_t obj_val,
- uint32_t index,
- const jerry_value_t value_to_set) {
- if (jerry_value_has_error_flag(value_to_set) ||
- !jerry_value_is_object(obj_val)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- var obj = __jerryRefs.get($0);
- var to_set = __jerryRefs.get($2);
- obj[$1] = to_set;
- return __jerryRefs.ref(true);
- }, obj_val, index, value_to_set);
-}
-
-void jerry_init_property_descriptor_fields(jerry_property_descriptor_t *prop_desc_p) {
- *prop_desc_p = (jerry_property_descriptor_t) {
- .value = jerry_create_undefined(),
- .getter = jerry_create_undefined(),
- .setter = jerry_create_undefined(),
- };
-}
-
-jerry_value_t jerry_define_own_property(const jerry_value_t obj_val,
- const jerry_value_t prop_name_val,
- const jerry_property_descriptor_t *pdp) {
- if (!jerry_value_is_object(obj_val) && !jerry_value_is_string(obj_val)) {
- return TYPE_ERROR_ARG;
- }
- if ((pdp->is_writable_defined || pdp->is_value_defined)
- && (pdp->is_get_defined || pdp->is_set_defined)) {
- return TYPE_ERROR_ARG;
- }
- if (pdp->is_get_defined && !jerry_value_is_function(pdp->getter)) {
- return TYPE_ERROR_ARG;
- }
- if (pdp->is_set_defined && !jerry_value_is_function(pdp->setter)) {
- return TYPE_ERROR_ARG;
- }
-
- return (jerry_value_t)(EM_ASM_INT({
- var obj = __jerryRefs.get($12 /* obj_val */);
- var name = __jerryRefs.get($13 /* prop_name_val */);
- var desc = {};
- if ($0 /* is_value_defined */) {
- desc.value = __jerryRefs.get($9);
- }
- if ($1 /* is_get_defined */) {
- desc.get = __jerryRefs.get($10);
- }
- if ($2 /* is_set_defined */) {
- desc.set = __jerryRefs.get($11);
- }
- if ($3 /* is_writable_defined */) {
- desc.writable = Boolean($4 /* is_writable */);
- }
- if ($5 /* is_enumerable_defined */) {
- desc.enumerable = Boolean($6 /* is_enumerable */);
- }
- if ($7 /* is_configurable */) {
- desc.configurable = Boolean($8 /* is_configurable */);
- }
-
- Object.defineProperty(obj, name, desc);
- return __jerryRefs.ref(Boolean(true));
- }, pdp->is_value_defined, /* $0 */
- pdp->is_get_defined, /* $1 */
- pdp->is_set_defined, /* $2 */
- pdp->is_writable_defined, /* $3 */
- pdp->is_writable, /* $4 */
- pdp->is_enumerable_defined, /* $5 */
- pdp->is_enumerable, /* $6 */
- pdp->is_configurable_defined, /* $7 */
- pdp->is_configurable, /* $8 */
- pdp->value, /* $9 */
- pdp->getter, /* $10 */
- pdp->setter, /* $11 */
- obj_val, /* $12 */
- prop_name_val /* $13 */
- ));
-}
-
-jerry_value_t emscripten_call_jerry_function(jerry_external_handler_t func_obj_p,
- const jerry_value_t func_obj_val,
- const jerry_value_t this_val,
- const jerry_value_t args_p[],
- jerry_size_t args_count) {
- return (func_obj_p)(func_obj_val, this_val, args_p, args_count);
-}
-
-jerry_value_t jerry_call_function(const jerry_value_t func_obj_val,
- const jerry_value_t this_val,
- const jerry_value_t args_p[],
- jerry_size_t args_count) {
- if (!jerry_value_is_function(func_obj_val)) {
- return TYPE_ERROR_ARG;
- }
-
- return (jerry_value_t)EM_ASM_INT({
- var func_obj = __jerryRefs.get($0);
- var this_val = __jerryRefs.get($1);
- var args = [];
- for (var i = 0; i < $3; ++i) {
- args.push(__jerryRefs.get(getValue($2 + i*4, 'i32')));
- }
- try {
- var rv = func_obj.apply(this_val, args);
- } catch (e) {
- var error_ref = __jerryRefs.ref(e);
- __jerryRefs.setError(error_ref, true);
- return error_ref;
- }
- return __jerryRefs.ref(rv);
- }, func_obj_val, this_val, args_p, args_count);
-}
-
-jerry_value_t jerry_construct_object(const jerry_value_t func_obj_val,
- const jerry_value_t args_p[],
- jerry_size_t args_count) {
- if (!jerry_value_is_constructor(func_obj_val)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- var func_obj = __jerryRefs.get($0);
- var args = [];
- for (var i = 0; i < $2; ++i) {
- args.push(__jerryRefs.get(getValue($1 + i*4, 'i32')));
- }
- // Call the constructor with new object as `this`
- var bindArgs = [null].concat(args);
- var boundConstructor = func_obj.bind.apply(func_obj, bindArgs);
- var rv = new boundConstructor();
- return __jerryRefs.ref(rv);
- }, func_obj_val, args_p, args_count);
-}
-
-jerry_size_t jerry_string_to_char_buffer(const jerry_value_t value,
- jerry_char_t *buffer_p,
- jerry_size_t buffer_size) {
- return jerry_string_to_utf8_char_buffer(value, buffer_p, buffer_size);
-}
-
-jerry_size_t jerry_object_to_string_to_utf8_char_buffer(const jerry_value_t object,
- jerry_char_t *buffer_p,
- jerry_size_t buffer_size) {
- jerry_value_t str_ref = (jerry_value_t)EM_ASM_INT({
- var str = __jerryRefs.ref(String(__jerryRefs.get($0)));
- return str;
- }, object);
- jerry_size_t len = jerry_string_to_utf8_char_buffer(str_ref, buffer_p, buffer_size);
- jerry_release_value(str_ref);
-
- return len;
-}
-
-// FIXME: PBL-43551 Propery CESU-8 => UTF-8 conversion.
-jerry_size_t jerry_object_to_string_to_char_buffer(const jerry_value_t object,
- jerry_char_t *buffer_p,
- jerry_size_t buffer_size) {
- return jerry_object_to_string_to_utf8_char_buffer(object,
- buffer_p,
- buffer_size);
-}
-
-jerry_value_t jerry_get_object_keys(const jerry_value_t value) {
- if (!jerry_value_is_object(value)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(Object.keys(__jerryRefs.get($0)));
- }, value);
-}
-
-jerry_value_t jerry_get_prototype(const jerry_value_t value) {
- if (!jerry_value_is_object(value)) {
- return TYPE_ERROR_ARG;
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(__jerryRefs.get($0).prototype);
- }, value);
-}
-
-jerry_value_t jerry_set_prototype(const jerry_value_t obj_val, const jerry_value_t proto_obj_val) {
- return 0; // FIXME: Not sure what to do here
-}
-
-bool jerry_get_object_native_handle(const jerry_value_t obj_val, uintptr_t *out_handle_p) {
- return EM_ASM_INT({
- var ptr = __jerryRefs.getNativeHandle($0);
- if (ptr === undefined) {
- return false;
- }
- Module.setValue($1, ptr, '*');
- return true;
- }, obj_val, out_handle_p);
-}
-
-void jerry_set_object_native_handle(const jerry_value_t obj_val, uintptr_t handle_p,
- jerry_object_free_callback_t freecb_p) {
- EM_ASM_INT({
- __jerryRefs.setNativeHandle($0, $1, $2);
- }, obj_val, handle_p, freecb_p);
-}
-
-void emscripten_call_jerry_object_free_callback(jerry_object_free_callback_t freecb_p,
- uintptr_t handle_p) {
- if (freecb_p) {
- freecb_p(handle_p);
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Error flag manipulation functions
-////////////////////////////////////////////////////////////////////////////////
-//
-// The error flag is stored alongside the value in __jerryRefs.
-// This allows for us to keep a valid value, like jerryscript does, and be able
-// to add / remove a flag specifying whether there was an error or not.
-
-bool jerry_value_has_error_flag(const jerry_value_t value) {
- return (bool)(EM_ASM_INT({
- return __jerryRefs.getError($0);
- }, value));
-}
-
-void jerry_value_clear_error_flag(jerry_value_t *value_p) {
- EM_ASM_INT({
- return __jerryRefs.setError($0, false);
- }, *value_p);
-}
-
-void jerry_value_set_error_flag(jerry_value_t *value_p) {
- EM_ASM_INT({
- return __jerryRefs.setError($0, true);
- }, *value_p);
-}
-////////////////////////////////////////////////////////////////////////////////
-// Converters of `jerry_value_t`
-////////////////////////////////////////////////////////////////////////////////
-
-bool jerry_value_to_boolean(const jerry_value_t value) {
- if (jerry_value_has_error_flag(value)) {
- return false;
- }
- return (bool)EM_ASM_INT({
- return Boolean(__jerryRefs.get($0));
- }, value);
-}
-
-
-
-jerry_value_t jerry_value_to_number(const jerry_value_t value) {
- if (jerry_value_has_error_flag(value)) {
- return TYPE_ERROR_FLAG;
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(Number(__jerryRefs.get($0)));
- }, value);
-}
-
-jerry_value_t jerry_value_to_object(const jerry_value_t value) {
- if (jerry_value_has_error_flag(value)) {
- return TYPE_ERROR_FLAG;
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(new Object(__jerryRefs.get($0)));
- }, value);
-}
-
-jerry_value_t jerry_value_to_primitive(const jerry_value_t value) {
- if (jerry_value_has_error_flag(value)) {
- return TYPE_ERROR_FLAG;
- }
- return (jerry_value_t)EM_ASM_INT({
- var val = __jerryRefs.get($0);
- var rv;
- if ((typeof val === 'object' && val != null)
- || (typeof val === 'function')) {
- rv = val.valueOf(); // unbox
- } else {
- rv = val; // already a primitive
- }
- return __jerryRefs.ref(rv);
- }, value);
-}
-
-jerry_value_t jerry_value_to_string(const jerry_value_t value) {
- if (jerry_value_has_error_flag(value)) {
- return TYPE_ERROR_FLAG;
- }
- return (jerry_value_t)EM_ASM_INT({
- return __jerryRefs.ref(String(__jerryRefs.get($0)));
- }, value);
-}
-
-int jerry_obj_refcount(jerry_value_t o) {
- return EM_ASM_INT({
- try {
- return __jerryRefs.getRefCount($0);
- } catch (e) {
- return 0;
- }
- }, o);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-////////////////////////////////////////////////////////////////////////////////
-
-void jerry_init(jerry_init_flag_t flags) {
- EM_ASM(__jerryRefs.reset());
-}
-
-void jerry_cleanup(void) {
-}
diff --git a/applib-targets/emscripten/emscripten_jerry_port.c b/applib-targets/emscripten/emscripten_jerry_port.c
deleted file mode 100644
index 3564955d24..0000000000
--- a/applib-targets/emscripten/emscripten_jerry_port.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-void rocky_runtime_context_init(void) {
-}
-
-void rocky_runtime_context_deinit(void) {
-}
diff --git a/applib-targets/emscripten/emscripten_resources.c b/applib-targets/emscripten/emscripten_resources.c
deleted file mode 100644
index 8ab1bd44a0..0000000000
--- a/applib-targets/emscripten/emscripten_resources.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "emscripten_resources.h"
-
-#include "resource/resource_storage_impl.h"
-
-#include
-#include
-#include
-
-typedef struct {
- uint32_t offset;
- uint32_t length;
-} Resource;
-
-#define MANIFEST_SIZE (sizeof(ResourceManifest))
-#define TABLE_ENTRY_SIZE (sizeof(ResTableEntry))
-#define MAX_RESOURCES_FOR_SYSTEM_STORE 512
-#define SYSTEM_STORE_METADATA_BYTES \
- (MANIFEST_SIZE + MAX_RESOURCES_FOR_SYSTEM_STORE * TABLE_ENTRY_SIZE)
-
-////////////////////////////////////////////////
-// Custom Resources
-//
-// Custom resources in Rocky.js are implemented with a set of callbacks
-// on the javascript side which implement resource APIs
-//
-// We store those callbacks in an array and return a resource ID which
-// can then be used as if it was a valid resource
-//
-// Under the hood, we just lookup & call the initially provided callbacks
-
-typedef struct {
- uint32_t resource_id;
- ResourceReadCb read;
- ResourceGetSizeCb get_size;
-} EmxCustomResource;
-
-typedef struct {
- EmxCustomResource *custom_resources;
- uint32_t last_id;
- int array_size;
- int next_index;
-} CustomResList;
-
-static CustomResList s_custom_res_list = {0};
-
-static int prv_custom_resource_get_index(uint32_t resource_id) {
- int index;
- for (index = 0; index < s_custom_res_list.next_index; ++index) {
- if (s_custom_res_list.custom_resources[index].resource_id == resource_id) {
- return index;
- }
- }
-
- return -1;
-}
-
-static EmxCustomResource *prv_custom_resource_get(uint32_t resource_id) {
- int index = prv_custom_resource_get_index(resource_id);
- if (index < 0) {
- return NULL;
- } else {
- return &s_custom_res_list.custom_resources[index];
- }
-}
-
-
-static void prv_custom_resource_add(EmxCustomResource *res) {
- if (s_custom_res_list.array_size <= s_custom_res_list.next_index) {
- // grow the list
- int new_size = (s_custom_res_list.array_size + 1) * 2;
- s_custom_res_list.custom_resources = realloc(s_custom_res_list.custom_resources, new_size);
- s_custom_res_list.array_size = new_size;
- }
-
- s_custom_res_list.custom_resources[s_custom_res_list.next_index] = *res;
- ++s_custom_res_list.next_index;
-}
-
-static void prv_custom_resource_remove(uint32_t resource_id) {
- int index = prv_custom_resource_get_index(resource_id);
- if (index < 0) {
- return;
- }
-
- --s_custom_res_list.next_index;
- if (s_custom_res_list.next_index == index) {
- // we had the last resource, we're done
- return;
- }
-
- memmove(&s_custom_res_list.custom_resources[index],
- &s_custom_res_list.custom_resources[index + 1],
- (s_custom_res_list.next_index - index) * sizeof(EmxCustomResource));
-}
-
-//////////////////////////////////////
-// System Resources
-//
-// In this case, we shove the pbpack in an emscripten "file" (baked into the resulting JS
-// and reimplement system resource APIs using standard C file I/O
-
-static FILE *s_resource_file = NULL;
-
-static uint32_t prv_read(uint32_t offset, void *data, size_t num_bytes) {
- if (!s_resource_file || fseek(s_resource_file, offset, SEEK_SET)) {
- printf("%s: Couldn't seek to %d\n", __FILE__, offset);
- return 0;
- }
- return fread(data, 1, num_bytes, s_resource_file);
-}
-
-static ResourceManifest prv_get_manifest(void) {
- ResourceManifest manifest = {};
- prv_read(0, &manifest, sizeof(ResourceManifest));
- return manifest;
-}
-
-static bool prv_get_table_entry(ResTableEntry *entry, uint32_t index) {
- uint32_t addr = sizeof(ResourceManifest) + index * sizeof(ResTableEntry);
- return prv_read(addr, entry, sizeof(ResTableEntry));
-}
-
-static bool prv_get_resource(uint32_t resource_id, Resource *res) {
- *res = (Resource){
- .length = 0,
- .offset = 0,
- };
-
- ResourceManifest manifest = prv_get_manifest();
-
- if (resource_id > manifest.num_resources) {
- printf("%s: resource id %d > %d is out of range\n", __FILE__,
- resource_id,
- manifest.num_resources);
- return false;
- }
-
- ResTableEntry entry;
- if (!prv_get_table_entry(&entry, resource_id - 1)) {
- printf("%s: Failed to read table entry for %d\n", __FILE__, resource_id);
- return false;
- }
-
- if ((entry.resource_id != resource_id) ||
- (entry.length == 0)) {
- // empty resource
- printf("%s: Invalid resourcel for %d\n", __FILE__, resource_id);
- return false;
- }
-
- res->offset = SYSTEM_STORE_METADATA_BYTES + entry.offset;
- res->length = entry.length;
-
- return true;
-}
-
-///////////////////////////////
-// API
-
-size_t emx_resources_read(ResAppNum app_num,
- uint32_t resource_id,
- uint32_t offset,
- uint8_t *buf,
- size_t num_bytes) {
- if (offset > INT_MAX || num_bytes > INT_MAX) {
- return 0;
- }
-
- EmxCustomResource *custom_res = NULL;
- if (app_num != SYSTEM_APP && (custom_res = prv_custom_resource_get(resource_id))) {
- return custom_res->read(offset, buf, num_bytes);
- }
-
- Resource resource = {};
- if (!prv_get_resource(resource_id, &resource)) {
- return 0;
- }
-
- if (offset + num_bytes > resource.length) {
- if (offset >= resource.length) {
- // Can't recover from trying to read from beyond the resource. Read nothing.
- printf("%s: Reading past the end of the resource!\n", __FILE__);
- return 0;
- }
- num_bytes = resource.length - offset;
- }
-
- return prv_read(offset + resource.offset, buf, num_bytes);
-}
-
-size_t emx_resources_get_size(ResAppNum app_num, uint32_t resource_id) {
- EmxCustomResource *custom_res = NULL;
- if (app_num != SYSTEM_APP && (custom_res = prv_custom_resource_get(resource_id))) {
- return custom_res->get_size();
- }
-
- Resource resource = {};
- if (!prv_get_resource(resource_id, &resource)) {
- return 0;
- }
-
- return resource.length;
-}
-
-bool emx_resources_init(void) {
- s_resource_file = fopen("system_resources.pbpack", "r");
-
- if (!s_resource_file) {
- printf("Error: Failed to open resources file\n");
- return false;
- }
-
- return true;
-}
-
-void emx_resources_deinit(void) {
- fclose(s_resource_file);
-}
-
-uint32_t emx_resources_register_custom(ResourceReadCb read_cb, ResourceGetSizeCb get_size_cb) {
- EmxCustomResource custom_res = {
- .resource_id = ++s_custom_res_list.last_id,
- .read = read_cb,
- .get_size = get_size_cb,
- };
- prv_custom_resource_add(&custom_res);
-
- return custom_res.resource_id;
-}
-
-void emx_resources_remove_custom(uint32_t resource_id) {
- prv_custom_resource_remove(resource_id);
-}
diff --git a/applib-targets/emscripten/emscripten_resources.h b/applib-targets/emscripten/emscripten_resources.h
deleted file mode 100644
index 40239ccbc1..0000000000
--- a/applib-targets/emscripten/emscripten_resources.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include
-#include
-#include
-
-#include "resource/resource.h"
-
-// transformed to int to avoid surpises between C->JS
-typedef int (*ResourceReadCb)(int offset, uint8_t *buf, int num_bytes);
-typedef int (*ResourceGetSizeCb)(void);
-
-bool emx_resources_init(void);
-void emx_resources_deinit(void);
-size_t emx_resources_get_size(ResAppNum app_num, uint32_t resource_id);
-size_t emx_resources_read(ResAppNum app_num,
- uint32_t resource_id,
- uint32_t offset,
- uint8_t *buf,
- size_t num_bytes);
-uint32_t emx_resources_register_custom(ResourceReadCb read_cb, ResourceGetSizeCb get_size_cb);
-void emx_resources_remove_custom(uint32_t resource_id);
diff --git a/applib-targets/emscripten/emscripten_tick_timer_service.c b/applib-targets/emscripten/emscripten_tick_timer_service.c
deleted file mode 100644
index 88cf9c975b..0000000000
--- a/applib-targets/emscripten/emscripten_tick_timer_service.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "applib/app_logging.h"
-#include "applib/tick_timer_service_private.h"
-
-#include
-#include
-#include
-
-time_t time(time_t *time);
-
-static TickTimerServiceState s_state;
-
-static void prv_schedule_next_update(void);
-
-static void prv_do_update(void *data) {
- if (!s_state.handler) {
- return;
- }
-
- // The data pointer value is used to pass a boolean value directly:
- const bool is_update_due_to_time_change = (uintptr_t)data;
-
- struct tm currtime;
- time_t t = time(NULL);
- localtime_r(&t, &currtime);
-
- TimeUnits units_changed;
- if (is_update_due_to_time_change) {
- units_changed = (SECOND_UNIT | MINUTE_UNIT | HOUR_UNIT | DAY_UNIT | YEAR_UNIT);
- } else {
- prv_schedule_next_update();
- units_changed = 0;
- if (!s_state.first_tick) {
- if (s_state.last_time.tm_sec != currtime.tm_sec) {
- units_changed |= SECOND_UNIT;
- }
- if (s_state.last_time.tm_min != currtime.tm_min) {
- units_changed |= MINUTE_UNIT;
- }
- if (s_state.last_time.tm_hour != currtime.tm_hour) {
- units_changed |= HOUR_UNIT;
- }
- if (s_state.last_time.tm_mday != currtime.tm_mday) {
- units_changed |= DAY_UNIT;
- }
- if (s_state.last_time.tm_mon != currtime.tm_mon) {
- units_changed |= MONTH_UNIT;
- }
- if (s_state.last_time.tm_year != currtime.tm_year) {
- units_changed |= YEAR_UNIT;
- }
- }
- }
-
- s_state.last_time = currtime;
- s_state.first_tick = false;
-
- if ((s_state.tick_units & units_changed) || (units_changed == 0)) {
- s_state.handler(&currtime, units_changed);
- }
-}
-
-static void prv_schedule_next_update(void) {
- // Schedule this to fire again at the top of the next second
- const int ms_into_s = EM_ASM_INT_V({
- return Date.now().getMilliseconds;
- });
- const double wait_ms = 1000 - ms_into_s;
- const bool is_update_due_to_time_change = false;
- emscripten_async_call(prv_do_update, (void *)(uintptr_t)is_update_due_to_time_change, wait_ms);
-}
-
-void tick_timer_service_handle_time_change(void) {
- const bool is_update_due_to_time_change = true;
- prv_do_update((void *)(uintptr_t)is_update_due_to_time_change);
-}
-
-void tick_timer_service_subscribe(TimeUnits tick_units, TickHandler handler) {
- const bool first = (s_state.handler == NULL);
- s_state = (TickTimerServiceState) {
- .handler = handler,
- .tick_units = tick_units,
- .first_tick = true,
- };
-
- if (first && handler != NULL) {
- prv_schedule_next_update();
- }
-}
-
-void emx_tick_timer_service_init(void) {
- s_state = (TickTimerServiceState){};
-}
diff --git a/applib-targets/emscripten/emscripten_tick_timer_service.h b/applib-targets/emscripten/emscripten_tick_timer_service.h
deleted file mode 100644
index 87f5f5129b..0000000000
--- a/applib-targets/emscripten/emscripten_tick_timer_service.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-void emx_tick_timer_service_init(void);
diff --git a/applib-targets/emscripten/exported_functions.json b/applib-targets/emscripten/exported_functions.json
deleted file mode 100644
index 3e3c3b7d01..0000000000
--- a/applib-targets/emscripten/exported_functions.json
+++ /dev/null
@@ -1,62 +0,0 @@
-["_main",
- "_emx_graphics_get_pixels",
- "_graphics_context_set_stroke_width",
- "_graphics_context_set_antialiased",
- "_emx_resources_read",
- "_emx_resources_get_size",
- "_app_state_get_graphics_context",
- "_gdraw_command_image_create_with_resource",
- "_gdraw_command_image_get_command_list",
- "_gdraw_command_list_get_command",
- "_gdraw_command_list_get_num_commands",
- "_gdraw_command_sequence_create_with_resource",
- "_gdraw_command_sequence_get_frame_by_elapsed",
- "_gdraw_command_sequence_get_total_duration",
- "_gdraw_command_get_type",
- "_gdraw_command_get_stroke_width",
- "_gdraw_command_set_stroke_width",
- "_gdraw_command_set_path_open",
- "_gdraw_command_get_path_open",
- "_gdraw_command_set_hidden",
- "_gdraw_command_get_hidden",
- "_gdraw_command_get_num_points",
- "_gdraw_command_set_radius",
- "_gdraw_command_get_radius",
- "_gdraw_command_sequence_get_play_count",
- "_gdraw_command_sequence_set_play_count",
- "_gdraw_command_sequence_get_total_duration",
- "_gdraw_command_sequence_get_num_frames",
- "_gdraw_command_sequence_get_frame_by_elapsed",
- "_gdraw_command_sequence_get_frame_by_index",
- "_gdraw_command_frame_set_duration",
- "_gdraw_command_frame_get_duration",
- "_gdraw_command_frame_get_command_list",
- "_fonts_get_system_font",
- "_fonts_load_custom_font",
- "_fonts_unload_custom_font",
- "_gbitmap_create_with_data",
- "_gbitmap_create_from_png_data",
- "_gbitmap_destroy",
- "_gbitmap_get_format",
- "_graphics_context_set_compositing_mode",
- "_emx_resources_register_custom",
- "_emx_resources_remove_custom",
- "_gpath_draw_filled",
- "_gpath_draw_outline",
- "_gpath_draw_outline_open",
- "_graphics_draw_text",
- "_gbitmap_sequence_create_with_resource",
- "_gbitmap_sequence_destroy",
- "_gbitmap_sequence_get_current_frame_delay_ms",
- "_gbitmap_sequence_get_total_num_frames",
- "_gbitmap_sequence_get_current_frame_idx",
- "_gbitmap_sequence_get_play_count",
- "_gbitmap_sequence_set_play_count",
-
- "_rocky_api_watchface_init",
- "_jerry_call_function",
- "_emscripten_call_jerry_function",
- "_emscripten_call_jerry_object_free_callback",
- "_tick_timer_service_handle_time_change",
- "_clock_set_24h_style"
-]
diff --git a/applib-targets/emscripten/html-binding.js b/applib-targets/emscripten/html-binding.js
deleted file mode 100644
index 272e98f58b..0000000000
--- a/applib-targets/emscripten/html-binding.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
- Copyright © 2015-2016 Pebble Technology Corp.,
- All Rights Reserved. http://pebble.github.io/rockyjs/LICENSE
-
- This describes functionality to bind the Rocky Simulator to an HTML canvas
- element. This file is included into the Emscripten output using --post-js,
- as such it will end up in body of the RockySimulator(options) constructor.
-
- */
-
-if (typeof(Module) === 'undefined') {
- var Module = {};
-}
-
-Module.bindCanvas = function(canvas) {
- // in a future version, these values should adapt automatically
- // also, we want the ability to create framebuffers of larger sizes
- var canvasW = canvas.width;
- var canvasH = canvas.height;
- var framebufferW = 144;
- var framebufferH = 168;
-
- // scale gives us the ability to do a nearest-neighbor scaling
- var scale = options.scale ||
- Math.min(canvasW / framebufferW, canvasH / framebufferH);
-
- // pixel access to read (framebuffer) and write to (canvas)
- var canvasCtx = canvas.getContext('2d');
- var canvasPixelData = canvasCtx.createImageData(canvasW, canvasH);
- var canvasPixels = canvasPixelData.data;
- var framebufferPixelPTR = Module.ccall(
- 'emx_graphics_get_pixels', 'number', []
- );
-
- var isRenderRequested = false;
- var copyFrameBufferToCanvas = function(timestamp) {
- console.log('copying pixels...');
- isRenderRequested = false;
- var framebufferPixels = new Uint8Array(Module.HEAPU8.buffer,
- framebufferPixelPTR,
- framebufferW * framebufferH);
- // renders current state of the framebuffer to the bound canvas
- // respecting the passed scale
- for (var y = 0; y < canvasH; y++) {
- var pebbleY = (y / scale) >> 0;
- if (pebbleY >= framebufferH) {
- break;
- }
- for (var x = 0; x < canvasW; x++) {
- var pebbleX = (x / scale) >> 0;
- if (pebbleX >= framebufferW) {
- break;
- }
- var pebbleOffset = pebbleY * framebufferW + pebbleX;
- var in_values = framebufferPixels[pebbleOffset];
- var r = ((in_values >> 4) & 0x3) * 85;
- var g = ((in_values >> 2) & 0x3) * 85;
- var b = ((in_values >> 0) & 0x3) * 85;
- var canvasOffset = (y * canvasW + x) * 4;
- canvasPixels[canvasOffset + 0] = r;
- canvasPixels[canvasOffset + 1] = g;
- canvasPixels[canvasOffset + 2] = b;
- canvasPixels[canvasOffset + 3] = 255;
- }
- }
- canvasCtx.putImageData(canvasPixelData, 0, 0);
- };
-
- Module.frameBufferMarkDirty = function() {
- if (isRenderRequested) {
- return;
- }
- console.log('request render');
- isRenderRequested = true;
- window.requestAnimationFrame(copyFrameBufferToCanvas);
- }
-};
-
-// Apply `options` from the RockySimulator(options) constructor:
-if (typeof(options) !== 'undefined' && options.canvas) {
- Module.bindCanvas(options.canvas);
-}
diff --git a/applib-targets/emscripten/html/css/LICENSE b/applib-targets/emscripten/html/css/LICENSE
deleted file mode 100644
index c8cdb14cf3..0000000000
--- a/applib-targets/emscripten/html/css/LICENSE
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright (c) 2011-2016 Twitter, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/applib-targets/emscripten/html/css/bootstrap.css b/applib-targets/emscripten/html/css/bootstrap.css
deleted file mode 100644
index 8a4be566a7..0000000000
--- a/applib-targets/emscripten/html/css/bootstrap.css
+++ /dev/null
@@ -1,6756 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html {
- font-family: sans-serif;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
-}
-body {
- margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
- display: block;
-}
-audio,
-canvas,
-progress,
-video {
- display: inline-block;
- vertical-align: baseline;
-}
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-[hidden],
-template {
- display: none;
-}
-a {
- background-color: transparent;
-}
-a:active,
-a:hover {
- outline: 0;
-}
-abbr[title] {
- border-bottom: 1px dotted;
-}
-b,
-strong {
- font-weight: bold;
-}
-dfn {
- font-style: italic;
-}
-h1 {
- margin: .67em 0;
- font-size: 2em;
-}
-mark {
- color: #000;
- background: #ff0;
-}
-small {
- font-size: 80%;
-}
-sub,
-sup {
- position: relative;
- font-size: 75%;
- line-height: 0;
- vertical-align: baseline;
-}
-sup {
- top: -.5em;
-}
-sub {
- bottom: -.25em;
-}
-img {
- border: 0;
-}
-svg:not(:root) {
- overflow: hidden;
-}
-figure {
- margin: 1em 40px;
-}
-hr {
- height: 0;
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
-}
-pre {
- overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, monospace;
- font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
- margin: 0;
- font: inherit;
- color: inherit;
-}
-button {
- overflow: visible;
-}
-button,
-select {
- text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button;
- cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
- cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- padding: 0;
- border: 0;
-}
-input {
- line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
- height: auto;
-}
-input[type="search"] {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-fieldset {
- padding: .35em .625em .75em;
- margin: 0 2px;
- border: 1px solid #c0c0c0;
-}
-legend {
- padding: 0;
- border: 0;
-}
-textarea {
- overflow: auto;
-}
-optgroup {
- font-weight: bold;
-}
-table {
- border-spacing: 0;
- border-collapse: collapse;
-}
-td,
-th {
- padding: 0;
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print {
- *,
- *:before,
- *:after {
- color: #000 !important;
- text-shadow: none !important;
- background: transparent !important;
- -webkit-box-shadow: none !important;
- box-shadow: none !important;
- }
- a,
- a:visited {
- text-decoration: underline;
- }
- a[href]:after {
- content: " (" attr(href) ")";
- }
- abbr[title]:after {
- content: " (" attr(title) ")";
- }
- a[href^="#"]:after,
- a[href^="javascript:"]:after {
- content: "";
- }
- pre,
- blockquote {
- border: 1px solid #999;
-
- page-break-inside: avoid;
- }
- thead {
- display: table-header-group;
- }
- tr,
- img {
- page-break-inside: avoid;
- }
- img {
- max-width: 100% !important;
- }
- p,
- h2,
- h3 {
- orphans: 3;
- widows: 3;
- }
- h2,
- h3 {
- page-break-after: avoid;
- }
- .navbar {
- display: none;
- }
- .btn > .caret,
- .dropup > .btn > .caret {
- border-top-color: #000 !important;
- }
- .label {
- border: 1px solid #000;
- }
- .table {
- border-collapse: collapse !important;
- }
- .table td,
- .table th {
- background-color: #fff !important;
- }
- .table-bordered th,
- .table-bordered td {
- border: 1px solid #ddd !important;
- }
-}
-@font-face {
- font-family: 'Glyphicons Halflings';
-
- src: url('../fonts/glyphicons-halflings-regular.eot');
- src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
- position: relative;
- top: 1px;
- display: inline-block;
- font-family: 'Glyphicons Halflings';
- font-style: normal;
- font-weight: normal;
- line-height: 1;
-
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
- content: "\002a";
-}
-.glyphicon-plus:before {
- content: "\002b";
-}
-.glyphicon-euro:before,
-.glyphicon-eur:before {
- content: "\20ac";
-}
-.glyphicon-minus:before {
- content: "\2212";
-}
-.glyphicon-cloud:before {
- content: "\2601";
-}
-.glyphicon-envelope:before {
- content: "\2709";
-}
-.glyphicon-pencil:before {
- content: "\270f";
-}
-.glyphicon-glass:before {
- content: "\e001";
-}
-.glyphicon-music:before {
- content: "\e002";
-}
-.glyphicon-search:before {
- content: "\e003";
-}
-.glyphicon-heart:before {
- content: "\e005";
-}
-.glyphicon-star:before {
- content: "\e006";
-}
-.glyphicon-star-empty:before {
- content: "\e007";
-}
-.glyphicon-user:before {
- content: "\e008";
-}
-.glyphicon-film:before {
- content: "\e009";
-}
-.glyphicon-th-large:before {
- content: "\e010";
-}
-.glyphicon-th:before {
- content: "\e011";
-}
-.glyphicon-th-list:before {
- content: "\e012";
-}
-.glyphicon-ok:before {
- content: "\e013";
-}
-.glyphicon-remove:before {
- content: "\e014";
-}
-.glyphicon-zoom-in:before {
- content: "\e015";
-}
-.glyphicon-zoom-out:before {
- content: "\e016";
-}
-.glyphicon-off:before {
- content: "\e017";
-}
-.glyphicon-signal:before {
- content: "\e018";
-}
-.glyphicon-cog:before {
- content: "\e019";
-}
-.glyphicon-trash:before {
- content: "\e020";
-}
-.glyphicon-home:before {
- content: "\e021";
-}
-.glyphicon-file:before {
- content: "\e022";
-}
-.glyphicon-time:before {
- content: "\e023";
-}
-.glyphicon-road:before {
- content: "\e024";
-}
-.glyphicon-download-alt:before {
- content: "\e025";
-}
-.glyphicon-download:before {
- content: "\e026";
-}
-.glyphicon-upload:before {
- content: "\e027";
-}
-.glyphicon-inbox:before {
- content: "\e028";
-}
-.glyphicon-play-circle:before {
- content: "\e029";
-}
-.glyphicon-repeat:before {
- content: "\e030";
-}
-.glyphicon-refresh:before {
- content: "\e031";
-}
-.glyphicon-list-alt:before {
- content: "\e032";
-}
-.glyphicon-lock:before {
- content: "\e033";
-}
-.glyphicon-flag:before {
- content: "\e034";
-}
-.glyphicon-headphones:before {
- content: "\e035";
-}
-.glyphicon-volume-off:before {
- content: "\e036";
-}
-.glyphicon-volume-down:before {
- content: "\e037";
-}
-.glyphicon-volume-up:before {
- content: "\e038";
-}
-.glyphicon-qrcode:before {
- content: "\e039";
-}
-.glyphicon-barcode:before {
- content: "\e040";
-}
-.glyphicon-tag:before {
- content: "\e041";
-}
-.glyphicon-tags:before {
- content: "\e042";
-}
-.glyphicon-book:before {
- content: "\e043";
-}
-.glyphicon-bookmark:before {
- content: "\e044";
-}
-.glyphicon-print:before {
- content: "\e045";
-}
-.glyphicon-camera:before {
- content: "\e046";
-}
-.glyphicon-font:before {
- content: "\e047";
-}
-.glyphicon-bold:before {
- content: "\e048";
-}
-.glyphicon-italic:before {
- content: "\e049";
-}
-.glyphicon-text-height:before {
- content: "\e050";
-}
-.glyphicon-text-width:before {
- content: "\e051";
-}
-.glyphicon-align-left:before {
- content: "\e052";
-}
-.glyphicon-align-center:before {
- content: "\e053";
-}
-.glyphicon-align-right:before {
- content: "\e054";
-}
-.glyphicon-align-justify:before {
- content: "\e055";
-}
-.glyphicon-list:before {
- content: "\e056";
-}
-.glyphicon-indent-left:before {
- content: "\e057";
-}
-.glyphicon-indent-right:before {
- content: "\e058";
-}
-.glyphicon-facetime-video:before {
- content: "\e059";
-}
-.glyphicon-picture:before {
- content: "\e060";
-}
-.glyphicon-map-marker:before {
- content: "\e062";
-}
-.glyphicon-adjust:before {
- content: "\e063";
-}
-.glyphicon-tint:before {
- content: "\e064";
-}
-.glyphicon-edit:before {
- content: "\e065";
-}
-.glyphicon-share:before {
- content: "\e066";
-}
-.glyphicon-check:before {
- content: "\e067";
-}
-.glyphicon-move:before {
- content: "\e068";
-}
-.glyphicon-step-backward:before {
- content: "\e069";
-}
-.glyphicon-fast-backward:before {
- content: "\e070";
-}
-.glyphicon-backward:before {
- content: "\e071";
-}
-.glyphicon-play:before {
- content: "\e072";
-}
-.glyphicon-pause:before {
- content: "\e073";
-}
-.glyphicon-stop:before {
- content: "\e074";
-}
-.glyphicon-forward:before {
- content: "\e075";
-}
-.glyphicon-fast-forward:before {
- content: "\e076";
-}
-.glyphicon-step-forward:before {
- content: "\e077";
-}
-.glyphicon-eject:before {
- content: "\e078";
-}
-.glyphicon-chevron-left:before {
- content: "\e079";
-}
-.glyphicon-chevron-right:before {
- content: "\e080";
-}
-.glyphicon-plus-sign:before {
- content: "\e081";
-}
-.glyphicon-minus-sign:before {
- content: "\e082";
-}
-.glyphicon-remove-sign:before {
- content: "\e083";
-}
-.glyphicon-ok-sign:before {
- content: "\e084";
-}
-.glyphicon-question-sign:before {
- content: "\e085";
-}
-.glyphicon-info-sign:before {
- content: "\e086";
-}
-.glyphicon-screenshot:before {
- content: "\e087";
-}
-.glyphicon-remove-circle:before {
- content: "\e088";
-}
-.glyphicon-ok-circle:before {
- content: "\e089";
-}
-.glyphicon-ban-circle:before {
- content: "\e090";
-}
-.glyphicon-arrow-left:before {
- content: "\e091";
-}
-.glyphicon-arrow-right:before {
- content: "\e092";
-}
-.glyphicon-arrow-up:before {
- content: "\e093";
-}
-.glyphicon-arrow-down:before {
- content: "\e094";
-}
-.glyphicon-share-alt:before {
- content: "\e095";
-}
-.glyphicon-resize-full:before {
- content: "\e096";
-}
-.glyphicon-resize-small:before {
- content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
- content: "\e101";
-}
-.glyphicon-gift:before {
- content: "\e102";
-}
-.glyphicon-leaf:before {
- content: "\e103";
-}
-.glyphicon-fire:before {
- content: "\e104";
-}
-.glyphicon-eye-open:before {
- content: "\e105";
-}
-.glyphicon-eye-close:before {
- content: "\e106";
-}
-.glyphicon-warning-sign:before {
- content: "\e107";
-}
-.glyphicon-plane:before {
- content: "\e108";
-}
-.glyphicon-calendar:before {
- content: "\e109";
-}
-.glyphicon-random:before {
- content: "\e110";
-}
-.glyphicon-comment:before {
- content: "\e111";
-}
-.glyphicon-magnet:before {
- content: "\e112";
-}
-.glyphicon-chevron-up:before {
- content: "\e113";
-}
-.glyphicon-chevron-down:before {
- content: "\e114";
-}
-.glyphicon-retweet:before {
- content: "\e115";
-}
-.glyphicon-shopping-cart:before {
- content: "\e116";
-}
-.glyphicon-folder-close:before {
- content: "\e117";
-}
-.glyphicon-folder-open:before {
- content: "\e118";
-}
-.glyphicon-resize-vertical:before {
- content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
- content: "\e120";
-}
-.glyphicon-hdd:before {
- content: "\e121";
-}
-.glyphicon-bullhorn:before {
- content: "\e122";
-}
-.glyphicon-bell:before {
- content: "\e123";
-}
-.glyphicon-certificate:before {
- content: "\e124";
-}
-.glyphicon-thumbs-up:before {
- content: "\e125";
-}
-.glyphicon-thumbs-down:before {
- content: "\e126";
-}
-.glyphicon-hand-right:before {
- content: "\e127";
-}
-.glyphicon-hand-left:before {
- content: "\e128";
-}
-.glyphicon-hand-up:before {
- content: "\e129";
-}
-.glyphicon-hand-down:before {
- content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
- content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
- content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
- content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
- content: "\e134";
-}
-.glyphicon-globe:before {
- content: "\e135";
-}
-.glyphicon-wrench:before {
- content: "\e136";
-}
-.glyphicon-tasks:before {
- content: "\e137";
-}
-.glyphicon-filter:before {
- content: "\e138";
-}
-.glyphicon-briefcase:before {
- content: "\e139";
-}
-.glyphicon-fullscreen:before {
- content: "\e140";
-}
-.glyphicon-dashboard:before {
- content: "\e141";
-}
-.glyphicon-paperclip:before {
- content: "\e142";
-}
-.glyphicon-heart-empty:before {
- content: "\e143";
-}
-.glyphicon-link:before {
- content: "\e144";
-}
-.glyphicon-phone:before {
- content: "\e145";
-}
-.glyphicon-pushpin:before {
- content: "\e146";
-}
-.glyphicon-usd:before {
- content: "\e148";
-}
-.glyphicon-gbp:before {
- content: "\e149";
-}
-.glyphicon-sort:before {
- content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
- content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
- content: "\e152";
-}
-.glyphicon-sort-by-order:before {
- content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
- content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
- content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
- content: "\e156";
-}
-.glyphicon-unchecked:before {
- content: "\e157";
-}
-.glyphicon-expand:before {
- content: "\e158";
-}
-.glyphicon-collapse-down:before {
- content: "\e159";
-}
-.glyphicon-collapse-up:before {
- content: "\e160";
-}
-.glyphicon-log-in:before {
- content: "\e161";
-}
-.glyphicon-flash:before {
- content: "\e162";
-}
-.glyphicon-log-out:before {
- content: "\e163";
-}
-.glyphicon-new-window:before {
- content: "\e164";
-}
-.glyphicon-record:before {
- content: "\e165";
-}
-.glyphicon-save:before {
- content: "\e166";
-}
-.glyphicon-open:before {
- content: "\e167";
-}
-.glyphicon-saved:before {
- content: "\e168";
-}
-.glyphicon-import:before {
- content: "\e169";
-}
-.glyphicon-export:before {
- content: "\e170";
-}
-.glyphicon-send:before {
- content: "\e171";
-}
-.glyphicon-floppy-disk:before {
- content: "\e172";
-}
-.glyphicon-floppy-saved:before {
- content: "\e173";
-}
-.glyphicon-floppy-remove:before {
- content: "\e174";
-}
-.glyphicon-floppy-save:before {
- content: "\e175";
-}
-.glyphicon-floppy-open:before {
- content: "\e176";
-}
-.glyphicon-credit-card:before {
- content: "\e177";
-}
-.glyphicon-transfer:before {
- content: "\e178";
-}
-.glyphicon-cutlery:before {
- content: "\e179";
-}
-.glyphicon-header:before {
- content: "\e180";
-}
-.glyphicon-compressed:before {
- content: "\e181";
-}
-.glyphicon-earphone:before {
- content: "\e182";
-}
-.glyphicon-phone-alt:before {
- content: "\e183";
-}
-.glyphicon-tower:before {
- content: "\e184";
-}
-.glyphicon-stats:before {
- content: "\e185";
-}
-.glyphicon-sd-video:before {
- content: "\e186";
-}
-.glyphicon-hd-video:before {
- content: "\e187";
-}
-.glyphicon-subtitles:before {
- content: "\e188";
-}
-.glyphicon-sound-stereo:before {
- content: "\e189";
-}
-.glyphicon-sound-dolby:before {
- content: "\e190";
-}
-.glyphicon-sound-5-1:before {
- content: "\e191";
-}
-.glyphicon-sound-6-1:before {
- content: "\e192";
-}
-.glyphicon-sound-7-1:before {
- content: "\e193";
-}
-.glyphicon-copyright-mark:before {
- content: "\e194";
-}
-.glyphicon-registration-mark:before {
- content: "\e195";
-}
-.glyphicon-cloud-download:before {
- content: "\e197";
-}
-.glyphicon-cloud-upload:before {
- content: "\e198";
-}
-.glyphicon-tree-conifer:before {
- content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
- content: "\e200";
-}
-.glyphicon-cd:before {
- content: "\e201";
-}
-.glyphicon-save-file:before {
- content: "\e202";
-}
-.glyphicon-open-file:before {
- content: "\e203";
-}
-.glyphicon-level-up:before {
- content: "\e204";
-}
-.glyphicon-copy:before {
- content: "\e205";
-}
-.glyphicon-paste:before {
- content: "\e206";
-}
-.glyphicon-alert:before {
- content: "\e209";
-}
-.glyphicon-equalizer:before {
- content: "\e210";
-}
-.glyphicon-king:before {
- content: "\e211";
-}
-.glyphicon-queen:before {
- content: "\e212";
-}
-.glyphicon-pawn:before {
- content: "\e213";
-}
-.glyphicon-bishop:before {
- content: "\e214";
-}
-.glyphicon-knight:before {
- content: "\e215";
-}
-.glyphicon-baby-formula:before {
- content: "\e216";
-}
-.glyphicon-tent:before {
- content: "\26fa";
-}
-.glyphicon-blackboard:before {
- content: "\e218";
-}
-.glyphicon-bed:before {
- content: "\e219";
-}
-.glyphicon-apple:before {
- content: "\f8ff";
-}
-.glyphicon-erase:before {
- content: "\e221";
-}
-.glyphicon-hourglass:before {
- content: "\231b";
-}
-.glyphicon-lamp:before {
- content: "\e223";
-}
-.glyphicon-duplicate:before {
- content: "\e224";
-}
-.glyphicon-piggy-bank:before {
- content: "\e225";
-}
-.glyphicon-scissors:before {
- content: "\e226";
-}
-.glyphicon-bitcoin:before {
- content: "\e227";
-}
-.glyphicon-btc:before {
- content: "\e227";
-}
-.glyphicon-xbt:before {
- content: "\e227";
-}
-.glyphicon-yen:before {
- content: "\00a5";
-}
-.glyphicon-jpy:before {
- content: "\00a5";
-}
-.glyphicon-ruble:before {
- content: "\20bd";
-}
-.glyphicon-rub:before {
- content: "\20bd";
-}
-.glyphicon-scale:before {
- content: "\e230";
-}
-.glyphicon-ice-lolly:before {
- content: "\e231";
-}
-.glyphicon-ice-lolly-tasted:before {
- content: "\e232";
-}
-.glyphicon-education:before {
- content: "\e233";
-}
-.glyphicon-option-horizontal:before {
- content: "\e234";
-}
-.glyphicon-option-vertical:before {
- content: "\e235";
-}
-.glyphicon-menu-hamburger:before {
- content: "\e236";
-}
-.glyphicon-modal-window:before {
- content: "\e237";
-}
-.glyphicon-oil:before {
- content: "\e238";
-}
-.glyphicon-grain:before {
- content: "\e239";
-}
-.glyphicon-sunglasses:before {
- content: "\e240";
-}
-.glyphicon-text-size:before {
- content: "\e241";
-}
-.glyphicon-text-color:before {
- content: "\e242";
-}
-.glyphicon-text-background:before {
- content: "\e243";
-}
-.glyphicon-object-align-top:before {
- content: "\e244";
-}
-.glyphicon-object-align-bottom:before {
- content: "\e245";
-}
-.glyphicon-object-align-horizontal:before {
- content: "\e246";
-}
-.glyphicon-object-align-left:before {
- content: "\e247";
-}
-.glyphicon-object-align-vertical:before {
- content: "\e248";
-}
-.glyphicon-object-align-right:before {
- content: "\e249";
-}
-.glyphicon-triangle-right:before {
- content: "\e250";
-}
-.glyphicon-triangle-left:before {
- content: "\e251";
-}
-.glyphicon-triangle-bottom:before {
- content: "\e252";
-}
-.glyphicon-triangle-top:before {
- content: "\e253";
-}
-.glyphicon-console:before {
- content: "\e254";
-}
-.glyphicon-superscript:before {
- content: "\e255";
-}
-.glyphicon-subscript:before {
- content: "\e256";
-}
-.glyphicon-menu-left:before {
- content: "\e257";
-}
-.glyphicon-menu-right:before {
- content: "\e258";
-}
-.glyphicon-menu-down:before {
- content: "\e259";
-}
-.glyphicon-menu-up:before {
- content: "\e260";
-}
-* {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-*:before,
-*:after {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-html {
- font-size: 10px;
-
- -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 1.42857143;
- color: #333;
- background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
- font-family: inherit;
- font-size: inherit;
- line-height: inherit;
-}
-a {
- color: #337ab7;
- text-decoration: none;
-}
-a:hover,
-a:focus {
- color: #23527c;
- text-decoration: underline;
-}
-a:focus {
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-figure {
- margin: 0;
-}
-img {
- vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
- display: block;
- max-width: 100%;
- height: auto;
-}
-.img-rounded {
- border-radius: 6px;
-}
-.img-thumbnail {
- display: inline-block;
- max-width: 100%;
- height: auto;
- padding: 4px;
- line-height: 1.42857143;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
- -webkit-transition: all .2s ease-in-out;
- -o-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
-}
-.img-circle {
- border-radius: 50%;
-}
-hr {
- margin-top: 20px;
- margin-bottom: 20px;
- border: 0;
- border-top: 1px solid #eee;
-}
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
- position: static;
- width: auto;
- height: auto;
- margin: 0;
- overflow: visible;
- clip: auto;
-}
-[role="button"] {
- cursor: pointer;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
- font-family: inherit;
- font-weight: 500;
- line-height: 1.1;
- color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
- font-weight: normal;
- line-height: 1;
- color: #777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
- margin-top: 20px;
- margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
- font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
- font-size: 75%;
-}
-h1,
-.h1 {
- font-size: 36px;
-}
-h2,
-.h2 {
- font-size: 30px;
-}
-h3,
-.h3 {
- font-size: 24px;
-}
-h4,
-.h4 {
- font-size: 18px;
-}
-h5,
-.h5 {
- font-size: 14px;
-}
-h6,
-.h6 {
- font-size: 12px;
-}
-p {
- margin: 0 0 10px;
-}
-.lead {
- margin-bottom: 20px;
- font-size: 16px;
- font-weight: 300;
- line-height: 1.4;
-}
-@media (min-width: 768px) {
- .lead {
- font-size: 21px;
- }
-}
-small,
-.small {
- font-size: 85%;
-}
-mark,
-.mark {
- padding: .2em;
- background-color: #fcf8e3;
-}
-.text-left {
- text-align: left;
-}
-.text-right {
- text-align: right;
-}
-.text-center {
- text-align: center;
-}
-.text-justify {
- text-align: justify;
-}
-.text-nowrap {
- white-space: nowrap;
-}
-.text-lowercase {
- text-transform: lowercase;
-}
-.text-uppercase {
- text-transform: uppercase;
-}
-.text-capitalize {
- text-transform: capitalize;
-}
-.text-muted {
- color: #777;
-}
-.text-primary {
- color: #337ab7;
-}
-a.text-primary:hover,
-a.text-primary:focus {
- color: #286090;
-}
-.text-success {
- color: #3c763d;
-}
-a.text-success:hover,
-a.text-success:focus {
- color: #2b542c;
-}
-.text-info {
- color: #31708f;
-}
-a.text-info:hover,
-a.text-info:focus {
- color: #245269;
-}
-.text-warning {
- color: #8a6d3b;
-}
-a.text-warning:hover,
-a.text-warning:focus {
- color: #66512c;
-}
-.text-danger {
- color: #a94442;
-}
-a.text-danger:hover,
-a.text-danger:focus {
- color: #843534;
-}
-.bg-primary {
- color: #fff;
- background-color: #337ab7;
-}
-a.bg-primary:hover,
-a.bg-primary:focus {
- background-color: #286090;
-}
-.bg-success {
- background-color: #dff0d8;
-}
-a.bg-success:hover,
-a.bg-success:focus {
- background-color: #c1e2b3;
-}
-.bg-info {
- background-color: #d9edf7;
-}
-a.bg-info:hover,
-a.bg-info:focus {
- background-color: #afd9ee;
-}
-.bg-warning {
- background-color: #fcf8e3;
-}
-a.bg-warning:hover,
-a.bg-warning:focus {
- background-color: #f7ecb5;
-}
-.bg-danger {
- background-color: #f2dede;
-}
-a.bg-danger:hover,
-a.bg-danger:focus {
- background-color: #e4b9b9;
-}
-.page-header {
- padding-bottom: 9px;
- margin: 40px 0 20px;
- border-bottom: 1px solid #eee;
-}
-ul,
-ol {
- margin-top: 0;
- margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
- margin-bottom: 0;
-}
-.list-unstyled {
- padding-left: 0;
- list-style: none;
-}
-.list-inline {
- padding-left: 0;
- margin-left: -5px;
- list-style: none;
-}
-.list-inline > li {
- display: inline-block;
- padding-right: 5px;
- padding-left: 5px;
-}
-dl {
- margin-top: 0;
- margin-bottom: 20px;
-}
-dt,
-dd {
- line-height: 1.42857143;
-}
-dt {
- font-weight: bold;
-}
-dd {
- margin-left: 0;
-}
-@media (min-width: 768px) {
- .dl-horizontal dt {
- float: left;
- width: 160px;
- overflow: hidden;
- clear: left;
- text-align: right;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .dl-horizontal dd {
- margin-left: 180px;
- }
-}
-abbr[title],
-abbr[data-original-title] {
- cursor: help;
- border-bottom: 1px dotted #777;
-}
-.initialism {
- font-size: 90%;
- text-transform: uppercase;
-}
-blockquote {
- padding: 10px 20px;
- margin: 0 0 20px;
- font-size: 17.5px;
- border-left: 5px solid #eee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
- margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
- display: block;
- font-size: 80%;
- line-height: 1.42857143;
- color: #777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
- content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
- padding-right: 15px;
- padding-left: 0;
- text-align: right;
- border-right: 5px solid #eee;
- border-left: 0;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
- content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
- content: '\00A0 \2014';
-}
-address {
- margin-bottom: 20px;
- font-style: normal;
- line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
- font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
- padding: 2px 4px;
- font-size: 90%;
- color: #c7254e;
- background-color: #f9f2f4;
- border-radius: 4px;
-}
-kbd {
- padding: 2px 4px;
- font-size: 90%;
- color: #fff;
- background-color: #333;
- border-radius: 3px;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-}
-kbd kbd {
- padding: 0;
- font-size: 100%;
- font-weight: bold;
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 1.42857143;
- color: #333;
- word-break: break-all;
- word-wrap: break-word;
- background-color: #f5f5f5;
- border: 1px solid #ccc;
- border-radius: 4px;
-}
-pre code {
- padding: 0;
- font-size: inherit;
- color: inherit;
- white-space: pre-wrap;
- background-color: transparent;
- border-radius: 0;
-}
-.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
-}
-.container {
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto;
-}
-@media (min-width: 768px) {
- .container {
- width: 750px;
- }
-}
-@media (min-width: 992px) {
- .container {
- width: 970px;
- }
-}
-@media (min-width: 1200px) {
- .container {
- width: 1170px;
- }
-}
-.container-fluid {
- padding-right: 15px;
- padding-left: 15px;
- margin-right: auto;
- margin-left: auto;
-}
-.row {
- margin-right: -15px;
- margin-left: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
- position: relative;
- min-height: 1px;
- padding-right: 15px;
- padding-left: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
- float: left;
-}
-.col-xs-12 {
- width: 100%;
-}
-.col-xs-11 {
- width: 91.66666667%;
-}
-.col-xs-10 {
- width: 83.33333333%;
-}
-.col-xs-9 {
- width: 75%;
-}
-.col-xs-8 {
- width: 66.66666667%;
-}
-.col-xs-7 {
- width: 58.33333333%;
-}
-.col-xs-6 {
- width: 50%;
-}
-.col-xs-5 {
- width: 41.66666667%;
-}
-.col-xs-4 {
- width: 33.33333333%;
-}
-.col-xs-3 {
- width: 25%;
-}
-.col-xs-2 {
- width: 16.66666667%;
-}
-.col-xs-1 {
- width: 8.33333333%;
-}
-.col-xs-pull-12 {
- right: 100%;
-}
-.col-xs-pull-11 {
- right: 91.66666667%;
-}
-.col-xs-pull-10 {
- right: 83.33333333%;
-}
-.col-xs-pull-9 {
- right: 75%;
-}
-.col-xs-pull-8 {
- right: 66.66666667%;
-}
-.col-xs-pull-7 {
- right: 58.33333333%;
-}
-.col-xs-pull-6 {
- right: 50%;
-}
-.col-xs-pull-5 {
- right: 41.66666667%;
-}
-.col-xs-pull-4 {
- right: 33.33333333%;
-}
-.col-xs-pull-3 {
- right: 25%;
-}
-.col-xs-pull-2 {
- right: 16.66666667%;
-}
-.col-xs-pull-1 {
- right: 8.33333333%;
-}
-.col-xs-pull-0 {
- right: auto;
-}
-.col-xs-push-12 {
- left: 100%;
-}
-.col-xs-push-11 {
- left: 91.66666667%;
-}
-.col-xs-push-10 {
- left: 83.33333333%;
-}
-.col-xs-push-9 {
- left: 75%;
-}
-.col-xs-push-8 {
- left: 66.66666667%;
-}
-.col-xs-push-7 {
- left: 58.33333333%;
-}
-.col-xs-push-6 {
- left: 50%;
-}
-.col-xs-push-5 {
- left: 41.66666667%;
-}
-.col-xs-push-4 {
- left: 33.33333333%;
-}
-.col-xs-push-3 {
- left: 25%;
-}
-.col-xs-push-2 {
- left: 16.66666667%;
-}
-.col-xs-push-1 {
- left: 8.33333333%;
-}
-.col-xs-push-0 {
- left: auto;
-}
-.col-xs-offset-12 {
- margin-left: 100%;
-}
-.col-xs-offset-11 {
- margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
- margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
- margin-left: 75%;
-}
-.col-xs-offset-8 {
- margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
- margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
- margin-left: 50%;
-}
-.col-xs-offset-5 {
- margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
- margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
- margin-left: 25%;
-}
-.col-xs-offset-2 {
- margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
- margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
- margin-left: 0;
-}
-@media (min-width: 768px) {
- .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
- float: left;
- }
- .col-sm-12 {
- width: 100%;
- }
- .col-sm-11 {
- width: 91.66666667%;
- }
- .col-sm-10 {
- width: 83.33333333%;
- }
- .col-sm-9 {
- width: 75%;
- }
- .col-sm-8 {
- width: 66.66666667%;
- }
- .col-sm-7 {
- width: 58.33333333%;
- }
- .col-sm-6 {
- width: 50%;
- }
- .col-sm-5 {
- width: 41.66666667%;
- }
- .col-sm-4 {
- width: 33.33333333%;
- }
- .col-sm-3 {
- width: 25%;
- }
- .col-sm-2 {
- width: 16.66666667%;
- }
- .col-sm-1 {
- width: 8.33333333%;
- }
- .col-sm-pull-12 {
- right: 100%;
- }
- .col-sm-pull-11 {
- right: 91.66666667%;
- }
- .col-sm-pull-10 {
- right: 83.33333333%;
- }
- .col-sm-pull-9 {
- right: 75%;
- }
- .col-sm-pull-8 {
- right: 66.66666667%;
- }
- .col-sm-pull-7 {
- right: 58.33333333%;
- }
- .col-sm-pull-6 {
- right: 50%;
- }
- .col-sm-pull-5 {
- right: 41.66666667%;
- }
- .col-sm-pull-4 {
- right: 33.33333333%;
- }
- .col-sm-pull-3 {
- right: 25%;
- }
- .col-sm-pull-2 {
- right: 16.66666667%;
- }
- .col-sm-pull-1 {
- right: 8.33333333%;
- }
- .col-sm-pull-0 {
- right: auto;
- }
- .col-sm-push-12 {
- left: 100%;
- }
- .col-sm-push-11 {
- left: 91.66666667%;
- }
- .col-sm-push-10 {
- left: 83.33333333%;
- }
- .col-sm-push-9 {
- left: 75%;
- }
- .col-sm-push-8 {
- left: 66.66666667%;
- }
- .col-sm-push-7 {
- left: 58.33333333%;
- }
- .col-sm-push-6 {
- left: 50%;
- }
- .col-sm-push-5 {
- left: 41.66666667%;
- }
- .col-sm-push-4 {
- left: 33.33333333%;
- }
- .col-sm-push-3 {
- left: 25%;
- }
- .col-sm-push-2 {
- left: 16.66666667%;
- }
- .col-sm-push-1 {
- left: 8.33333333%;
- }
- .col-sm-push-0 {
- left: auto;
- }
- .col-sm-offset-12 {
- margin-left: 100%;
- }
- .col-sm-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-sm-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-sm-offset-9 {
- margin-left: 75%;
- }
- .col-sm-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-sm-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-sm-offset-6 {
- margin-left: 50%;
- }
- .col-sm-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-sm-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-sm-offset-3 {
- margin-left: 25%;
- }
- .col-sm-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-sm-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-sm-offset-0 {
- margin-left: 0;
- }
-}
-@media (min-width: 992px) {
- .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
- float: left;
- }
- .col-md-12 {
- width: 100%;
- }
- .col-md-11 {
- width: 91.66666667%;
- }
- .col-md-10 {
- width: 83.33333333%;
- }
- .col-md-9 {
- width: 75%;
- }
- .col-md-8 {
- width: 66.66666667%;
- }
- .col-md-7 {
- width: 58.33333333%;
- }
- .col-md-6 {
- width: 50%;
- }
- .col-md-5 {
- width: 41.66666667%;
- }
- .col-md-4 {
- width: 33.33333333%;
- }
- .col-md-3 {
- width: 25%;
- }
- .col-md-2 {
- width: 16.66666667%;
- }
- .col-md-1 {
- width: 8.33333333%;
- }
- .col-md-pull-12 {
- right: 100%;
- }
- .col-md-pull-11 {
- right: 91.66666667%;
- }
- .col-md-pull-10 {
- right: 83.33333333%;
- }
- .col-md-pull-9 {
- right: 75%;
- }
- .col-md-pull-8 {
- right: 66.66666667%;
- }
- .col-md-pull-7 {
- right: 58.33333333%;
- }
- .col-md-pull-6 {
- right: 50%;
- }
- .col-md-pull-5 {
- right: 41.66666667%;
- }
- .col-md-pull-4 {
- right: 33.33333333%;
- }
- .col-md-pull-3 {
- right: 25%;
- }
- .col-md-pull-2 {
- right: 16.66666667%;
- }
- .col-md-pull-1 {
- right: 8.33333333%;
- }
- .col-md-pull-0 {
- right: auto;
- }
- .col-md-push-12 {
- left: 100%;
- }
- .col-md-push-11 {
- left: 91.66666667%;
- }
- .col-md-push-10 {
- left: 83.33333333%;
- }
- .col-md-push-9 {
- left: 75%;
- }
- .col-md-push-8 {
- left: 66.66666667%;
- }
- .col-md-push-7 {
- left: 58.33333333%;
- }
- .col-md-push-6 {
- left: 50%;
- }
- .col-md-push-5 {
- left: 41.66666667%;
- }
- .col-md-push-4 {
- left: 33.33333333%;
- }
- .col-md-push-3 {
- left: 25%;
- }
- .col-md-push-2 {
- left: 16.66666667%;
- }
- .col-md-push-1 {
- left: 8.33333333%;
- }
- .col-md-push-0 {
- left: auto;
- }
- .col-md-offset-12 {
- margin-left: 100%;
- }
- .col-md-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-md-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-md-offset-9 {
- margin-left: 75%;
- }
- .col-md-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-md-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-md-offset-6 {
- margin-left: 50%;
- }
- .col-md-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-md-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-md-offset-3 {
- margin-left: 25%;
- }
- .col-md-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-md-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-md-offset-0 {
- margin-left: 0;
- }
-}
-@media (min-width: 1200px) {
- .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
- float: left;
- }
- .col-lg-12 {
- width: 100%;
- }
- .col-lg-11 {
- width: 91.66666667%;
- }
- .col-lg-10 {
- width: 83.33333333%;
- }
- .col-lg-9 {
- width: 75%;
- }
- .col-lg-8 {
- width: 66.66666667%;
- }
- .col-lg-7 {
- width: 58.33333333%;
- }
- .col-lg-6 {
- width: 50%;
- }
- .col-lg-5 {
- width: 41.66666667%;
- }
- .col-lg-4 {
- width: 33.33333333%;
- }
- .col-lg-3 {
- width: 25%;
- }
- .col-lg-2 {
- width: 16.66666667%;
- }
- .col-lg-1 {
- width: 8.33333333%;
- }
- .col-lg-pull-12 {
- right: 100%;
- }
- .col-lg-pull-11 {
- right: 91.66666667%;
- }
- .col-lg-pull-10 {
- right: 83.33333333%;
- }
- .col-lg-pull-9 {
- right: 75%;
- }
- .col-lg-pull-8 {
- right: 66.66666667%;
- }
- .col-lg-pull-7 {
- right: 58.33333333%;
- }
- .col-lg-pull-6 {
- right: 50%;
- }
- .col-lg-pull-5 {
- right: 41.66666667%;
- }
- .col-lg-pull-4 {
- right: 33.33333333%;
- }
- .col-lg-pull-3 {
- right: 25%;
- }
- .col-lg-pull-2 {
- right: 16.66666667%;
- }
- .col-lg-pull-1 {
- right: 8.33333333%;
- }
- .col-lg-pull-0 {
- right: auto;
- }
- .col-lg-push-12 {
- left: 100%;
- }
- .col-lg-push-11 {
- left: 91.66666667%;
- }
- .col-lg-push-10 {
- left: 83.33333333%;
- }
- .col-lg-push-9 {
- left: 75%;
- }
- .col-lg-push-8 {
- left: 66.66666667%;
- }
- .col-lg-push-7 {
- left: 58.33333333%;
- }
- .col-lg-push-6 {
- left: 50%;
- }
- .col-lg-push-5 {
- left: 41.66666667%;
- }
- .col-lg-push-4 {
- left: 33.33333333%;
- }
- .col-lg-push-3 {
- left: 25%;
- }
- .col-lg-push-2 {
- left: 16.66666667%;
- }
- .col-lg-push-1 {
- left: 8.33333333%;
- }
- .col-lg-push-0 {
- left: auto;
- }
- .col-lg-offset-12 {
- margin-left: 100%;
- }
- .col-lg-offset-11 {
- margin-left: 91.66666667%;
- }
- .col-lg-offset-10 {
- margin-left: 83.33333333%;
- }
- .col-lg-offset-9 {
- margin-left: 75%;
- }
- .col-lg-offset-8 {
- margin-left: 66.66666667%;
- }
- .col-lg-offset-7 {
- margin-left: 58.33333333%;
- }
- .col-lg-offset-6 {
- margin-left: 50%;
- }
- .col-lg-offset-5 {
- margin-left: 41.66666667%;
- }
- .col-lg-offset-4 {
- margin-left: 33.33333333%;
- }
- .col-lg-offset-3 {
- margin-left: 25%;
- }
- .col-lg-offset-2 {
- margin-left: 16.66666667%;
- }
- .col-lg-offset-1 {
- margin-left: 8.33333333%;
- }
- .col-lg-offset-0 {
- margin-left: 0;
- }
-}
-table {
- background-color: transparent;
-}
-caption {
- padding-top: 8px;
- padding-bottom: 8px;
- color: #777;
- text-align: left;
-}
-th {
- text-align: left;
-}
-.table {
- width: 100%;
- max-width: 100%;
- margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
- padding: 8px;
- line-height: 1.42857143;
- vertical-align: top;
- border-top: 1px solid #ddd;
-}
-.table > thead > tr > th {
- vertical-align: bottom;
- border-bottom: 2px solid #ddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
- border-top: 0;
-}
-.table > tbody + tbody {
- border-top: 2px solid #ddd;
-}
-.table .table {
- background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
- padding: 5px;
-}
-.table-bordered {
- border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
- border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
- border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-of-type(odd) {
- background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover {
- background-color: #f5f5f5;
-}
-table col[class*="col-"] {
- position: static;
- display: table-column;
- float: none;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
- position: static;
- display: table-cell;
- float: none;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
- background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
- background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
- background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
- background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
- background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
- background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
- background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
- background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
- background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
- background-color: #ebcccc;
-}
-.table-responsive {
- min-height: .01%;
- overflow-x: auto;
-}
-@media screen and (max-width: 767px) {
- .table-responsive {
- width: 100%;
- margin-bottom: 15px;
- overflow-y: hidden;
- -ms-overflow-style: -ms-autohiding-scrollbar;
- border: 1px solid #ddd;
- }
- .table-responsive > .table {
- margin-bottom: 0;
- }
- .table-responsive > .table > thead > tr > th,
- .table-responsive > .table > tbody > tr > th,
- .table-responsive > .table > tfoot > tr > th,
- .table-responsive > .table > thead > tr > td,
- .table-responsive > .table > tbody > tr > td,
- .table-responsive > .table > tfoot > tr > td {
- white-space: nowrap;
- }
- .table-responsive > .table-bordered {
- border: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:first-child,
- .table-responsive > .table-bordered > tbody > tr > th:first-child,
- .table-responsive > .table-bordered > tfoot > tr > th:first-child,
- .table-responsive > .table-bordered > thead > tr > td:first-child,
- .table-responsive > .table-bordered > tbody > tr > td:first-child,
- .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
- }
- .table-responsive > .table-bordered > thead > tr > th:last-child,
- .table-responsive > .table-bordered > tbody > tr > th:last-child,
- .table-responsive > .table-bordered > tfoot > tr > th:last-child,
- .table-responsive > .table-bordered > thead > tr > td:last-child,
- .table-responsive > .table-bordered > tbody > tr > td:last-child,
- .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
- }
- .table-responsive > .table-bordered > tbody > tr:last-child > th,
- .table-responsive > .table-bordered > tfoot > tr:last-child > th,
- .table-responsive > .table-bordered > tbody > tr:last-child > td,
- .table-responsive > .table-bordered > tfoot > tr:last-child > td {
- border-bottom: 0;
- }
-}
-fieldset {
- min-width: 0;
- padding: 0;
- margin: 0;
- border: 0;
-}
-legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: inherit;
- color: #333;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
-}
-label {
- display: inline-block;
- max-width: 100%;
- margin-bottom: 5px;
- font-weight: bold;
-}
-input[type="search"] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9;
- line-height: normal;
-}
-input[type="file"] {
- display: block;
-}
-input[type="range"] {
- display: block;
- width: 100%;
-}
-select[multiple],
-select[size] {
- height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-output {
- display: block;
- padding-top: 7px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555;
-}
-.form-control {
- display: block;
- width: 100%;
- height: 34px;
- padding: 6px 12px;
- font-size: 14px;
- line-height: 1.42857143;
- color: #555;
- background-color: #fff;
- background-image: none;
- border: 1px solid #ccc;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
- -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
- transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-.form-control:focus {
- border-color: #66afe9;
- outline: 0;
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
- box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-}
-.form-control::-moz-placeholder {
- color: #999;
- opacity: 1;
-}
-.form-control:-ms-input-placeholder {
- color: #999;
-}
-.form-control::-webkit-input-placeholder {
- color: #999;
-}
-.form-control::-ms-expand {
- background-color: transparent;
- border: 0;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
- background-color: #eee;
- opacity: 1;
-}
-.form-control[disabled],
-fieldset[disabled] .form-control {
- cursor: not-allowed;
-}
-textarea.form-control {
- height: auto;
-}
-input[type="search"] {
- -webkit-appearance: none;
-}
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
- input[type="date"].form-control,
- input[type="time"].form-control,
- input[type="datetime-local"].form-control,
- input[type="month"].form-control {
- line-height: 34px;
- }
- input[type="date"].input-sm,
- input[type="time"].input-sm,
- input[type="datetime-local"].input-sm,
- input[type="month"].input-sm,
- .input-group-sm input[type="date"],
- .input-group-sm input[type="time"],
- .input-group-sm input[type="datetime-local"],
- .input-group-sm input[type="month"] {
- line-height: 30px;
- }
- input[type="date"].input-lg,
- input[type="time"].input-lg,
- input[type="datetime-local"].input-lg,
- input[type="month"].input-lg,
- .input-group-lg input[type="date"],
- .input-group-lg input[type="time"],
- .input-group-lg input[type="datetime-local"],
- .input-group-lg input[type="month"] {
- line-height: 46px;
- }
-}
-.form-group {
- margin-bottom: 15px;
-}
-.radio,
-.checkbox {
- position: relative;
- display: block;
- margin-top: 10px;
- margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
- min-height: 20px;
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: normal;
- cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
- position: absolute;
- margin-top: 4px \9;
- margin-left: -20px;
-}
-.radio + .radio,
-.checkbox + .checkbox {
- margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
- position: relative;
- display: inline-block;
- padding-left: 20px;
- margin-bottom: 0;
- font-weight: normal;
- vertical-align: middle;
- cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
- margin-top: 0;
- margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
- cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
- cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
- cursor: not-allowed;
-}
-.form-control-static {
- min-height: 34px;
- padding-top: 7px;
- padding-bottom: 7px;
- margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
- padding-right: 0;
- padding-left: 0;
-}
-.input-sm {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-select.input-sm {
- height: 30px;
- line-height: 30px;
-}
-textarea.input-sm,
-select[multiple].input-sm {
- height: auto;
-}
-.form-group-sm .form-control {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.form-group-sm select.form-control {
- height: 30px;
- line-height: 30px;
-}
-.form-group-sm textarea.form-control,
-.form-group-sm select[multiple].form-control {
- height: auto;
-}
-.form-group-sm .form-control-static {
- height: 30px;
- min-height: 32px;
- padding: 6px 10px;
- font-size: 12px;
- line-height: 1.5;
-}
-.input-lg {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px;
-}
-select.input-lg {
- height: 46px;
- line-height: 46px;
-}
-textarea.input-lg,
-select[multiple].input-lg {
- height: auto;
-}
-.form-group-lg .form-control {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px;
-}
-.form-group-lg select.form-control {
- height: 46px;
- line-height: 46px;
-}
-.form-group-lg textarea.form-control,
-.form-group-lg select[multiple].form-control {
- height: auto;
-}
-.form-group-lg .form-control-static {
- height: 46px;
- min-height: 38px;
- padding: 11px 16px;
- font-size: 18px;
- line-height: 1.3333333;
-}
-.has-feedback {
- position: relative;
-}
-.has-feedback .form-control {
- padding-right: 42.5px;
-}
-.form-control-feedback {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 2;
- display: block;
- width: 34px;
- height: 34px;
- line-height: 34px;
- text-align: center;
- pointer-events: none;
-}
-.input-lg + .form-control-feedback,
-.input-group-lg + .form-control-feedback,
-.form-group-lg .form-control + .form-control-feedback {
- width: 46px;
- height: 46px;
- line-height: 46px;
-}
-.input-sm + .form-control-feedback,
-.input-group-sm + .form-control-feedback,
-.form-group-sm .form-control + .form-control-feedback {
- width: 30px;
- height: 30px;
- line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline,
-.has-success.radio label,
-.has-success.checkbox label,
-.has-success.radio-inline label,
-.has-success.checkbox-inline label {
- color: #3c763d;
-}
-.has-success .form-control {
- border-color: #3c763d;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-success .form-control:focus {
- border-color: #2b542c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #3c763d;
-}
-.has-success .form-control-feedback {
- color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline,
-.has-warning.radio label,
-.has-warning.checkbox label,
-.has-warning.radio-inline label,
-.has-warning.checkbox-inline label {
- color: #8a6d3b;
-}
-.has-warning .form-control {
- border-color: #8a6d3b;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-warning .form-control:focus {
- border-color: #66512c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #8a6d3b;
-}
-.has-warning .form-control-feedback {
- color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline,
-.has-error.radio label,
-.has-error.checkbox label,
-.has-error.radio-inline label,
-.has-error.checkbox-inline label {
- color: #a94442;
-}
-.has-error .form-control {
- border-color: #a94442;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-error .form-control:focus {
- border-color: #843534;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
- color: #a94442;
- background-color: #f2dede;
- border-color: #a94442;
-}
-.has-error .form-control-feedback {
- color: #a94442;
-}
-.has-feedback label ~ .form-control-feedback {
- top: 25px;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
- top: 0;
-}
-.help-block {
- display: block;
- margin-top: 5px;
- margin-bottom: 10px;
- color: #737373;
-}
-@media (min-width: 768px) {
- .form-inline .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle;
- }
- .form-inline .form-control-static {
- display: inline-block;
- }
- .form-inline .input-group {
- display: inline-table;
- vertical-align: middle;
- }
- .form-inline .input-group .input-group-addon,
- .form-inline .input-group .input-group-btn,
- .form-inline .input-group .form-control {
- width: auto;
- }
- .form-inline .input-group > .form-control {
- width: 100%;
- }
- .form-inline .control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .radio,
- .form-inline .checkbox {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .form-inline .radio label,
- .form-inline .checkbox label {
- padding-left: 0;
- }
- .form-inline .radio input[type="radio"],
- .form-inline .checkbox input[type="checkbox"] {
- position: relative;
- margin-left: 0;
- }
- .form-inline .has-feedback .form-control-feedback {
- top: 0;
- }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
- padding-top: 7px;
- margin-top: 0;
- margin-bottom: 0;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
- min-height: 27px;
-}
-.form-horizontal .form-group {
- margin-right: -15px;
- margin-left: -15px;
-}
-@media (min-width: 768px) {
- .form-horizontal .control-label {
- padding-top: 7px;
- margin-bottom: 0;
- text-align: right;
- }
-}
-.form-horizontal .has-feedback .form-control-feedback {
- right: 15px;
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-lg .control-label {
- padding-top: 11px;
- font-size: 18px;
- }
-}
-@media (min-width: 768px) {
- .form-horizontal .form-group-sm .control-label {
- padding-top: 6px;
- font-size: 12px;
- }
-}
-.btn {
- display: inline-block;
- padding: 6px 12px;
- margin-bottom: 0;
- font-size: 14px;
- font-weight: normal;
- line-height: 1.42857143;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
- -ms-touch-action: manipulation;
- touch-action: manipulation;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn.active.focus {
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus,
-.btn.focus {
- color: #333;
- text-decoration: none;
-}
-.btn:active,
-.btn.active {
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
- cursor: not-allowed;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- box-shadow: none;
- opacity: .65;
-}
-a.btn.disabled,
-fieldset[disabled] a.btn {
- pointer-events: none;
-}
-.btn-default {
- color: #333;
- background-color: #fff;
- border-color: #ccc;
-}
-.btn-default:focus,
-.btn-default.focus {
- color: #333;
- background-color: #e6e6e6;
- border-color: #8c8c8c;
-}
-.btn-default:hover {
- color: #333;
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
- color: #333;
- background-color: #e6e6e6;
- border-color: #adadad;
-}
-.btn-default:active:hover,
-.btn-default.active:hover,
-.open > .dropdown-toggle.btn-default:hover,
-.btn-default:active:focus,
-.btn-default.active:focus,
-.open > .dropdown-toggle.btn-default:focus,
-.btn-default:active.focus,
-.btn-default.active.focus,
-.open > .dropdown-toggle.btn-default.focus {
- color: #333;
- background-color: #d4d4d4;
- border-color: #8c8c8c;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
- background-image: none;
-}
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus {
- background-color: #fff;
- border-color: #ccc;
-}
-.btn-default .badge {
- color: #fff;
- background-color: #333;
-}
-.btn-primary {
- color: #fff;
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary:focus,
-.btn-primary.focus {
- color: #fff;
- background-color: #286090;
- border-color: #122b40;
-}
-.btn-primary:hover {
- color: #fff;
- background-color: #286090;
- border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
- color: #fff;
- background-color: #286090;
- border-color: #204d74;
-}
-.btn-primary:active:hover,
-.btn-primary.active:hover,
-.open > .dropdown-toggle.btn-primary:hover,
-.btn-primary:active:focus,
-.btn-primary.active:focus,
-.open > .dropdown-toggle.btn-primary:focus,
-.btn-primary:active.focus,
-.btn-primary.active.focus,
-.open > .dropdown-toggle.btn-primary.focus {
- color: #fff;
- background-color: #204d74;
- border-color: #122b40;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
- background-image: none;
-}
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus {
- background-color: #337ab7;
- border-color: #2e6da4;
-}
-.btn-primary .badge {
- color: #337ab7;
- background-color: #fff;
-}
-.btn-success {
- color: #fff;
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success:focus,
-.btn-success.focus {
- color: #fff;
- background-color: #449d44;
- border-color: #255625;
-}
-.btn-success:hover {
- color: #fff;
- background-color: #449d44;
- border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
- color: #fff;
- background-color: #449d44;
- border-color: #398439;
-}
-.btn-success:active:hover,
-.btn-success.active:hover,
-.open > .dropdown-toggle.btn-success:hover,
-.btn-success:active:focus,
-.btn-success.active:focus,
-.open > .dropdown-toggle.btn-success:focus,
-.btn-success:active.focus,
-.btn-success.active.focus,
-.open > .dropdown-toggle.btn-success.focus {
- color: #fff;
- background-color: #398439;
- border-color: #255625;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
- background-image: none;
-}
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus {
- background-color: #5cb85c;
- border-color: #4cae4c;
-}
-.btn-success .badge {
- color: #5cb85c;
- background-color: #fff;
-}
-.btn-info {
- color: #fff;
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info:focus,
-.btn-info.focus {
- color: #fff;
- background-color: #31b0d5;
- border-color: #1b6d85;
-}
-.btn-info:hover {
- color: #fff;
- background-color: #31b0d5;
- border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
- color: #fff;
- background-color: #31b0d5;
- border-color: #269abc;
-}
-.btn-info:active:hover,
-.btn-info.active:hover,
-.open > .dropdown-toggle.btn-info:hover,
-.btn-info:active:focus,
-.btn-info.active:focus,
-.open > .dropdown-toggle.btn-info:focus,
-.btn-info:active.focus,
-.btn-info.active.focus,
-.open > .dropdown-toggle.btn-info.focus {
- color: #fff;
- background-color: #269abc;
- border-color: #1b6d85;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
- background-image: none;
-}
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus {
- background-color: #5bc0de;
- border-color: #46b8da;
-}
-.btn-info .badge {
- color: #5bc0de;
- background-color: #fff;
-}
-.btn-warning {
- color: #fff;
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning:focus,
-.btn-warning.focus {
- color: #fff;
- background-color: #ec971f;
- border-color: #985f0d;
-}
-.btn-warning:hover {
- color: #fff;
- background-color: #ec971f;
- border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
- color: #fff;
- background-color: #ec971f;
- border-color: #d58512;
-}
-.btn-warning:active:hover,
-.btn-warning.active:hover,
-.open > .dropdown-toggle.btn-warning:hover,
-.btn-warning:active:focus,
-.btn-warning.active:focus,
-.open > .dropdown-toggle.btn-warning:focus,
-.btn-warning:active.focus,
-.btn-warning.active.focus,
-.open > .dropdown-toggle.btn-warning.focus {
- color: #fff;
- background-color: #d58512;
- border-color: #985f0d;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
- background-image: none;
-}
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus {
- background-color: #f0ad4e;
- border-color: #eea236;
-}
-.btn-warning .badge {
- color: #f0ad4e;
- background-color: #fff;
-}
-.btn-danger {
- color: #fff;
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger:focus,
-.btn-danger.focus {
- color: #fff;
- background-color: #c9302c;
- border-color: #761c19;
-}
-.btn-danger:hover {
- color: #fff;
- background-color: #c9302c;
- border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
- color: #fff;
- background-color: #c9302c;
- border-color: #ac2925;
-}
-.btn-danger:active:hover,
-.btn-danger.active:hover,
-.open > .dropdown-toggle.btn-danger:hover,
-.btn-danger:active:focus,
-.btn-danger.active:focus,
-.open > .dropdown-toggle.btn-danger:focus,
-.btn-danger:active.focus,
-.btn-danger.active.focus,
-.open > .dropdown-toggle.btn-danger.focus {
- color: #fff;
- background-color: #ac2925;
- border-color: #761c19;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
- background-image: none;
-}
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus {
- background-color: #d9534f;
- border-color: #d43f3a;
-}
-.btn-danger .badge {
- color: #d9534f;
- background-color: #fff;
-}
-.btn-link {
- font-weight: normal;
- color: #337ab7;
- border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link.active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
- background-color: transparent;
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
- border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
- color: #23527c;
- text-decoration: underline;
- background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
- color: #777;
- text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
- padding: 1px 5px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-.btn-block {
- display: block;
- width: 100%;
-}
-.btn-block + .btn-block {
- margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
- width: 100%;
-}
-.fade {
- opacity: 0;
- -webkit-transition: opacity .15s linear;
- -o-transition: opacity .15s linear;
- transition: opacity .15s linear;
-}
-.fade.in {
- opacity: 1;
-}
-.collapse {
- display: none;
-}
-.collapse.in {
- display: block;
-}
-tr.collapse.in {
- display: table-row;
-}
-tbody.collapse.in {
- display: table-row-group;
-}
-.collapsing {
- position: relative;
- height: 0;
- overflow: hidden;
- -webkit-transition-timing-function: ease;
- -o-transition-timing-function: ease;
- transition-timing-function: ease;
- -webkit-transition-duration: .35s;
- -o-transition-duration: .35s;
- transition-duration: .35s;
- -webkit-transition-property: height, visibility;
- -o-transition-property: height, visibility;
- transition-property: height, visibility;
-}
-.caret {
- display: inline-block;
- width: 0;
- height: 0;
- margin-left: 2px;
- vertical-align: middle;
- border-top: 4px dashed;
- border-top: 4px solid \9;
- border-right: 4px solid transparent;
- border-left: 4px solid transparent;
-}
-.dropup,
-.dropdown {
- position: relative;
-}
-.dropdown-toggle:focus {
- outline: 0;
-}
-.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: 1000;
- display: none;
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0;
- font-size: 14px;
- text-align: left;
- list-style: none;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, .15);
- border-radius: 4px;
- -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
- box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-}
-.dropdown-menu.pull-right {
- right: 0;
- left: auto;
-}
-.dropdown-menu .divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: 1.42857143;
- color: #333;
- white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
- color: #262626;
- text-decoration: none;
- background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
- color: #fff;
- text-decoration: none;
- background-color: #337ab7;
- outline: 0;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- color: #777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
- text-decoration: none;
- cursor: not-allowed;
- background-color: transparent;
- background-image: none;
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.open > .dropdown-menu {
- display: block;
-}
-.open > a {
- outline: 0;
-}
-.dropdown-menu-right {
- right: 0;
- left: auto;
-}
-.dropdown-menu-left {
- right: auto;
- left: 0;
-}
-.dropdown-header {
- display: block;
- padding: 3px 20px;
- font-size: 12px;
- line-height: 1.42857143;
- color: #777;
- white-space: nowrap;
-}
-.dropdown-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 990;
-}
-.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
- content: "";
- border-top: 0;
- border-bottom: 4px dashed;
- border-bottom: 4px solid \9;
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 2px;
-}
-@media (min-width: 768px) {
- .navbar-right .dropdown-menu {
- right: 0;
- left: auto;
- }
- .navbar-right .dropdown-menu-left {
- right: auto;
- left: 0;
- }
-}
-.btn-group,
-.btn-group-vertical {
- position: relative;
- display: inline-block;
- vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
- position: relative;
- float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
- z-index: 2;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
- margin-left: -1px;
-}
-.btn-toolbar {
- margin-left: -5px;
-}
-.btn-toolbar .btn,
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
- float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
- margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
- border-radius: 0;
-}
-.btn-group > .btn:first-child {
- margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group > .btn-group {
- float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
- outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
- padding-right: 8px;
- padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
- padding-right: 12px;
- padding-left: 12px;
-}
-.btn-group.open .dropdown-toggle {
- -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
- box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-.btn .caret {
- margin-left: 0;
-}
-.btn-lg .caret {
- border-width: 5px 5px 0;
- border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
- border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
- float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
- margin-top: -1px;
- margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
- border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
- border-bottom-right-radius: 4px;
- border-bottom-left-radius: 4px;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
- border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.btn-group-justified {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
- display: table-cell;
- float: none;
- width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
- width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
- left: auto;
-}
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
- position: absolute;
- clip: rect(0, 0, 0, 0);
- pointer-events: none;
-}
-.input-group {
- position: relative;
- display: table;
- border-collapse: separate;
-}
-.input-group[class*="col-"] {
- float: none;
- padding-right: 0;
- padding-left: 0;
-}
-.input-group .form-control {
- position: relative;
- z-index: 2;
- float: left;
- width: 100%;
- margin-bottom: 0;
-}
-.input-group .form-control:focus {
- z-index: 3;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
- height: 46px;
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
- border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
- height: 46px;
- line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
- height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
- height: 30px;
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
- border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
- height: 30px;
- line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
- height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
- display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
- border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
- width: 1%;
- white-space: nowrap;
- vertical-align: middle;
-}
-.input-group-addon {
- padding: 6px 12px;
- font-size: 14px;
- font-weight: normal;
- line-height: 1;
- color: #555;
- text-align: center;
- background-color: #eee;
- border: 1px solid #ccc;
- border-radius: 4px;
-}
-.input-group-addon.input-sm {
- padding: 5px 10px;
- font-size: 12px;
- border-radius: 3px;
-}
-.input-group-addon.input-lg {
- padding: 10px 16px;
- font-size: 18px;
- border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
- margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
-}
-.input-group-addon:first-child {
- border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
-}
-.input-group-addon:last-child {
- border-left: 0;
-}
-.input-group-btn {
- position: relative;
- font-size: 0;
- white-space: nowrap;
-}
-.input-group-btn > .btn {
- position: relative;
-}
-.input-group-btn > .btn + .btn {
- margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
- z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
- margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
- z-index: 2;
- margin-left: -1px;
-}
-.nav {
- padding-left: 0;
- margin-bottom: 0;
- list-style: none;
-}
-.nav > li {
- position: relative;
- display: block;
-}
-.nav > li > a {
- position: relative;
- display: block;
- padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
- text-decoration: none;
- background-color: #eee;
-}
-.nav > li.disabled > a {
- color: #777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
- color: #777;
- text-decoration: none;
- cursor: not-allowed;
- background-color: transparent;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
- background-color: #eee;
- border-color: #337ab7;
-}
-.nav .nav-divider {
- height: 1px;
- margin: 9px 0;
- overflow: hidden;
- background-color: #e5e5e5;
-}
-.nav > li > a > img {
- max-width: none;
-}
-.nav-tabs {
- border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
- float: left;
- margin-bottom: -1px;
-}
-.nav-tabs > li > a {
- margin-right: 2px;
- line-height: 1.42857143;
- border: 1px solid transparent;
- border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
- border-color: #eee #eee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
- color: #555;
- cursor: default;
- background-color: #fff;
- border: 1px solid #ddd;
- border-bottom-color: transparent;
-}
-.nav-tabs.nav-justified {
- width: 100%;
- border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
- float: none;
-}
-.nav-tabs.nav-justified > li > a {
- margin-bottom: 5px;
- text-align: center;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
- top: auto;
- left: auto;
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified > li {
- display: table-cell;
- width: 1%;
- }
- .nav-tabs.nav-justified > li > a {
- margin-bottom: 0;
- }
-}
-.nav-tabs.nav-justified > li > a {
- margin-right: 0;
- border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
- border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
- .nav-tabs.nav-justified > li > a {
- border-bottom: 1px solid #ddd;
- border-radius: 4px 4px 0 0;
- }
- .nav-tabs.nav-justified > .active > a,
- .nav-tabs.nav-justified > .active > a:hover,
- .nav-tabs.nav-justified > .active > a:focus {
- border-bottom-color: #fff;
- }
-}
-.nav-pills > li {
- float: left;
-}
-.nav-pills > li > a {
- border-radius: 4px;
-}
-.nav-pills > li + li {
- margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
- color: #fff;
- background-color: #337ab7;
-}
-.nav-stacked > li {
- float: none;
-}
-.nav-stacked > li + li {
- margin-top: 2px;
- margin-left: 0;
-}
-.nav-justified {
- width: 100%;
-}
-.nav-justified > li {
- float: none;
-}
-.nav-justified > li > a {
- margin-bottom: 5px;
- text-align: center;
-}
-.nav-justified > .dropdown .dropdown-menu {
- top: auto;
- left: auto;
-}
-@media (min-width: 768px) {
- .nav-justified > li {
- display: table-cell;
- width: 1%;
- }
- .nav-justified > li > a {
- margin-bottom: 0;
- }
-}
-.nav-tabs-justified {
- border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
- margin-right: 0;
- border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
- border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
- .nav-tabs-justified > li > a {
- border-bottom: 1px solid #ddd;
- border-radius: 4px 4px 0 0;
- }
- .nav-tabs-justified > .active > a,
- .nav-tabs-justified > .active > a:hover,
- .nav-tabs-justified > .active > a:focus {
- border-bottom-color: #fff;
- }
-}
-.tab-content > .tab-pane {
- display: none;
-}
-.tab-content > .active {
- display: block;
-}
-.nav-tabs .dropdown-menu {
- margin-top: -1px;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.navbar {
- position: relative;
- min-height: 50px;
- margin-bottom: 20px;
- border: 1px solid transparent;
-}
-@media (min-width: 768px) {
- .navbar {
- border-radius: 4px;
- }
-}
-@media (min-width: 768px) {
- .navbar-header {
- float: left;
- }
-}
-.navbar-collapse {
- padding-right: 15px;
- padding-left: 15px;
- overflow-x: visible;
- -webkit-overflow-scrolling: touch;
- border-top: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-}
-.navbar-collapse.in {
- overflow-y: auto;
-}
-@media (min-width: 768px) {
- .navbar-collapse {
- width: auto;
- border-top: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
- .navbar-collapse.collapse {
- display: block !important;
- height: auto !important;
- padding-bottom: 0;
- overflow: visible !important;
- }
- .navbar-collapse.in {
- overflow-y: visible;
- }
- .navbar-fixed-top .navbar-collapse,
- .navbar-static-top .navbar-collapse,
- .navbar-fixed-bottom .navbar-collapse {
- padding-right: 0;
- padding-left: 0;
- }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
- max-height: 340px;
-}
-@media (max-device-width: 480px) and (orientation: landscape) {
- .navbar-fixed-top .navbar-collapse,
- .navbar-fixed-bottom .navbar-collapse {
- max-height: 200px;
- }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
- margin-right: -15px;
- margin-left: -15px;
-}
-@media (min-width: 768px) {
- .container > .navbar-header,
- .container-fluid > .navbar-header,
- .container > .navbar-collapse,
- .container-fluid > .navbar-collapse {
- margin-right: 0;
- margin-left: 0;
- }
-}
-.navbar-static-top {
- z-index: 1000;
- border-width: 0 0 1px;
-}
-@media (min-width: 768px) {
- .navbar-static-top {
- border-radius: 0;
- }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- z-index: 1030;
-}
-@media (min-width: 768px) {
- .navbar-fixed-top,
- .navbar-fixed-bottom {
- border-radius: 0;
- }
-}
-.navbar-fixed-top {
- top: 0;
- border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
- bottom: 0;
- margin-bottom: 0;
- border-width: 1px 0 0;
-}
-.navbar-brand {
- float: left;
- height: 50px;
- padding: 15px 15px;
- font-size: 18px;
- line-height: 20px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
- text-decoration: none;
-}
-.navbar-brand > img {
- display: block;
-}
-@media (min-width: 768px) {
- .navbar > .container .navbar-brand,
- .navbar > .container-fluid .navbar-brand {
- margin-left: -15px;
- }
-}
-.navbar-toggle {
- position: relative;
- float: right;
- padding: 9px 10px;
- margin-top: 8px;
- margin-right: 15px;
- margin-bottom: 8px;
- background-color: transparent;
- background-image: none;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.navbar-toggle:focus {
- outline: 0;
-}
-.navbar-toggle .icon-bar {
- display: block;
- width: 22px;
- height: 2px;
- border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
- margin-top: 4px;
-}
-@media (min-width: 768px) {
- .navbar-toggle {
- display: none;
- }
-}
-.navbar-nav {
- margin: 7.5px -15px;
-}
-.navbar-nav > li > a {
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: 20px;
-}
-@media (max-width: 767px) {
- .navbar-nav .open .dropdown-menu {
- position: static;
- float: none;
- width: auto;
- margin-top: 0;
- background-color: transparent;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
- .navbar-nav .open .dropdown-menu > li > a,
- .navbar-nav .open .dropdown-menu .dropdown-header {
- padding: 5px 15px 5px 25px;
- }
- .navbar-nav .open .dropdown-menu > li > a {
- line-height: 20px;
- }
- .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-nav .open .dropdown-menu > li > a:focus {
- background-image: none;
- }
-}
-@media (min-width: 768px) {
- .navbar-nav {
- float: left;
- margin: 0;
- }
- .navbar-nav > li {
- float: left;
- }
- .navbar-nav > li > a {
- padding-top: 15px;
- padding-bottom: 15px;
- }
-}
-.navbar-form {
- padding: 10px 15px;
- margin-top: 8px;
- margin-right: -15px;
- margin-bottom: 8px;
- margin-left: -15px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-}
-@media (min-width: 768px) {
- .navbar-form .form-group {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .form-control {
- display: inline-block;
- width: auto;
- vertical-align: middle;
- }
- .navbar-form .form-control-static {
- display: inline-block;
- }
- .navbar-form .input-group {
- display: inline-table;
- vertical-align: middle;
- }
- .navbar-form .input-group .input-group-addon,
- .navbar-form .input-group .input-group-btn,
- .navbar-form .input-group .form-control {
- width: auto;
- }
- .navbar-form .input-group > .form-control {
- width: 100%;
- }
- .navbar-form .control-label {
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .radio,
- .navbar-form .checkbox {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 0;
- vertical-align: middle;
- }
- .navbar-form .radio label,
- .navbar-form .checkbox label {
- padding-left: 0;
- }
- .navbar-form .radio input[type="radio"],
- .navbar-form .checkbox input[type="checkbox"] {
- position: relative;
- margin-left: 0;
- }
- .navbar-form .has-feedback .form-control-feedback {
- top: 0;
- }
-}
-@media (max-width: 767px) {
- .navbar-form .form-group {
- margin-bottom: 5px;
- }
- .navbar-form .form-group:last-child {
- margin-bottom: 0;
- }
-}
-@media (min-width: 768px) {
- .navbar-form {
- width: auto;
- padding-top: 0;
- padding-bottom: 0;
- margin-right: 0;
- margin-left: 0;
- border: 0;
- -webkit-box-shadow: none;
- box-shadow: none;
- }
-}
-.navbar-nav > li > .dropdown-menu {
- margin-top: 0;
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
- margin-bottom: 0;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
-}
-.navbar-btn {
- margin-top: 8px;
- margin-bottom: 8px;
-}
-.navbar-btn.btn-sm {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-.navbar-btn.btn-xs {
- margin-top: 14px;
- margin-bottom: 14px;
-}
-.navbar-text {
- margin-top: 15px;
- margin-bottom: 15px;
-}
-@media (min-width: 768px) {
- .navbar-text {
- float: left;
- margin-right: 15px;
- margin-left: 15px;
- }
-}
-@media (min-width: 768px) {
- .navbar-left {
- float: left !important;
- }
- .navbar-right {
- float: right !important;
- margin-right: -15px;
- }
- .navbar-right ~ .navbar-right {
- margin-right: 0;
- }
-}
-.navbar-default {
- background-color: #f8f8f8;
- border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
- color: #777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
- color: #5e5e5e;
- background-color: transparent;
-}
-.navbar-default .navbar-text {
- color: #777;
-}
-.navbar-default .navbar-nav > li > a {
- color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
- color: #333;
- background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
- color: #555;
- background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
- color: #ccc;
- background-color: transparent;
-}
-.navbar-default .navbar-toggle {
- border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
- background-color: #ddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
- background-color: #888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
- border-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
- color: #555;
- background-color: #e7e7e7;
-}
-@media (max-width: 767px) {
- .navbar-default .navbar-nav .open .dropdown-menu > li > a {
- color: #777;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #333;
- background-color: transparent;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #555;
- background-color: #e7e7e7;
- }
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #ccc;
- background-color: transparent;
- }
-}
-.navbar-default .navbar-link {
- color: #777;
-}
-.navbar-default .navbar-link:hover {
- color: #333;
-}
-.navbar-default .btn-link {
- color: #777;
-}
-.navbar-default .btn-link:hover,
-.navbar-default .btn-link:focus {
- color: #333;
-}
-.navbar-default .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-default .btn-link:hover,
-.navbar-default .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-default .btn-link:focus {
- color: #ccc;
-}
-.navbar-inverse {
- background-color: #222;
- border-color: #080808;
-}
-.navbar-inverse .navbar-brand {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-brand:hover,
-.navbar-inverse .navbar-brand:focus {
- color: #fff;
- background-color: transparent;
-}
-.navbar-inverse .navbar-text {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
- color: #fff;
- background-color: transparent;
-}
-.navbar-inverse .navbar-nav > .active > a,
-.navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
- color: #fff;
- background-color: #080808;
-}
-.navbar-inverse .navbar-nav > .disabled > a,
-.navbar-inverse .navbar-nav > .disabled > a:hover,
-.navbar-inverse .navbar-nav > .disabled > a:focus {
- color: #444;
- background-color: transparent;
-}
-.navbar-inverse .navbar-toggle {
- border-color: #333;
-}
-.navbar-inverse .navbar-toggle:hover,
-.navbar-inverse .navbar-toggle:focus {
- background-color: #333;
-}
-.navbar-inverse .navbar-toggle .icon-bar {
- background-color: #fff;
-}
-.navbar-inverse .navbar-collapse,
-.navbar-inverse .navbar-form {
- border-color: #101010;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .open > a:hover,
-.navbar-inverse .navbar-nav > .open > a:focus {
- color: #fff;
- background-color: #080808;
-}
-@media (max-width: 767px) {
- .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
- border-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
- background-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
- color: #9d9d9d;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
- color: #fff;
- background-color: transparent;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
- color: #fff;
- background-color: #080808;
- }
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
- .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
- color: #444;
- background-color: transparent;
- }
-}
-.navbar-inverse .navbar-link {
- color: #9d9d9d;
-}
-.navbar-inverse .navbar-link:hover {
- color: #fff;
-}
-.navbar-inverse .btn-link {
- color: #9d9d9d;
-}
-.navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link:focus {
- color: #fff;
-}
-.navbar-inverse .btn-link[disabled]:hover,
-fieldset[disabled] .navbar-inverse .btn-link:hover,
-.navbar-inverse .btn-link[disabled]:focus,
-fieldset[disabled] .navbar-inverse .btn-link:focus {
- color: #444;
-}
-.breadcrumb {
- padding: 8px 15px;
- margin-bottom: 20px;
- list-style: none;
- background-color: #f5f5f5;
- border-radius: 4px;
-}
-.breadcrumb > li {
- display: inline-block;
-}
-.breadcrumb > li + li:before {
- padding: 0 5px;
- color: #ccc;
- content: "/\00a0";
-}
-.breadcrumb > .active {
- color: #777;
-}
-.pagination {
- display: inline-block;
- padding-left: 0;
- margin: 20px 0;
- border-radius: 4px;
-}
-.pagination > li {
- display: inline;
-}
-.pagination > li > a,
-.pagination > li > span {
- position: relative;
- float: left;
- padding: 6px 12px;
- margin-left: -1px;
- line-height: 1.42857143;
- color: #337ab7;
- text-decoration: none;
- background-color: #fff;
- border: 1px solid #ddd;
-}
-.pagination > li:first-child > a,
-.pagination > li:first-child > span {
- margin-left: 0;
- border-top-left-radius: 4px;
- border-bottom-left-radius: 4px;
-}
-.pagination > li:last-child > a,
-.pagination > li:last-child > span {
- border-top-right-radius: 4px;
- border-bottom-right-radius: 4px;
-}
-.pagination > li > a:hover,
-.pagination > li > span:hover,
-.pagination > li > a:focus,
-.pagination > li > span:focus {
- z-index: 2;
- color: #23527c;
- background-color: #eee;
- border-color: #ddd;
-}
-.pagination > .active > a,
-.pagination > .active > span,
-.pagination > .active > a:hover,
-.pagination > .active > span:hover,
-.pagination > .active > a:focus,
-.pagination > .active > span:focus {
- z-index: 3;
- color: #fff;
- cursor: default;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.pagination > .disabled > span,
-.pagination > .disabled > span:hover,
-.pagination > .disabled > span:focus,
-.pagination > .disabled > a,
-.pagination > .disabled > a:hover,
-.pagination > .disabled > a:focus {
- color: #777;
- cursor: not-allowed;
- background-color: #fff;
- border-color: #ddd;
-}
-.pagination-lg > li > a,
-.pagination-lg > li > span {
- padding: 10px 16px;
- font-size: 18px;
- line-height: 1.3333333;
-}
-.pagination-lg > li:first-child > a,
-.pagination-lg > li:first-child > span {
- border-top-left-radius: 6px;
- border-bottom-left-radius: 6px;
-}
-.pagination-lg > li:last-child > a,
-.pagination-lg > li:last-child > span {
- border-top-right-radius: 6px;
- border-bottom-right-radius: 6px;
-}
-.pagination-sm > li > a,
-.pagination-sm > li > span {
- padding: 5px 10px;
- font-size: 12px;
- line-height: 1.5;
-}
-.pagination-sm > li:first-child > a,
-.pagination-sm > li:first-child > span {
- border-top-left-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.pagination-sm > li:last-child > a,
-.pagination-sm > li:last-child > span {
- border-top-right-radius: 3px;
- border-bottom-right-radius: 3px;
-}
-.pager {
- padding-left: 0;
- margin: 20px 0;
- text-align: center;
- list-style: none;
-}
-.pager li {
- display: inline;
-}
-.pager li > a,
-.pager li > span {
- display: inline-block;
- padding: 5px 14px;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 15px;
-}
-.pager li > a:hover,
-.pager li > a:focus {
- text-decoration: none;
- background-color: #eee;
-}
-.pager .next > a,
-.pager .next > span {
- float: right;
-}
-.pager .previous > a,
-.pager .previous > span {
- float: left;
-}
-.pager .disabled > a,
-.pager .disabled > a:hover,
-.pager .disabled > a:focus,
-.pager .disabled > span {
- color: #777;
- cursor: not-allowed;
- background-color: #fff;
-}
-.label {
- display: inline;
- padding: .2em .6em .3em;
- font-size: 75%;
- font-weight: bold;
- line-height: 1;
- color: #fff;
- text-align: center;
- white-space: nowrap;
- vertical-align: baseline;
- border-radius: .25em;
-}
-a.label:hover,
-a.label:focus {
- color: #fff;
- text-decoration: none;
- cursor: pointer;
-}
-.label:empty {
- display: none;
-}
-.btn .label {
- position: relative;
- top: -1px;
-}
-.label-default {
- background-color: #777;
-}
-.label-default[href]:hover,
-.label-default[href]:focus {
- background-color: #5e5e5e;
-}
-.label-primary {
- background-color: #337ab7;
-}
-.label-primary[href]:hover,
-.label-primary[href]:focus {
- background-color: #286090;
-}
-.label-success {
- background-color: #5cb85c;
-}
-.label-success[href]:hover,
-.label-success[href]:focus {
- background-color: #449d44;
-}
-.label-info {
- background-color: #5bc0de;
-}
-.label-info[href]:hover,
-.label-info[href]:focus {
- background-color: #31b0d5;
-}
-.label-warning {
- background-color: #f0ad4e;
-}
-.label-warning[href]:hover,
-.label-warning[href]:focus {
- background-color: #ec971f;
-}
-.label-danger {
- background-color: #d9534f;
-}
-.label-danger[href]:hover,
-.label-danger[href]:focus {
- background-color: #c9302c;
-}
-.badge {
- display: inline-block;
- min-width: 10px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
- line-height: 1;
- color: #fff;
- text-align: center;
- white-space: nowrap;
- vertical-align: middle;
- background-color: #777;
- border-radius: 10px;
-}
-.badge:empty {
- display: none;
-}
-.btn .badge {
- position: relative;
- top: -1px;
-}
-.btn-xs .badge,
-.btn-group-xs > .btn .badge {
- top: 0;
- padding: 1px 5px;
-}
-a.badge:hover,
-a.badge:focus {
- color: #fff;
- text-decoration: none;
- cursor: pointer;
-}
-.list-group-item.active > .badge,
-.nav-pills > .active > a > .badge {
- color: #337ab7;
- background-color: #fff;
-}
-.list-group-item > .badge {
- float: right;
-}
-.list-group-item > .badge + .badge {
- margin-right: 5px;
-}
-.nav-pills > li > a > .badge {
- margin-left: 3px;
-}
-.jumbotron {
- padding-top: 30px;
- padding-bottom: 30px;
- margin-bottom: 30px;
- color: inherit;
- background-color: #eee;
-}
-.jumbotron h1,
-.jumbotron .h1 {
- color: inherit;
-}
-.jumbotron p {
- margin-bottom: 15px;
- font-size: 21px;
- font-weight: 200;
-}
-.jumbotron > hr {
- border-top-color: #d5d5d5;
-}
-.container .jumbotron,
-.container-fluid .jumbotron {
- padding-right: 15px;
- padding-left: 15px;
- border-radius: 6px;
-}
-.jumbotron .container {
- max-width: 100%;
-}
-@media screen and (min-width: 768px) {
- .jumbotron {
- padding-top: 48px;
- padding-bottom: 48px;
- }
- .container .jumbotron,
- .container-fluid .jumbotron {
- padding-right: 60px;
- padding-left: 60px;
- }
- .jumbotron h1,
- .jumbotron .h1 {
- font-size: 63px;
- }
-}
-.thumbnail {
- display: block;
- padding: 4px;
- margin-bottom: 20px;
- line-height: 1.42857143;
- background-color: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
- -webkit-transition: border .2s ease-in-out;
- -o-transition: border .2s ease-in-out;
- transition: border .2s ease-in-out;
-}
-.thumbnail > img,
-.thumbnail a > img {
- margin-right: auto;
- margin-left: auto;
-}
-a.thumbnail:hover,
-a.thumbnail:focus,
-a.thumbnail.active {
- border-color: #337ab7;
-}
-.thumbnail .caption {
- padding: 9px;
- color: #333;
-}
-.alert {
- padding: 15px;
- margin-bottom: 20px;
- border: 1px solid transparent;
- border-radius: 4px;
-}
-.alert h4 {
- margin-top: 0;
- color: inherit;
-}
-.alert .alert-link {
- font-weight: bold;
-}
-.alert > p,
-.alert > ul {
- margin-bottom: 0;
-}
-.alert > p + p {
- margin-top: 5px;
-}
-.alert-dismissable,
-.alert-dismissible {
- padding-right: 35px;
-}
-.alert-dismissable .close,
-.alert-dismissible .close {
- position: relative;
- top: -2px;
- right: -21px;
- color: inherit;
-}
-.alert-success {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6;
-}
-.alert-success hr {
- border-top-color: #c9e2b3;
-}
-.alert-success .alert-link {
- color: #2b542c;
-}
-.alert-info {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1;
-}
-.alert-info hr {
- border-top-color: #a6e1ec;
-}
-.alert-info .alert-link {
- color: #245269;
-}
-.alert-warning {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc;
-}
-.alert-warning hr {
- border-top-color: #f7e1b5;
-}
-.alert-warning .alert-link {
- color: #66512c;
-}
-.alert-danger {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1;
-}
-.alert-danger hr {
- border-top-color: #e4b9c0;
-}
-.alert-danger .alert-link {
- color: #843534;
-}
-@-webkit-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
-}
-@-o-keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
-}
-@keyframes progress-bar-stripes {
- from {
- background-position: 40px 0;
- }
- to {
- background-position: 0 0;
- }
-}
-.progress {
- height: 20px;
- margin-bottom: 20px;
- overflow: hidden;
- background-color: #f5f5f5;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
-}
-.progress-bar {
- float: left;
- width: 0;
- height: 100%;
- font-size: 12px;
- line-height: 20px;
- color: #fff;
- text-align: center;
- background-color: #337ab7;
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
- -webkit-transition: width .6s ease;
- -o-transition: width .6s ease;
- transition: width .6s ease;
-}
-.progress-striped .progress-bar,
-.progress-bar-striped {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- -webkit-background-size: 40px 40px;
- background-size: 40px 40px;
-}
-.progress.active .progress-bar,
-.progress-bar.active {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
-}
-.progress-bar-success {
- background-color: #5cb85c;
-}
-.progress-striped .progress-bar-success {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-info {
- background-color: #5bc0de;
-}
-.progress-striped .progress-bar-info {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-warning {
- background-color: #f0ad4e;
-}
-.progress-striped .progress-bar-warning {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.progress-bar-danger {
- background-color: #d9534f;
-}
-.progress-striped .progress-bar-danger {
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.media {
- margin-top: 15px;
-}
-.media:first-child {
- margin-top: 0;
-}
-.media,
-.media-body {
- overflow: hidden;
- zoom: 1;
-}
-.media-body {
- width: 10000px;
-}
-.media-object {
- display: block;
-}
-.media-object.img-thumbnail {
- max-width: none;
-}
-.media-right,
-.media > .pull-right {
- padding-left: 10px;
-}
-.media-left,
-.media > .pull-left {
- padding-right: 10px;
-}
-.media-left,
-.media-right,
-.media-body {
- display: table-cell;
- vertical-align: top;
-}
-.media-middle {
- vertical-align: middle;
-}
-.media-bottom {
- vertical-align: bottom;
-}
-.media-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-.media-list {
- padding-left: 0;
- list-style: none;
-}
-.list-group {
- padding-left: 0;
- margin-bottom: 20px;
-}
-.list-group-item {
- position: relative;
- display: block;
- padding: 10px 15px;
- margin-bottom: -1px;
- background-color: #fff;
- border: 1px solid #ddd;
-}
-.list-group-item:first-child {
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
-}
-.list-group-item:last-child {
- margin-bottom: 0;
- border-bottom-right-radius: 4px;
- border-bottom-left-radius: 4px;
-}
-a.list-group-item,
-button.list-group-item {
- color: #555;
-}
-a.list-group-item .list-group-item-heading,
-button.list-group-item .list-group-item-heading {
- color: #333;
-}
-a.list-group-item:hover,
-button.list-group-item:hover,
-a.list-group-item:focus,
-button.list-group-item:focus {
- color: #555;
- text-decoration: none;
- background-color: #f5f5f5;
-}
-button.list-group-item {
- width: 100%;
- text-align: left;
-}
-.list-group-item.disabled,
-.list-group-item.disabled:hover,
-.list-group-item.disabled:focus {
- color: #777;
- cursor: not-allowed;
- background-color: #eee;
-}
-.list-group-item.disabled .list-group-item-heading,
-.list-group-item.disabled:hover .list-group-item-heading,
-.list-group-item.disabled:focus .list-group-item-heading {
- color: inherit;
-}
-.list-group-item.disabled .list-group-item-text,
-.list-group-item.disabled:hover .list-group-item-text,
-.list-group-item.disabled:focus .list-group-item-text {
- color: #777;
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
- z-index: 2;
- color: #fff;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.list-group-item.active .list-group-item-heading,
-.list-group-item.active:hover .list-group-item-heading,
-.list-group-item.active:focus .list-group-item-heading,
-.list-group-item.active .list-group-item-heading > small,
-.list-group-item.active:hover .list-group-item-heading > small,
-.list-group-item.active:focus .list-group-item-heading > small,
-.list-group-item.active .list-group-item-heading > .small,
-.list-group-item.active:hover .list-group-item-heading > .small,
-.list-group-item.active:focus .list-group-item-heading > .small {
- color: inherit;
-}
-.list-group-item.active .list-group-item-text,
-.list-group-item.active:hover .list-group-item-text,
-.list-group-item.active:focus .list-group-item-text {
- color: #c7ddef;
-}
-.list-group-item-success {
- color: #3c763d;
- background-color: #dff0d8;
-}
-a.list-group-item-success,
-button.list-group-item-success {
- color: #3c763d;
-}
-a.list-group-item-success .list-group-item-heading,
-button.list-group-item-success .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-success:hover,
-button.list-group-item-success:hover,
-a.list-group-item-success:focus,
-button.list-group-item-success:focus {
- color: #3c763d;
- background-color: #d0e9c6;
-}
-a.list-group-item-success.active,
-button.list-group-item-success.active,
-a.list-group-item-success.active:hover,
-button.list-group-item-success.active:hover,
-a.list-group-item-success.active:focus,
-button.list-group-item-success.active:focus {
- color: #fff;
- background-color: #3c763d;
- border-color: #3c763d;
-}
-.list-group-item-info {
- color: #31708f;
- background-color: #d9edf7;
-}
-a.list-group-item-info,
-button.list-group-item-info {
- color: #31708f;
-}
-a.list-group-item-info .list-group-item-heading,
-button.list-group-item-info .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-info:hover,
-button.list-group-item-info:hover,
-a.list-group-item-info:focus,
-button.list-group-item-info:focus {
- color: #31708f;
- background-color: #c4e3f3;
-}
-a.list-group-item-info.active,
-button.list-group-item-info.active,
-a.list-group-item-info.active:hover,
-button.list-group-item-info.active:hover,
-a.list-group-item-info.active:focus,
-button.list-group-item-info.active:focus {
- color: #fff;
- background-color: #31708f;
- border-color: #31708f;
-}
-.list-group-item-warning {
- color: #8a6d3b;
- background-color: #fcf8e3;
-}
-a.list-group-item-warning,
-button.list-group-item-warning {
- color: #8a6d3b;
-}
-a.list-group-item-warning .list-group-item-heading,
-button.list-group-item-warning .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-warning:hover,
-button.list-group-item-warning:hover,
-a.list-group-item-warning:focus,
-button.list-group-item-warning:focus {
- color: #8a6d3b;
- background-color: #faf2cc;
-}
-a.list-group-item-warning.active,
-button.list-group-item-warning.active,
-a.list-group-item-warning.active:hover,
-button.list-group-item-warning.active:hover,
-a.list-group-item-warning.active:focus,
-button.list-group-item-warning.active:focus {
- color: #fff;
- background-color: #8a6d3b;
- border-color: #8a6d3b;
-}
-.list-group-item-danger {
- color: #a94442;
- background-color: #f2dede;
-}
-a.list-group-item-danger,
-button.list-group-item-danger {
- color: #a94442;
-}
-a.list-group-item-danger .list-group-item-heading,
-button.list-group-item-danger .list-group-item-heading {
- color: inherit;
-}
-a.list-group-item-danger:hover,
-button.list-group-item-danger:hover,
-a.list-group-item-danger:focus,
-button.list-group-item-danger:focus {
- color: #a94442;
- background-color: #ebcccc;
-}
-a.list-group-item-danger.active,
-button.list-group-item-danger.active,
-a.list-group-item-danger.active:hover,
-button.list-group-item-danger.active:hover,
-a.list-group-item-danger.active:focus,
-button.list-group-item-danger.active:focus {
- color: #fff;
- background-color: #a94442;
- border-color: #a94442;
-}
-.list-group-item-heading {
- margin-top: 0;
- margin-bottom: 5px;
-}
-.list-group-item-text {
- margin-bottom: 0;
- line-height: 1.3;
-}
-.panel {
- margin-bottom: 20px;
- background-color: #fff;
- border: 1px solid transparent;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
- box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
-}
-.panel-body {
- padding: 15px;
-}
-.panel-heading {
- padding: 10px 15px;
- border-bottom: 1px solid transparent;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel-heading > .dropdown .dropdown-toggle {
- color: inherit;
-}
-.panel-title {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 16px;
- color: inherit;
-}
-.panel-title > a,
-.panel-title > small,
-.panel-title > .small,
-.panel-title > small > a,
-.panel-title > .small > a {
- color: inherit;
-}
-.panel-footer {
- padding: 10px 15px;
- background-color: #f5f5f5;
- border-top: 1px solid #ddd;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .list-group,
-.panel > .panel-collapse > .list-group {
- margin-bottom: 0;
-}
-.panel > .list-group .list-group-item,
-.panel > .panel-collapse > .list-group .list-group-item {
- border-width: 1px 0;
- border-radius: 0;
-}
-.panel > .list-group:first-child .list-group-item:first-child,
-.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
- border-top: 0;
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .list-group:last-child .list-group-item:last-child,
-.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
- border-bottom: 0;
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
- border-top-left-radius: 0;
- border-top-right-radius: 0;
-}
-.panel-heading + .list-group .list-group-item:first-child {
- border-top-width: 0;
-}
-.list-group + .panel-footer {
- border-top-width: 0;
-}
-.panel > .table,
-.panel > .table-responsive > .table,
-.panel > .panel-collapse > .table {
- margin-bottom: 0;
-}
-.panel > .table caption,
-.panel > .table-responsive > .table caption,
-.panel > .panel-collapse > .table caption {
- padding-right: 15px;
- padding-left: 15px;
-}
-.panel > .table:first-child,
-.panel > .table-responsive:first-child > .table:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
- border-top-left-radius: 3px;
- border-top-right-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
- border-top-left-radius: 3px;
-}
-.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
-.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
-.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
-.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
- border-top-right-radius: 3px;
-}
-.panel > .table:last-child,
-.panel > .table-responsive:last-child > .table:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
- border-bottom-right-radius: 3px;
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
- border-bottom-left-radius: 3px;
-}
-.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
-.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
-.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
-.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
- border-bottom-right-radius: 3px;
-}
-.panel > .panel-body + .table,
-.panel > .panel-body + .table-responsive,
-.panel > .table + .panel-body,
-.panel > .table-responsive + .panel-body {
- border-top: 1px solid #ddd;
-}
-.panel > .table > tbody:first-child > tr:first-child th,
-.panel > .table > tbody:first-child > tr:first-child td {
- border-top: 0;
-}
-.panel > .table-bordered,
-.panel > .table-responsive > .table-bordered {
- border: 0;
-}
-.panel > .table-bordered > thead > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
-.panel > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
-.panel > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-.panel > .table-bordered > thead > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
-.panel > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
-.panel > .table-bordered > tfoot > tr > td:first-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
- border-left: 0;
-}
-.panel > .table-bordered > thead > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
-.panel > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
-.panel > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-.panel > .table-bordered > thead > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
-.panel > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
-.panel > .table-bordered > tfoot > tr > td:last-child,
-.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
- border-right: 0;
-}
-.panel > .table-bordered > thead > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
-.panel > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
-.panel > .table-bordered > thead > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
-.panel > .table-bordered > tbody > tr:first-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
- border-bottom: 0;
-}
-.panel > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
-.panel > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
-.panel > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
-.panel > .table-bordered > tfoot > tr:last-child > th,
-.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
- border-bottom: 0;
-}
-.panel > .table-responsive {
- margin-bottom: 0;
- border: 0;
-}
-.panel-group {
- margin-bottom: 20px;
-}
-.panel-group .panel {
- margin-bottom: 0;
- border-radius: 4px;
-}
-.panel-group .panel + .panel {
- margin-top: 5px;
-}
-.panel-group .panel-heading {
- border-bottom: 0;
-}
-.panel-group .panel-heading + .panel-collapse > .panel-body,
-.panel-group .panel-heading + .panel-collapse > .list-group {
- border-top: 1px solid #ddd;
-}
-.panel-group .panel-footer {
- border-top: 0;
-}
-.panel-group .panel-footer + .panel-collapse .panel-body {
- border-bottom: 1px solid #ddd;
-}
-.panel-default {
- border-color: #ddd;
-}
-.panel-default > .panel-heading {
- color: #333;
- background-color: #f5f5f5;
- border-color: #ddd;
-}
-.panel-default > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #ddd;
-}
-.panel-default > .panel-heading .badge {
- color: #f5f5f5;
- background-color: #333;
-}
-.panel-default > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #ddd;
-}
-.panel-primary {
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading {
- color: #fff;
- background-color: #337ab7;
- border-color: #337ab7;
-}
-.panel-primary > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #337ab7;
-}
-.panel-primary > .panel-heading .badge {
- color: #337ab7;
- background-color: #fff;
-}
-.panel-primary > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #337ab7;
-}
-.panel-success {
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading {
- color: #3c763d;
- background-color: #dff0d8;
- border-color: #d6e9c6;
-}
-.panel-success > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #d6e9c6;
-}
-.panel-success > .panel-heading .badge {
- color: #dff0d8;
- background-color: #3c763d;
-}
-.panel-success > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #d6e9c6;
-}
-.panel-info {
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading {
- color: #31708f;
- background-color: #d9edf7;
- border-color: #bce8f1;
-}
-.panel-info > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #bce8f1;
-}
-.panel-info > .panel-heading .badge {
- color: #d9edf7;
- background-color: #31708f;
-}
-.panel-info > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #bce8f1;
-}
-.panel-warning {
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc;
-}
-.panel-warning > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #faebcc;
-}
-.panel-warning > .panel-heading .badge {
- color: #fcf8e3;
- background-color: #8a6d3b;
-}
-.panel-warning > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #faebcc;
-}
-.panel-danger {
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading {
- color: #a94442;
- background-color: #f2dede;
- border-color: #ebccd1;
-}
-.panel-danger > .panel-heading + .panel-collapse > .panel-body {
- border-top-color: #ebccd1;
-}
-.panel-danger > .panel-heading .badge {
- color: #f2dede;
- background-color: #a94442;
-}
-.panel-danger > .panel-footer + .panel-collapse > .panel-body {
- border-bottom-color: #ebccd1;
-}
-.embed-responsive {
- position: relative;
- display: block;
- height: 0;
- padding: 0;
- overflow: hidden;
-}
-.embed-responsive .embed-responsive-item,
-.embed-responsive iframe,
-.embed-responsive embed,
-.embed-responsive object,
-.embed-responsive video {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: 0;
-}
-.embed-responsive-16by9 {
- padding-bottom: 56.25%;
-}
-.embed-responsive-4by3 {
- padding-bottom: 75%;
-}
-.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #e3e3e3;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
-}
-.well blockquote {
- border-color: #ddd;
- border-color: rgba(0, 0, 0, .15);
-}
-.well-lg {
- padding: 24px;
- border-radius: 6px;
-}
-.well-sm {
- padding: 9px;
- border-radius: 3px;
-}
-.close {
- float: right;
- font-size: 21px;
- font-weight: bold;
- line-height: 1;
- color: #000;
- text-shadow: 0 1px 0 #fff;
- filter: alpha(opacity=20);
- opacity: .2;
-}
-.close:hover,
-.close:focus {
- color: #000;
- text-decoration: none;
- cursor: pointer;
- filter: alpha(opacity=50);
- opacity: .5;
-}
-button.close {
- -webkit-appearance: none;
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
-}
-.modal-open {
- overflow: hidden;
-}
-.modal {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1050;
- display: none;
- overflow: hidden;
- -webkit-overflow-scrolling: touch;
- outline: 0;
-}
-.modal.fade .modal-dialog {
- -webkit-transition: -webkit-transform .3s ease-out;
- -o-transition: -o-transform .3s ease-out;
- transition: transform .3s ease-out;
- -webkit-transform: translate(0, -25%);
- -ms-transform: translate(0, -25%);
- -o-transform: translate(0, -25%);
- transform: translate(0, -25%);
-}
-.modal.in .modal-dialog {
- -webkit-transform: translate(0, 0);
- -ms-transform: translate(0, 0);
- -o-transform: translate(0, 0);
- transform: translate(0, 0);
-}
-.modal-open .modal {
- overflow-x: hidden;
- overflow-y: auto;
-}
-.modal-dialog {
- position: relative;
- width: auto;
- margin: 10px;
-}
-.modal-content {
- position: relative;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #999;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 6px;
- outline: 0;
- -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
- box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
-}
-.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- background-color: #000;
-}
-.modal-backdrop.fade {
- filter: alpha(opacity=0);
- opacity: 0;
-}
-.modal-backdrop.in {
- filter: alpha(opacity=50);
- opacity: .5;
-}
-.modal-header {
- padding: 15px;
- border-bottom: 1px solid #e5e5e5;
-}
-.modal-header .close {
- margin-top: -2px;
-}
-.modal-title {
- margin: 0;
- line-height: 1.42857143;
-}
-.modal-body {
- position: relative;
- padding: 15px;
-}
-.modal-footer {
- padding: 15px;
- text-align: right;
- border-top: 1px solid #e5e5e5;
-}
-.modal-footer .btn + .btn {
- margin-bottom: 0;
- margin-left: 5px;
-}
-.modal-footer .btn-group .btn + .btn {
- margin-left: -1px;
-}
-.modal-footer .btn-block + .btn-block {
- margin-left: 0;
-}
-.modal-scrollbar-measure {
- position: absolute;
- top: -9999px;
- width: 50px;
- height: 50px;
- overflow: scroll;
-}
-@media (min-width: 768px) {
- .modal-dialog {
- width: 600px;
- margin: 30px auto;
- }
- .modal-content {
- -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
- box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
- }
- .modal-sm {
- width: 300px;
- }
-}
-@media (min-width: 992px) {
- .modal-lg {
- width: 900px;
- }
-}
-.tooltip {
- position: absolute;
- z-index: 1070;
- display: block;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 12px;
- font-style: normal;
- font-weight: normal;
- line-height: 1.42857143;
- text-align: left;
- text-align: start;
- text-decoration: none;
- text-shadow: none;
- text-transform: none;
- letter-spacing: normal;
- word-break: normal;
- word-spacing: normal;
- word-wrap: normal;
- white-space: normal;
- filter: alpha(opacity=0);
- opacity: 0;
-
- line-break: auto;
-}
-.tooltip.in {
- filter: alpha(opacity=90);
- opacity: .9;
-}
-.tooltip.top {
- padding: 5px 0;
- margin-top: -3px;
-}
-.tooltip.right {
- padding: 0 5px;
- margin-left: 3px;
-}
-.tooltip.bottom {
- padding: 5px 0;
- margin-top: 3px;
-}
-.tooltip.left {
- padding: 0 5px;
- margin-left: -3px;
-}
-.tooltip-inner {
- max-width: 200px;
- padding: 3px 8px;
- color: #fff;
- text-align: center;
- background-color: #000;
- border-radius: 4px;
-}
-.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.tooltip.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000;
-}
-.tooltip.top-left .tooltip-arrow {
- right: 5px;
- bottom: 0;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000;
-}
-.tooltip.top-right .tooltip-arrow {
- bottom: 0;
- left: 5px;
- margin-bottom: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000;
-}
-.tooltip.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -5px;
- border-width: 5px 5px 5px 0;
- border-right-color: #000;
-}
-.tooltip.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -5px;
- border-width: 5px 0 5px 5px;
- border-left-color: #000;
-}
-.tooltip.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000;
-}
-.tooltip.bottom-left .tooltip-arrow {
- top: 0;
- right: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000;
-}
-.tooltip.bottom-right .tooltip-arrow {
- top: 0;
- left: 5px;
- margin-top: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000;
-}
-.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 1060;
- display: none;
- max-width: 276px;
- padding: 1px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- font-style: normal;
- font-weight: normal;
- line-height: 1.42857143;
- text-align: left;
- text-align: start;
- text-decoration: none;
- text-shadow: none;
- text-transform: none;
- letter-spacing: normal;
- word-break: normal;
- word-spacing: normal;
- word-wrap: normal;
- white-space: normal;
- background-color: #fff;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, .2);
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
-
- line-break: auto;
-}
-.popover.top {
- margin-top: -10px;
-}
-.popover.right {
- margin-left: 10px;
-}
-.popover.bottom {
- margin-top: 10px;
-}
-.popover.left {
- margin-left: -10px;
-}
-.popover-title {
- padding: 8px 14px;
- margin: 0;
- font-size: 14px;
- background-color: #f7f7f7;
- border-bottom: 1px solid #ebebeb;
- border-radius: 5px 5px 0 0;
-}
-.popover-content {
- padding: 9px 14px;
-}
-.popover > .arrow,
-.popover > .arrow:after {
- position: absolute;
- display: block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
-}
-.popover > .arrow {
- border-width: 11px;
-}
-.popover > .arrow:after {
- content: "";
- border-width: 10px;
-}
-.popover.top > .arrow {
- bottom: -11px;
- left: 50%;
- margin-left: -11px;
- border-top-color: #999;
- border-top-color: rgba(0, 0, 0, .25);
- border-bottom-width: 0;
-}
-.popover.top > .arrow:after {
- bottom: 1px;
- margin-left: -10px;
- content: " ";
- border-top-color: #fff;
- border-bottom-width: 0;
-}
-.popover.right > .arrow {
- top: 50%;
- left: -11px;
- margin-top: -11px;
- border-right-color: #999;
- border-right-color: rgba(0, 0, 0, .25);
- border-left-width: 0;
-}
-.popover.right > .arrow:after {
- bottom: -10px;
- left: 1px;
- content: " ";
- border-right-color: #fff;
- border-left-width: 0;
-}
-.popover.bottom > .arrow {
- top: -11px;
- left: 50%;
- margin-left: -11px;
- border-top-width: 0;
- border-bottom-color: #999;
- border-bottom-color: rgba(0, 0, 0, .25);
-}
-.popover.bottom > .arrow:after {
- top: 1px;
- margin-left: -10px;
- content: " ";
- border-top-width: 0;
- border-bottom-color: #fff;
-}
-.popover.left > .arrow {
- top: 50%;
- right: -11px;
- margin-top: -11px;
- border-right-width: 0;
- border-left-color: #999;
- border-left-color: rgba(0, 0, 0, .25);
-}
-.popover.left > .arrow:after {
- right: 1px;
- bottom: -10px;
- content: " ";
- border-right-width: 0;
- border-left-color: #fff;
-}
-.carousel {
- position: relative;
-}
-.carousel-inner {
- position: relative;
- width: 100%;
- overflow: hidden;
-}
-.carousel-inner > .item {
- position: relative;
- display: none;
- -webkit-transition: .6s ease-in-out left;
- -o-transition: .6s ease-in-out left;
- transition: .6s ease-in-out left;
-}
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
- line-height: 1;
-}
-@media all and (transform-3d), (-webkit-transform-3d) {
- .carousel-inner > .item {
- -webkit-transition: -webkit-transform .6s ease-in-out;
- -o-transition: -o-transform .6s ease-in-out;
- transition: transform .6s ease-in-out;
-
- -webkit-backface-visibility: hidden;
- backface-visibility: hidden;
- -webkit-perspective: 1000px;
- perspective: 1000px;
- }
- .carousel-inner > .item.next,
- .carousel-inner > .item.active.right {
- left: 0;
- -webkit-transform: translate3d(100%, 0, 0);
- transform: translate3d(100%, 0, 0);
- }
- .carousel-inner > .item.prev,
- .carousel-inner > .item.active.left {
- left: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
- }
- .carousel-inner > .item.next.left,
- .carousel-inner > .item.prev.right,
- .carousel-inner > .item.active {
- left: 0;
- -webkit-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- }
-}
-.carousel-inner > .active,
-.carousel-inner > .next,
-.carousel-inner > .prev {
- display: block;
-}
-.carousel-inner > .active {
- left: 0;
-}
-.carousel-inner > .next,
-.carousel-inner > .prev {
- position: absolute;
- top: 0;
- width: 100%;
-}
-.carousel-inner > .next {
- left: 100%;
-}
-.carousel-inner > .prev {
- left: -100%;
-}
-.carousel-inner > .next.left,
-.carousel-inner > .prev.right {
- left: 0;
-}
-.carousel-inner > .active.left {
- left: -100%;
-}
-.carousel-inner > .active.right {
- left: 100%;
-}
-.carousel-control {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- width: 15%;
- font-size: 20px;
- color: #fff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
- background-color: rgba(0, 0, 0, 0);
- filter: alpha(opacity=50);
- opacity: .5;
-}
-.carousel-control.left {
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
- background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
- background-repeat: repeat-x;
-}
-.carousel-control.right {
- right: 0;
- left: auto;
- background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
- background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
- background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
- background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
- background-repeat: repeat-x;
-}
-.carousel-control:hover,
-.carousel-control:focus {
- color: #fff;
- text-decoration: none;
- filter: alpha(opacity=90);
- outline: 0;
- opacity: .9;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-left,
-.carousel-control .glyphicon-chevron-right {
- position: absolute;
- top: 50%;
- z-index: 5;
- display: inline-block;
- margin-top: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .glyphicon-chevron-left {
- left: 50%;
- margin-left: -10px;
-}
-.carousel-control .icon-next,
-.carousel-control .glyphicon-chevron-right {
- right: 50%;
- margin-right: -10px;
-}
-.carousel-control .icon-prev,
-.carousel-control .icon-next {
- width: 20px;
- height: 20px;
- font-family: serif;
- line-height: 1;
-}
-.carousel-control .icon-prev:before {
- content: '\2039';
-}
-.carousel-control .icon-next:before {
- content: '\203a';
-}
-.carousel-indicators {
- position: absolute;
- bottom: 10px;
- left: 50%;
- z-index: 15;
- width: 60%;
- padding-left: 0;
- margin-left: -30%;
- text-align: center;
- list-style: none;
-}
-.carousel-indicators li {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 1px;
- text-indent: -999px;
- cursor: pointer;
- background-color: #000 \9;
- background-color: rgba(0, 0, 0, 0);
- border: 1px solid #fff;
- border-radius: 10px;
-}
-.carousel-indicators .active {
- width: 12px;
- height: 12px;
- margin: 0;
- background-color: #fff;
-}
-.carousel-caption {
- position: absolute;
- right: 15%;
- bottom: 20px;
- left: 15%;
- z-index: 10;
- padding-top: 20px;
- padding-bottom: 20px;
- color: #fff;
- text-align: center;
- text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
-}
-.carousel-caption .btn {
- text-shadow: none;
-}
-@media screen and (min-width: 768px) {
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-prev,
- .carousel-control .icon-next {
- width: 30px;
- height: 30px;
- margin-top: -10px;
- font-size: 30px;
- }
- .carousel-control .glyphicon-chevron-left,
- .carousel-control .icon-prev {
- margin-left: -10px;
- }
- .carousel-control .glyphicon-chevron-right,
- .carousel-control .icon-next {
- margin-right: -10px;
- }
- .carousel-caption {
- right: 20%;
- left: 20%;
- padding-bottom: 30px;
- }
- .carousel-indicators {
- bottom: 20px;
- }
-}
-.clearfix:before,
-.clearfix:after,
-.dl-horizontal dd:before,
-.dl-horizontal dd:after,
-.container:before,
-.container:after,
-.container-fluid:before,
-.container-fluid:after,
-.row:before,
-.row:after,
-.form-horizontal .form-group:before,
-.form-horizontal .form-group:after,
-.btn-toolbar:before,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:before,
-.btn-group-vertical > .btn-group:after,
-.nav:before,
-.nav:after,
-.navbar:before,
-.navbar:after,
-.navbar-header:before,
-.navbar-header:after,
-.navbar-collapse:before,
-.navbar-collapse:after,
-.pager:before,
-.pager:after,
-.panel-body:before,
-.panel-body:after,
-.modal-header:before,
-.modal-header:after,
-.modal-footer:before,
-.modal-footer:after {
- display: table;
- content: " ";
-}
-.clearfix:after,
-.dl-horizontal dd:after,
-.container:after,
-.container-fluid:after,
-.row:after,
-.form-horizontal .form-group:after,
-.btn-toolbar:after,
-.btn-group-vertical > .btn-group:after,
-.nav:after,
-.navbar:after,
-.navbar-header:after,
-.navbar-collapse:after,
-.pager:after,
-.panel-body:after,
-.modal-header:after,
-.modal-footer:after {
- clear: both;
-}
-.center-block {
- display: block;
- margin-right: auto;
- margin-left: auto;
-}
-.pull-right {
- float: right !important;
-}
-.pull-left {
- float: left !important;
-}
-.hide {
- display: none !important;
-}
-.show {
- display: block !important;
-}
-.invisible {
- visibility: hidden;
-}
-.text-hide {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
-}
-.hidden {
- display: none !important;
-}
-.affix {
- position: fixed;
-}
-@-ms-viewport {
- width: device-width;
-}
-.visible-xs,
-.visible-sm,
-.visible-md,
-.visible-lg {
- display: none !important;
-}
-.visible-xs-block,
-.visible-xs-inline,
-.visible-xs-inline-block,
-.visible-sm-block,
-.visible-sm-inline,
-.visible-sm-inline-block,
-.visible-md-block,
-.visible-md-inline,
-.visible-md-inline-block,
-.visible-lg-block,
-.visible-lg-inline,
-.visible-lg-inline-block {
- display: none !important;
-}
-@media (max-width: 767px) {
- .visible-xs {
- display: block !important;
- }
- table.visible-xs {
- display: table !important;
- }
- tr.visible-xs {
- display: table-row !important;
- }
- th.visible-xs,
- td.visible-xs {
- display: table-cell !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-block {
- display: block !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline {
- display: inline !important;
- }
-}
-@media (max-width: 767px) {
- .visible-xs-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm {
- display: block !important;
- }
- table.visible-sm {
- display: table !important;
- }
- tr.visible-sm {
- display: table-row !important;
- }
- th.visible-sm,
- td.visible-sm {
- display: table-cell !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-block {
- display: block !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline {
- display: inline !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .visible-sm-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md {
- display: block !important;
- }
- table.visible-md {
- display: table !important;
- }
- tr.visible-md {
- display: table-row !important;
- }
- th.visible-md,
- td.visible-md {
- display: table-cell !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-block {
- display: block !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline {
- display: inline !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .visible-md-inline-block {
- display: inline-block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg {
- display: block !important;
- }
- table.visible-lg {
- display: table !important;
- }
- tr.visible-lg {
- display: table-row !important;
- }
- th.visible-lg,
- td.visible-lg {
- display: table-cell !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-block {
- display: block !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline {
- display: inline !important;
- }
-}
-@media (min-width: 1200px) {
- .visible-lg-inline-block {
- display: inline-block !important;
- }
-}
-@media (max-width: 767px) {
- .hidden-xs {
- display: none !important;
- }
-}
-@media (min-width: 768px) and (max-width: 991px) {
- .hidden-sm {
- display: none !important;
- }
-}
-@media (min-width: 992px) and (max-width: 1199px) {
- .hidden-md {
- display: none !important;
- }
-}
-@media (min-width: 1200px) {
- .hidden-lg {
- display: none !important;
- }
-}
-.visible-print {
- display: none !important;
-}
-@media print {
- .visible-print {
- display: block !important;
- }
- table.visible-print {
- display: table !important;
- }
- tr.visible-print {
- display: table-row !important;
- }
- th.visible-print,
- td.visible-print {
- display: table-cell !important;
- }
-}
-.visible-print-block {
- display: none !important;
-}
-@media print {
- .visible-print-block {
- display: block !important;
- }
-}
-.visible-print-inline {
- display: none !important;
-}
-@media print {
- .visible-print-inline {
- display: inline !important;
- }
-}
-.visible-print-inline-block {
- display: none !important;
-}
-@media print {
- .visible-print-inline-block {
- display: inline-block !important;
- }
-}
-@media print {
- .hidden-print {
- display: none !important;
- }
-}
diff --git a/applib-targets/emscripten/html/css/style.css b/applib-targets/emscripten/html/css/style.css
deleted file mode 100644
index d63447b79b..0000000000
--- a/applib-targets/emscripten/html/css/style.css
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-@import url(https://fonts.googleapis.com/css?family=Bowlby+One+SC|Roboto:400,700,400italic);
-
-body {
- font: 16px/1.5 'Roboto', sans-serif;
-}
-
-body {
- padding-bottom: 2em;
-}
-
-body > .container:first-child > .row:first-child > div > p:first-child {
- display: none;
-}
-
-h1 {
- font-size: 3em;
-}
-
-h1 + blockquote {
- border: 0 none;
- max-width: 600px;
- text-align: center;
- margin: 0 auto 3em;
- padding: 0;
-}
-
-h1, h2 {
- font-family: "Bowlby One SC";
- overflow: hidden;
- text-align: center;
- margin: 2em 0 1em;
- text-transform: uppercase;
-}
-
-h1:before, h1:after, h2:before, h2:after {
- background-color: #ddd;
- content: "";
- display: inline-block;
- height: 1px;
- position: relative;
- vertical-align: middle;
- width: 50%;
-}
-
-h1:before, h2:before {
- right: 0.5em;
- margin-left: -50%;
-}
-
-h1:after, h2:after {
- left: 0.5em;
- margin-right: -50%;
-}
-
-h3 {
- margin: 1em 0 0.5em;
-}
-
-form {
- width: 100%;
-}
-
-label {
- width: 100%;
-}
-
-#githubForkLink {
- background: url(../img/forkBanner.png) no-repeat top right;
- position: absolute;
- display: block;
- width: 149px;
- height: 149px;
- top: 0;
- right: 0;
-
- /* Hide the text. */
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
-}
-
-table.table-compatibility>tbody>tr.standard {
- background-color: #d9edf7;
-}
-
-table.table-compatibility>tbody>tr.implemented {
- background-color: #dff0db;
-}
-
-table.table-compatibility>tbody>tr.partial {
- background-color: #ffffff;
-}
-
-table.table-compatibility>tbody>tr.planned {
- background-color: #fcf8e3;
-}
-
-table.table-compatibility>tbody>tr.not-planned {
- background-color: #f2dede
-}
diff --git a/applib-targets/emscripten/html/index.html b/applib-targets/emscripten/html/index.html
deleted file mode 100644
index a5587d7a8c..0000000000
--- a/applib-targets/emscripten/html/index.html
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-
-
-
- Simple Rocky Simulator
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/applib-targets/emscripten/html/js/controls.js b/applib-targets/emscripten/html/js/controls.js
deleted file mode 100644
index f628a06b2d..0000000000
--- a/applib-targets/emscripten/html/js/controls.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-window.addEventListener('load', function() {
- var form = document.getElementById("controls-form");
- form.addEventListener('submit', function(e) {
- e.preventDefault();
- });
-
- var timestampInput = document.getElementById("timestamp-input");
- timestampInput.addEventListener('change', function(e) {
- rockySimulator.setTime(Number(e.target.value) * 1000);
- });
-
- var timezoneSlider = document.getElementById("timezone-offset-input");
- var timezoneSpan = document.getElementById("timezone-offset-span");
- var timezoneSliderOnChange = function() {
- var offset = timezoneSlider.value;
- rockySimulator.setTimezoneOffset(offset);
- var sign;
- if (offset > 0) {
- sign = '+';
- } else if (offset < 0) {
- sign = '-';
- } else {
- sign = '';
- }
- var offsetMinutes = (offset % 60);
- var absOffsetHours = Math.abs((offset - offsetMinutes) / 60);
- var gmtText = 'GMT ' + sign + absOffsetHours;
- if (offsetMinutes) {
- var absOffsetMinutes = Math.abs(offsetMinutes);
- gmtText += ':' + (absOffsetMinutes < 10 ? '0' : '') + absOffsetMinutes;
- }
- timezoneSpan.innerText = gmtText;
- };
- timezoneSlider.addEventListener('change', timezoneSliderOnChange);
- timezoneSlider.addEventListener('input', timezoneSliderOnChange);
-
- // After loading the page, set the slider to the local TZ:
- var localTimezoneOffset = new Date().getTimezoneOffset();
- timezoneSlider.value = localTimezoneOffset;
- timezoneSliderOnChange();
-
- var time24hStyle = document.getElementById("24h-style-input");
- time24hStyle.addEventListener('change', function(e) {
- rockySimulator.set24hStyle(e.target.checked);
- });
-});
diff --git a/applib-targets/emscripten/html/js/tictoc.js b/applib-targets/emscripten/html/js/tictoc.js
deleted file mode 100644
index 12f87ee93e..0000000000
--- a/applib-targets/emscripten/html/js/tictoc.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var WatchfaceHelper = function(date) {
- function clockwiseRad(fraction) {
- // TODO: figure out if this is actually correct orientation for Canvas APIs
- return (1.5 - fraction) * 2 * Math.PI;
- }
-
- date = date || new Date();
- var secondFraction = date.getSeconds() / 60;
- var minuteFraction = (date.getMinutes()) / 60;
- var hourFraction = (date.getHours() % 12 + minuteFraction) / 12;
- this.secondAngle = clockwiseRad(secondFraction);
- this.minuteAngle = clockwiseRad(minuteFraction);
- this.hourAngle = clockwiseRad(hourFraction);
-};
-
-// book keeping so that we can easily animate the two hands for the watchface
-// .scale/.angle are updated by tween/event handler (see below)
-var renderState = {
- minute: {style: 'white', scale: 0.80, angle: 0},
- hour: {style: 'red', scale: 0.51, angle: 0}
-};
-
-// helper function for the draw function (see below)
-// extracted as a standalone function to satisfy common believe in efficient JS code
-// TODO: verify that this has actually any effect on byte code level
-var drawHand = function(handState, ctx, cx, cy, maxRadius) {
- ctx.lineWidth = 8;
- ctx.strokeStyle = handState.style;
- ctx.beginPath();
- ctx.moveTo(cx, cy);
- ctx.lineTo(cx + Math.sin(handState.angle) * handState.scale * maxRadius,
- cy + Math.cos(handState.angle) * handState.scale * maxRadius);
- ctx.stroke();
-};
-
-// the 'draw' event is being emitted after each call to rocky.requestDraw() but
-// at most once for each screen update, even if .requestDraw() is called frequently
-// the 'draw' event might also fire at other meaningful times (e.g. upon launch)
-rocky.on('draw', function(drawEvent) {
- var ctx = drawEvent.context;
- var w = ctx.canvas.unobstructedWidth;
- var h = ctx.canvas.unobstructedHeight;
-
- // clear canvas on each render
- ctx.fillStyle = 'black';
- ctx.fillRect(0, 0, ctx.canvas.clientWidth, ctx.canvas.clientHeight);
-
- // center point
- var cx = w / 2;
- var cy = h / 2;
- var maxRadius = Math.min(w, h - 2 * 10) / 2;
- drawHand(renderState.minute, ctx, cx, cy, maxRadius);
- drawHand(renderState.hour, ctx, cx, cy, maxRadius);
-
- // Draw a 12 o clock indicator
- drawHand({style: 'white', scale: 0, angle: 0}, ctx, cx, 8, 0);
- // overdraw center so that no white part of the minute hand is visible
- drawHand({style: 'red', scale: 0, angle: 0}, ctx, cx, cy, 0);
-});
-
-// listener is called on each full minute and once immediately after registration
-rocky.on('minutechange', function(e) {
- // WatchfaceHelper will later be extracted as npm module
- var wfh = new WatchfaceHelper(e.date);
- renderState.minute.angle = wfh.minuteAngle;
- renderState.hour.angle = wfh.hourAngle;
- rocky.requestDraw();
-});
-
-rocky.on('secondchange', function(e) {
- console.log(e.date.toLocaleTimeString() + ' ' + e.date.toLocaleDateString() +
- ' ' + e.date.toLocaleString());
-});
-
-console.log('TicToc launched');
diff --git a/applib-targets/emscripten/integration_tests/.gitignore b/applib-targets/emscripten/integration_tests/.gitignore
deleted file mode 100644
index 3c3629e647..0000000000
--- a/applib-targets/emscripten/integration_tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
diff --git a/applib-targets/emscripten/integration_tests/wscript b/applib-targets/emscripten/integration_tests/wscript
deleted file mode 100644
index 66dc94d6c3..0000000000
--- a/applib-targets/emscripten/integration_tests/wscript
+++ /dev/null
@@ -1,6 +0,0 @@
-def configure(conf):
- pass
-
-
-def build(bld):
- pass
diff --git a/applib-targets/emscripten/jerry_api.js b/applib-targets/emscripten/jerry_api.js
deleted file mode 100644
index 60481708d1..0000000000
--- a/applib-targets/emscripten/jerry_api.js
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Polyfill Number.isNaN
-if (Number.isNaN === undefined) {
- Number.isNaN = Number.isNaN || function(value) {
- return value !== value;
- }
-}
-
-var __jerryRefs = {
-
- // Jerryscript values (jerry_value_t) are integers which contain information
- // about some javascript value that has been internally created.
- // Create _objMap which will allow us to store and retrieve javascript values
- // from a jerry_value_t, and perform refcounts on values that we still need an
- // internal reference to, and avoid them from being garbage collected.
-
- _objMap : {},
- _nextObjectRef : 1,
- _findValue : function(value) {
- if (Number.isNaN(value)) {
- // Special case to find NaN
- for (var jerry_val in this._objMap) {
- if (Number.isNaN(this._objMap[jerry_val].value)) {
- return jerry_val;
- }
- }
- } else {
- for (var jerry_val in this._objMap) {
- if (this._objMap[jerry_val].value === value) {
- return jerry_val;
- }
- }
- }
- return 0;
- },
- _getEntry : function(jerry_value) {
- var entry = this._objMap[jerry_value];
- if (!entry) {
- throw new Error('Entry at ' + jerry_value + ' does not exist');
- }
- return entry;
- },
-
- reset: function() {
- this._objMap = {};
- this._nextObjectRef = 1;
- },
-
- // Given a jerry value, return the stored javascript value.
- get : function(jerry_value) {
- return this._getEntry(jerry_value).value;
- },
-
- // Given a javascript value, return a jerry value that refers to it.
- // If the value already exists in the map, increment its refcount and return
- // the jerry value.
- // Otherwise, create a new entry and return the jerry value.
- ref : function(value) {
- var jerry_value = this._findValue(value);
- if (jerry_value) {
- this._getEntry(jerry_value).refCount++;
- return jerry_value;
- }
-
- jerry_value = this._nextObjectRef++;
- this._objMap[jerry_value] = {
- refCount : 1,
- value : value,
- error : false,
- };
- // console.log('created entry ' + jerry_value + ' for ' + value + ' at ' + stackTrace());
- return jerry_value;
- },
-
- getRefCount : function(jerry_value) {
- return this._getEntry(jerry_value).refCount;
- },
-
- // Increase the reference count of the given jerry value
- acquire : function(jerry_value) {
- this._getEntry(jerry_value).refCount++;
- return jerry_value;
- },
-
- // Decrease the reference count of the given jerry value and delete it if
- // there are no more internal references.
- release : function(ref) {
- var entry = this._getEntry(ref);
- entry.refCount--;
-
- if (entry.refCount <= 0) {
- if (entry.freeCallbackPtr) {
- Module.ccall(
- 'emscripten_call_jerry_object_free_callback',
- null,
- ['number', 'number'],
- [entry.freeCallbackPtr, entry.nativeHandlePtr]);
- }
- // console.log('deleting ' + ref + ' at ' + stackTrace());
- delete this._objMap[ref];
- }
- },
-
- setError : function(ref, state) {
- this._getEntry(ref).error = state;
- },
-
- getError : function(ref) {
- return this._getEntry(ref).error;
- },
-
- setNativeHandle : function(jerryValue, nativeHandlePtr, freeCallbackPtr) {
- var entry = this._getEntry(jerryValue);
- entry.nativeHandlePtr = nativeHandlePtr;
- entry.freeCallbackPtr = freeCallbackPtr;
- },
-
- getNativeHandle : function(jerryValue) {
- return this._getEntry(jerryValue).nativeHandlePtr;
- }
-};
-
-function __jerry_create_external_function(function_ptr) {
- var f = function() {
- var nativeHandlerArgs = [
- function_ptr, /* the function pointer for us to call */
- __jerryRefs.ref(f), /* ref to the actual js function */
- __jerryRefs.ref(this) /* our this object */
- ];
-
- var numArgs = arguments.length;
- var jsRefs = [];
- for (var i = 0; i < numArgs; i++) {
- jsRefs.push(__jerryRefs.ref(arguments[i]));
- }
-
- // Arg 4 is a uint32 array of jerry_value_t arguments
- var jsArgs = Module._malloc(numArgs * 4);
- for (var i = 0; i < numArgs; i++) {
- Module.setValue(jsArgs + i*4, jsRefs[i], 'i32');
- }
- nativeHandlerArgs.push(jsArgs);
- nativeHandlerArgs.push(numArgs);
-
- // this is just the classy Emscripten calling. function_ptr is a C-pointer here
- // and we know the signature of the C function as it needs to follow
- var result_ref = Module.ccall('emscripten_call_jerry_function',
- 'number',
- ['number', 'number', 'number', 'number', 'number'],
- nativeHandlerArgs);
-
- // Free and release all js args
- Module._free(jsArgs);
- while (jsRefs.length > 0) {
- __jerryRefs.release(jsRefs.pop());
- }
-
- // decrease refcount of native handler arguments
- __jerryRefs.release(nativeHandlerArgs[1]); // jsFunctionRef
- __jerryRefs.release(nativeHandlerArgs[2]); // our this object
-
- // delete native handler arguments
- nativeHandlerArgs.length = 0;
-
- var result_val = __jerryRefs.get(result_ref);
- var has_error = __jerryRefs.getError(result_ref);
- __jerryRefs.release(result_ref);
-
- if (has_error) {
- throw result_val;
- }
-
- return result_val;
- };
-
- return __jerryRefs.ref(f);
-}
diff --git a/applib-targets/emscripten/shims.c b/applib-targets/emscripten/shims.c
deleted file mode 100644
index d2157f3e8a..0000000000
--- a/applib-targets/emscripten/shims.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-#include
-#include
-#include
-
-#include "util/heap.h"
-#include "util/size.h"
-#include "applib/app_logging.h"
-#include "applib/fonts/fonts.h"
-#include "applib/fonts/fonts_private.h"
-#include "applib/graphics/text_resources.h"
-#include "applib/rockyjs/api/rocky_api.h"
-#include "resource/resource_ids.auto.h"
-#include "font_resource_keys.auto.h"
-#include "font_resource_table.auto.h"
-
-#include "emscripten_app.h"
-#include "emscripten_graphics.h"
-#include "emscripten_resources.h"
-
-#include
-
-#define NUM_SYSTEM_FONTS (ARRAY_LENGTH(s_font_resource_keys))
-
-void *task_malloc(size_t bytes) {
- return malloc(bytes);
-}
-
-void *task_zalloc(size_t bytes) {
- void *ptr = malloc(bytes);
- if (ptr) {
- memset(ptr, 0, bytes);
- }
- return ptr;
-}
-
-void *task_zalloc_check(size_t bytes) {
- void *ptr = task_zalloc(bytes);
- if (!ptr) {
- wtf();
- }
- return ptr;
-}
-
-void *task_realloc(void *ptr, size_t bytes) {
- return realloc(ptr, bytes);
-}
-
-void task_free(void *ptr) {
- free(ptr);
-}
-
-void app_log(uint8_t log_level, const char* src_filename,
- int src_line_number, const char* fmt, ...) {
- printf("%s:%d", src_filename, src_line_number);
- va_list args;
- va_start(args, fmt);
- vprintf(fmt, args);
- va_end(args);
- printf("\n");
-}
-
-GContext* app_state_get_graphics_context() {
- return emx_graphics_get_gcontext();
-}
-
-bool app_state_get_text_perimeter_debugging_enabled(void) {
- return false;
-}
-
-Heap *app_state_get_heap(void) {
- return NULL;
-}
-
-GBitmap* app_state_legacy2_get_2bit_framebuffer(void) {
- return NULL;
-}
-
-bool heap_is_allocated(Heap* const heap, void* ptr) {
- return false;
-}
-
-void passert_failed(const char* filename, int line_number, const char* message, ...) {
- APP_LOG(LOG_LEVEL_ERROR, "ASSERTION FAILED: %s:%d", filename, line_number);
- EM_ASM_INT_V({ abort(); });
- while (1) ;
-}
-
-void passert_failed_no_message(const char* filename, int line_number) {
- passert_failed(filename, line_number, NULL);
- while (1) ;
-}
-
-void passert_failed_hashed_no_message(void) {
- EM_ASM_INT_V({ abort(); });
- while (1);
-}
-
-void passert_failed_hashed(uint32_t packed_loghash, ...) {
- EM_ASM_INT_V({ abort(); });
- while (1);
-}
-
-void pbl_log(uint8_t log_level, const char* src_filename,
- int src_line_number, const char* fmt, ...) {
- printf("%s:%d ", src_filename, src_line_number);
- va_list args;
- va_start(args, fmt);
- vprintf(fmt, args);
- va_end(args);
- printf("\n");
-}
-
-bool process_manager_compiled_with_legacy2_sdk(void) {
- return false;
-}
-
-ResAppNum sys_get_current_resource_num(void) {
- return 1; // 0 is system
-}
-
-size_t sys_resource_load_range(ResAppNum app_num, uint32_t id, uint32_t start_bytes,
- uint8_t *buffer, size_t num_bytes) {
- return emx_resources_read(app_num, id, start_bytes, buffer, num_bytes);
-}
-
-size_t sys_resource_size(ResAppNum app_num, uint32_t handle) {
- return emx_resources_get_size(app_num, handle);
-}
-
-GFont sys_font_get_system_font(const char *font_key) {
- static FontInfo s_system_fonts_info_table[NUM_SYSTEM_FONTS + 1] = {};
-
- for (int i = 0; i < (int) NUM_SYSTEM_FONTS; ++i) {
- if (0 == strcmp(font_key, s_font_resource_keys[i].key_name)) {
- FontInfo *fontinfo = &s_system_fonts_info_table[i];
- uint32_t resource = s_font_resource_keys[i].resource_id;
- // if the font has not been initialized yet
- if (!fontinfo->loaded) {
- if (!text_resources_init_font(SYSTEM_APP,
- resource, 0, &s_system_fonts_info_table[i])) {
- // Can't initialize the font for some reason
- return NULL;
- }
- }
- return &s_system_fonts_info_table[i];
- }
- }
-
- // Didn't find the given font, invalid key.
- return (GFont)NULL;
-}
-
-void sys_font_reload_font(FontInfo *fontinfo) {
- text_resources_init_font(fontinfo->base.app_num, fontinfo->base.resource_id,
- fontinfo->extension.resource_id, fontinfo);
-}
-
-uint32_t sys_resource_get_and_cache(ResAppNum app_num, uint32_t resource_id) {
- return resource_id;
-}
-
-bool sys_resource_is_valid(ResAppNum app_num, uint32_t resource_id) {
- return true;
-}
-
-ResourceCallbackHandle resource_watch(ResAppNum app_num,
- uint32_t resource_id,
- ResourceChangedCallback callback,
- void *data) {
- return NULL;
-}
-
-void applib_resource_munmap_or_free(void *bytes) {
- free(bytes);
-}
-
-void *applib_resource_mmap_or_load(ResAppNum app_num, uint32_t resource_id,
- size_t offset, size_t num_bytes, bool used_aligned) {
- if (num_bytes == 0) {
- return NULL;
- }
-
- uint8_t *result = malloc(num_bytes + (used_aligned ? 7 :0));
- if (!result
- || sys_resource_load_range(app_num, resource_id, offset, result, num_bytes) != num_bytes) {
- free(result);
- return NULL;
- }
- return result;
-}
-
-void wtf(void) {
- printf(">>>> WTF\n");
- EM_ASM_INT_V({ abort(); });
- while (1) ;
-}
-
-PebbleTask pebble_task_get_current(void) {
- return PebbleTask_App;
-}
-
-void app_event_loop(void) {
- // FIXME: PBL-43469 will need to remove this init from here when multiple
- // platform support is implemented.
- rocky_api_watchface_init();
- emx_app_event_loop();
-}
diff --git a/applib-targets/emscripten/tests/test_custom_resources.c b/applib-targets/emscripten/tests/test_custom_resources.c
deleted file mode 100644
index 35d475160e..0000000000
--- a/applib-targets/emscripten/tests/test_custom_resources.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "../../emscripten_resources.h"
-
-#include
-#include
-
-#define ASSERT(expr) \
- do { \
- if (!(expr)) { \
- printf("%s:%d " #expr " false\n", __FILE__, __LINE__); \
- exit(-1); \
- } \
- } while (0)
-
-
-#define CUSTOM_RES_GEN(x) \
- static uint32_t s_read_##x##_called = 0; \
- static uint32_t s_size_##x##_called = 0; \
- int custom_res_read_##x(int offset, uint8_t *buf, int num_bytes) { \
- uint32_t *buf_ptr = (uint32_t *)buf; \
- *buf_ptr = x; \
- s_read_##x##_called++; \
- return 4; \
- } \
- int custom_res_size_##x(void) { \
- s_size_##x##_called++; \
- return 4; \
- }
-
-CUSTOM_RES_GEN(1);
-CUSTOM_RES_GEN(2);
-CUSTOM_RES_GEN(3);
-CUSTOM_RES_GEN(4);
-
-int main(int argc, char **argv) {
- // 1 res
- uint32_t id_1 = emx_resources_register_custom(custom_res_read_1, custom_res_size_1);
- ASSERT(emx_resources_get_size(1, id_1) == 4);
- uint32_t buf = 0;
- ASSERT(emx_resources_read(1, id_1, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 1);
- ASSERT(s_read_1_called == 1);
- ASSERT(s_size_1_called == 1);
-
- // 2nd res
- uint32_t id_2 = emx_resources_register_custom(custom_res_read_2, custom_res_size_2);
- ASSERT(emx_resources_get_size(1, id_2) == 4);
- buf = 0;
- ASSERT(emx_resources_read(1, id_2, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 2);
- ASSERT(s_read_2_called == 1);
- ASSERT(s_size_2_called == 1);
-
- // 3rd res
- uint32_t id_3 = emx_resources_register_custom(custom_res_read_3, custom_res_size_3);
- ASSERT(emx_resources_get_size(1, id_3) == 4);
- buf = 0;
- ASSERT(emx_resources_read(1, id_3, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 3);
- ASSERT(s_read_3_called == 1);
- ASSERT(s_size_3_called == 1);
-
- // remove 2
- emx_resources_remove_custom(id_2);
- ASSERT(emx_resources_get_size(1, id_2) == 0);
- buf = 0;
- ASSERT(emx_resources_read(1, id_2, 0, (uint8_t *)&buf, 1) == 0);
- ASSERT(buf == 0);
- // verify 1 & 3 are OK
- buf = 0;
- ASSERT(emx_resources_read(1, id_3, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 3);
- ASSERT(s_read_3_called == 2);
- buf = 0;
- ASSERT(emx_resources_read(1, id_1, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 1);
- ASSERT(s_read_1_called == 2);
-
- // add 4
- uint32_t id_4 = emx_resources_register_custom(custom_res_read_4, custom_res_size_4);
- ASSERT(emx_resources_get_size(1, id_4) == 4);
- buf = 0;
- ASSERT(emx_resources_read(1, id_4, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 4);
- ASSERT(s_read_4_called == 1);
- ASSERT(s_size_4_called == 1);
-
- // remove 1 & 3
- emx_resources_remove_custom(id_1);
- ASSERT(emx_resources_get_size(1, id_1) == 0);
- emx_resources_remove_custom(id_3);
- ASSERT(emx_resources_get_size(1, id_3) == 0);
- // verify 4 is ok
- buf = 0;
- ASSERT(emx_resources_read(1, id_4, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 4);
- ASSERT(s_read_4_called == 2);
-
- // remove 4
- emx_resources_remove_custom(id_4);
- ASSERT(emx_resources_get_size(1, id_4) == 0);
- ASSERT(s_size_4_called == 1);
-
- // add 4 again
- id_4 = emx_resources_register_custom(custom_res_read_4, custom_res_size_4);
- ASSERT(emx_resources_get_size(1, id_4) == 4);
- buf = 0;
- ASSERT(emx_resources_read(1, id_4, 0, (uint8_t *)&buf, 1) == 4);
- ASSERT(buf == 4);
- ASSERT(s_read_4_called == 3);
- ASSERT(s_size_4_called == 2);
-
- // remove 4 again
- emx_resources_remove_custom(id_4);
- ASSERT(emx_resources_get_size(1, id_4) == 0);
- ASSERT(s_size_4_called == 2);
-}
diff --git a/applib-targets/emscripten/tests/wscript b/applib-targets/emscripten/tests/wscript
deleted file mode 100644
index fdd495a46e..0000000000
--- a/applib-targets/emscripten/tests/wscript
+++ /dev/null
@@ -1,42 +0,0 @@
-from waflib import Logs
-
-
-def configure(conf):
- conf.load('gcc waf_unit_test')
- pass
-
-
-def show_results(bld):
- lst = getattr(bld, 'utest_results', [])
- if lst:
- Logs.pprint('CYAN', 'execution summary')
-
- total = len(lst)
- tfail = len([x for x in lst if x[1]])
-
- Logs.pprint('CYAN', ' tests that pass %d/%d' % (total-tfail, total))
- for (f, code, out, err) in lst:
- if not code:
- Logs.pprint('CYAN', ' %s' % f)
-
- if (tfail):
- Logs.pprint('RED', ' tests that fail %d/%d' % (tfail, total))
- for (f, code, out, err) in lst:
- if code:
- Logs.pprint('CYAN', ' %s' % f)
- Logs.pprint('WHITE', ' %s' % out)
-
-
-def build(bld):
- includes = ['.', '../', '../../../src/fw/']
- sources = bld.path.ant_glob('*.c')
- sources.append(bld.path.parent.find_node('emscripten_resources.c'))
- bld.program(features='test',
- source=sources,
- target='test',
- cflags='-g',
- includes=includes)
-
- bld.add_post_fun(show_results)
-
-# vim:filetype=python
diff --git a/applib-targets/emscripten/timeshift-js/.npmignore b/applib-targets/emscripten/timeshift-js/.npmignore
deleted file mode 100644
index f8cf2c305e..0000000000
--- a/applib-targets/emscripten/timeshift-js/.npmignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules/
-npm-debug.log
-
diff --git a/applib-targets/emscripten/timeshift-js/LICENSE b/applib-targets/emscripten/timeshift-js/LICENSE
deleted file mode 100644
index 085caa93bd..0000000000
--- a/applib-targets/emscripten/timeshift-js/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Mobile Wellness Solutions MWS Ltd, Sampo Niskanen
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/applib-targets/emscripten/timeshift-js/README.md b/applib-targets/emscripten/timeshift-js/README.md
deleted file mode 100644
index 647b738436..0000000000
--- a/applib-targets/emscripten/timeshift-js/README.md
+++ /dev/null
@@ -1,90 +0,0 @@
-TimeShift.js
-============
-
-TimeShift.js allows mocking / overriding JavaScript's Date object so that you can set the current time and timezone. It is meant for creating repeatable tests that utilize the current time or date.
-
-Usage
------
-
-```javascript
-new Date().toString(); // Original Date object
-"Fri Aug 09 2013 23:37:42 GMT+0300 (EEST)"
-
-Date = TimeShift.Date; // Overwrite Date object
-new Date().toString();
-"Fri Aug 09 2013 23:37:43 GMT+0300"
-
-TimeShift.setTimezoneOffset(-60); // Set timezone to GMT+0100 (note the sign)
-new Date().toString();
-"Fri Aug 09 2013 21:37:44 GMT+0100"
-
-TimeShift.setTime(1328230923000); // Set the time to 2012-02-03 01:02:03 GMT
-new Date().toString();
-"Fri Feb 03 2012 02:02:03 GMT+0100"
-
-TimeShift.setTimezoneOffset(0); // Set timezone to GMT
-new Date().toString();
-"Fri Feb 03 2012 01:02:03 GMT"
-
-TimeShift.getTime(); // Get overridden values
-1328230923000
-TimeShift.getTimezoneOffset();
-0
-
-TimeShift.setTime(undefined); // Reset to current time
-new Date().toString();
-"Fri Aug 09 2013 20:37:45 GMT"
-
-new Date().desc(); // Helper method
-"utc=Fri, 09 Aug 2013 20:37:46 GMT local=Fri, 09 Aug 2013 20:37:46 GMT offset=0"
-
-new TimeShift.OriginalDate().toString(); // Use original Date object
-"Fri Aug 09 2013 23:37:47 GMT+0300 (EEST)"
-```
-
-Time zones
-----------
-
-TimeShift.js always utilizes its internal time zone offset when converting between local time and UTC. The offset factor is fixed, and it does not take into account DST changes. Effectively it emulates a time zone with no DST.
-
-```javascript
-new Date(1370034000000).toString(); // Original Date object uses variable offset
-"Sat Jun 01 2013 00:00:00 GMT+0300 (EEST)"
-new Date(1356991200000).toString();
-"Tue Jan 01 2013 00:00:00 GMT+0200 (EET)"
-
-Date = TimeShift.Date; // TimeShift.js uses fixed offset
-new Date(1370034000000).toString();
-"Sat Jun 01 2013 00:00:00 GMT+0300"
-new Date(1356991200000).toString();
-"Tue Jan 01 2013 01:00:00 GMT+0300"
-```
-
-The default time zone offset is the current local time zone offset. Note that this can change depending on local DST. Setting the time zone offset affects also previously created Date instances.
-
-The time zone offset has the same sign as [Date.getTimezoneOffset](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset). For example, -120 is GMT+0200 and +120 is GMT-0200.
-
-Caveats
--------
-
-The mock implementation of Date is not perfect.
-
-* Many string-generation methods are incomplete and return something indicative, but not fully correct. In particular `toDateString`, `toLocaleDateString`, `toLocaleString`, `toLocaleTimeString`, `toTimeString` produce somewhat incorrect results.
-
-* The `toString` method does not contain any time zone name.
-
-* The `parse` method delegates directly to the original method and may not handle time zones correctly.
-
-* DST changes cannot be emulated. The time zone offset it always fixed.
-
-* If a library or other code holds an original Date object or a reference to the Date prototype, things may break (e.g. error messages like "this is not a Date object"). In this case you should overwrite the Date object before loading the library.
-
-
-If you'd like to fix some of these issues, please fork the repository, implement the desired functionality, add unit tests to `tests.js` and send a pull request.
-
-License
--------
-
-TimeShift.js is Copyright 2013 Mobile Wellness Solutions MWS Ltd and Sampo Niskanen.
-
-It is released under the MIT license.
diff --git a/applib-targets/emscripten/timeshift-js/package.json b/applib-targets/emscripten/timeshift-js/package.json
deleted file mode 100644
index ab14f4a18b..0000000000
--- a/applib-targets/emscripten/timeshift-js/package.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "_args": [
- [
- {
- "raw": "timeshift-js@^1.0.0",
- "scope": null,
- "escapedName": "timeshift-js",
- "name": "timeshift-js",
- "rawSpec": "^1.0.0",
- "spec": ">=1.0.0 <2.0.0",
- "type": "range"
- },
- "/Users/martijn/Documents/Pebble/pebblesdk-generator/basalt/applib-targets/emscripten"
- ]
- ],
- "_from": "timeshift-js@>=1.0.0 <2.0.0",
- "_id": "timeshift-js@1.0.0",
- "_inCache": true,
- "_installable": true,
- "_location": "/timeshift-js",
- "_nodeVersion": "5.3.0",
- "_npmUser": {
- "name": "plaa",
- "email": "sampo.niskanen@iki.fi"
- },
- "_npmVersion": "3.3.12",
- "_phantomChildren": {},
- "_requested": {
- "raw": "timeshift-js@^1.0.0",
- "scope": null,
- "escapedName": "timeshift-js",
- "name": "timeshift-js",
- "rawSpec": "^1.0.0",
- "spec": ">=1.0.0 <2.0.0",
- "type": "range"
- },
- "_requiredBy": [
- "/"
- ],
- "_resolved": "https://registry.npmjs.org/timeshift-js/-/timeshift-js-1.0.0.tgz",
- "_shasum": "61c2eebc12e9dabc81e5f99bbae2dc8d14593f70",
- "_shrinkwrap": null,
- "_spec": "timeshift-js@^1.0.0",
- "_where": "/Users/martijn/Documents/Pebble/pebblesdk-generator/basalt/applib-targets/emscripten",
- "author": {
- "name": "Sampo Niskanen",
- "email": "sampo.niskanen@iki.fi"
- },
- "bugs": {
- "url": "https://github.com/plaa/TimeShift-js/issues"
- },
- "dependencies": {},
- "description": "Time and timezone mocking / overriding",
- "devDependencies": {},
- "directories": {},
- "dist": {
- "shasum": "61c2eebc12e9dabc81e5f99bbae2dc8d14593f70",
- "tarball": "https://registry.npmjs.org/timeshift-js/-/timeshift-js-1.0.0.tgz"
- },
- "gitHead": "2b0ae910e28ebbe40482c13ba48dc5c54adfe2b7",
- "homepage": "https://github.com/plaa/TimeShift-js",
- "keywords": [
- "time",
- "timezone",
- "mocking"
- ],
- "license": "MIT",
- "main": "timeshift.js",
- "maintainers": [
- {
- "name": "plaa",
- "email": "sampo.niskanen@iki.fi"
- }
- ],
- "name": "timeshift-js",
- "optionalDependencies": {},
- "readme": "ERROR: No README data found!",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/plaa/TimeShift-js.git"
- },
- "scripts": {},
- "version": "1.0.0"
-}
diff --git a/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.css b/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.css
deleted file mode 100644
index 7ba3f9a30b..0000000000
--- a/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.css
+++ /dev/null
@@ -1,244 +0,0 @@
-/**
- * QUnit v1.12.0 - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-/** Font Family and Sizes */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
- font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
-}
-
-#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
-#qunit-tests { font-size: smaller; }
-
-
-/** Resets */
-
-#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
- margin: 0;
- padding: 0;
-}
-
-
-/** Header */
-
-#qunit-header {
- padding: 0.5em 0 0.5em 1em;
-
- color: #8699a4;
- background-color: #0d3349;
-
- font-size: 1.5em;
- line-height: 1em;
- font-weight: normal;
-
- border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- -webkit-border-top-right-radius: 5px;
- -webkit-border-top-left-radius: 5px;
-}
-
-#qunit-header a {
- text-decoration: none;
- color: #c2ccd1;
-}
-
-#qunit-header a:hover,
-#qunit-header a:focus {
- color: #fff;
-}
-
-#qunit-testrunner-toolbar label {
- display: inline-block;
- padding: 0 .5em 0 .1em;
-}
-
-#qunit-banner {
- height: 5px;
-}
-
-#qunit-testrunner-toolbar {
- padding: 0.5em 0 0.5em 2em;
- color: #5E740B;
- background-color: #eee;
- overflow: hidden;
-}
-
-#qunit-userAgent {
- padding: 0.5em 0 0.5em 2.5em;
- background-color: #2b81af;
- color: #fff;
- text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
-}
-
-#qunit-modulefilter-container {
- float: right;
-}
-
-/** Tests: Pass/Fail */
-
-#qunit-tests {
- list-style-position: inside;
-}
-
-#qunit-tests li {
- padding: 0.4em 0.5em 0.4em 2.5em;
- border-bottom: 1px solid #fff;
- list-style-position: inside;
-}
-
-#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
- display: none;
-}
-
-#qunit-tests li strong {
- cursor: pointer;
-}
-
-#qunit-tests li a {
- padding: 0.5em;
- color: #c2ccd1;
- text-decoration: none;
-}
-#qunit-tests li a:hover,
-#qunit-tests li a:focus {
- color: #000;
-}
-
-#qunit-tests li .runtime {
- float: right;
- font-size: smaller;
-}
-
-.qunit-assert-list {
- margin-top: 0.5em;
- padding: 0.5em;
-
- background-color: #fff;
-
- border-radius: 5px;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-.qunit-collapsed {
- display: none;
-}
-
-#qunit-tests table {
- border-collapse: collapse;
- margin-top: .2em;
-}
-
-#qunit-tests th {
- text-align: right;
- vertical-align: top;
- padding: 0 .5em 0 0;
-}
-
-#qunit-tests td {
- vertical-align: top;
-}
-
-#qunit-tests pre {
- margin: 0;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-
-#qunit-tests del {
- background-color: #e0f2be;
- color: #374e0c;
- text-decoration: none;
-}
-
-#qunit-tests ins {
- background-color: #ffcaca;
- color: #500;
- text-decoration: none;
-}
-
-/*** Test Counts */
-
-#qunit-tests b.counts { color: black; }
-#qunit-tests b.passed { color: #5E740B; }
-#qunit-tests b.failed { color: #710909; }
-
-#qunit-tests li li {
- padding: 5px;
- background-color: #fff;
- border-bottom: none;
- list-style-position: inside;
-}
-
-/*** Passing Styles */
-
-#qunit-tests li li.pass {
- color: #3c510c;
- background-color: #fff;
- border-left: 10px solid #C6E746;
-}
-
-#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
-#qunit-tests .pass .test-name { color: #366097; }
-
-#qunit-tests .pass .test-actual,
-#qunit-tests .pass .test-expected { color: #999999; }
-
-#qunit-banner.qunit-pass { background-color: #C6E746; }
-
-/*** Failing Styles */
-
-#qunit-tests li li.fail {
- color: #710909;
- background-color: #fff;
- border-left: 10px solid #EE5757;
- white-space: pre;
-}
-
-#qunit-tests > li:last-child {
- border-radius: 0 0 5px 5px;
- -moz-border-radius: 0 0 5px 5px;
- -webkit-border-bottom-right-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
-}
-
-#qunit-tests .fail { color: #000000; background-color: #EE5757; }
-#qunit-tests .fail .test-name,
-#qunit-tests .fail .module-name { color: #000000; }
-
-#qunit-tests .fail .test-actual { color: #EE5757; }
-#qunit-tests .fail .test-expected { color: green; }
-
-#qunit-banner.qunit-fail { background-color: #EE5757; }
-
-
-/** Result */
-
-#qunit-testresult {
- padding: 0.5em 0.5em 0.5em 2.5em;
-
- color: #2b81af;
- background-color: #D2E0E6;
-
- border-bottom: 1px solid white;
-}
-#qunit-testresult .module-name {
- font-weight: bold;
-}
-
-/** Fixture */
-
-#qunit-fixture {
- position: absolute;
- top: -10000px;
- left: -10000px;
- width: 1000px;
- height: 1000px;
-}
diff --git a/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.js b/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.js
deleted file mode 100644
index 84c73907de..0000000000
--- a/applib-targets/emscripten/timeshift-js/qunit/qunit-1.12.0.js
+++ /dev/null
@@ -1,2212 +0,0 @@
-/**
- * QUnit v1.12.0 - A JavaScript Unit Testing Framework
- *
- * http://qunitjs.com
- *
- * Copyright 2013 jQuery Foundation and other contributors
- * Released under the MIT license.
- * https://jquery.org/license/
- */
-
-(function( window ) {
-
-var QUnit,
- assert,
- config,
- onErrorFnPrev,
- testId = 0,
- fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
- toString = Object.prototype.toString,
- hasOwn = Object.prototype.hasOwnProperty,
- // Keep a local reference to Date (GH-283)
- Date = window.Date,
- setTimeout = window.setTimeout,
- defined = {
- setTimeout: typeof window.setTimeout !== "undefined",
- sessionStorage: (function() {
- var x = "qunit-test-string";
- try {
- sessionStorage.setItem( x, x );
- sessionStorage.removeItem( x );
- return true;
- } catch( e ) {
- return false;
- }
- }())
- },
- /**
- * Provides a normalized error string, correcting an issue
- * with IE 7 (and prior) where Error.prototype.toString is
- * not properly implemented
- *
- * Based on http://es5.github.com/#x15.11.4.4
- *
- * @param {String|Error} error
- * @return {String} error message
- */
- errorString = function( error ) {
- var name, message,
- errorString = error.toString();
- if ( errorString.substring( 0, 7 ) === "[object" ) {
- name = error.name ? error.name.toString() : "Error";
- message = error.message ? error.message.toString() : "";
- if ( name && message ) {
- return name + ": " + message;
- } else if ( name ) {
- return name;
- } else if ( message ) {
- return message;
- } else {
- return "Error";
- }
- } else {
- return errorString;
- }
- },
- /**
- * Makes a clone of an object using only Array or Object as base,
- * and copies over the own enumerable properties.
- *
- * @param {Object} obj
- * @return {Object} New object with only the own properties (recursively).
- */
- objectValues = function( obj ) {
- // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392.
- /*jshint newcap: false */
- var key, val,
- vals = QUnit.is( "array", obj ) ? [] : {};
- for ( key in obj ) {
- if ( hasOwn.call( obj, key ) ) {
- val = obj[key];
- vals[key] = val === Object(val) ? objectValues(val) : val;
- }
- }
- return vals;
- };
-
-function Test( settings ) {
- extend( this, settings );
- this.assertions = [];
- this.testNumber = ++Test.count;
-}
-
-Test.count = 0;
-
-Test.prototype = {
- init: function() {
- var a, b, li,
- tests = id( "qunit-tests" );
-
- if ( tests ) {
- b = document.createElement( "strong" );
- b.innerHTML = this.nameHtml;
-
- // `a` initialized at top of scope
- a = document.createElement( "a" );
- a.innerHTML = "Rerun";
- a.href = QUnit.url({ testNumber: this.testNumber });
-
- li = document.createElement( "li" );
- li.appendChild( b );
- li.appendChild( a );
- li.className = "running";
- li.id = this.id = "qunit-test-output" + testId++;
-
- tests.appendChild( li );
- }
- },
- setup: function() {
- if (
- // Emit moduleStart when we're switching from one module to another
- this.module !== config.previousModule ||
- // They could be equal (both undefined) but if the previousModule property doesn't
- // yet exist it means this is the first test in a suite that isn't wrapped in a
- // module, in which case we'll just emit a moduleStart event for 'undefined'.
- // Without this, reporters can get testStart before moduleStart which is a problem.
- !hasOwn.call( config, "previousModule" )
- ) {
- if ( hasOwn.call( config, "previousModule" ) ) {
- runLoggingCallbacks( "moduleDone", QUnit, {
- name: config.previousModule,
- failed: config.moduleStats.bad,
- passed: config.moduleStats.all - config.moduleStats.bad,
- total: config.moduleStats.all
- });
- }
- config.previousModule = this.module;
- config.moduleStats = { all: 0, bad: 0 };
- runLoggingCallbacks( "moduleStart", QUnit, {
- name: this.module
- });
- }
-
- config.current = this;
-
- this.testEnvironment = extend({
- setup: function() {},
- teardown: function() {}
- }, this.moduleTestEnvironment );
-
- this.started = +new Date();
- runLoggingCallbacks( "testStart", QUnit, {
- name: this.testName,
- module: this.module
- });
-
- /*jshint camelcase:false */
-
-
- /**
- * Expose the current test environment.
- *
- * @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead.
- */
- QUnit.current_testEnvironment = this.testEnvironment;
-
- /*jshint camelcase:true */
-
- if ( !config.pollution ) {
- saveGlobal();
- }
- if ( config.notrycatch ) {
- this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert );
- return;
- }
- try {
- this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert );
- } catch( e ) {
- QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
- }
- },
- run: function() {
- config.current = this;
-
- var running = id( "qunit-testresult" );
-
- if ( running ) {
- running.innerHTML = "Running:
" + this.nameHtml;
- }
-
- if ( this.async ) {
- QUnit.stop();
- }
-
- this.callbackStarted = +new Date();
-
- if ( config.notrycatch ) {
- this.callback.call( this.testEnvironment, QUnit.assert );
- this.callbackRuntime = +new Date() - this.callbackStarted;
- return;
- }
-
- try {
- this.callback.call( this.testEnvironment, QUnit.assert );
- this.callbackRuntime = +new Date() - this.callbackStarted;
- } catch( e ) {
- this.callbackRuntime = +new Date() - this.callbackStarted;
-
- QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
- // else next test will carry the responsibility
- saveGlobal();
-
- // Restart the tests if they're blocking
- if ( config.blocking ) {
- QUnit.start();
- }
- }
- },
- teardown: function() {
- config.current = this;
- if ( config.notrycatch ) {
- if ( typeof this.callbackRuntime === "undefined" ) {
- this.callbackRuntime = +new Date() - this.callbackStarted;
- }
- this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert );
- return;
- } else {
- try {
- this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert );
- } catch( e ) {
- QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) );
- }
- }
- checkPollution();
- },
- finish: function() {
- config.current = this;
- if ( config.requireExpects && this.expected === null ) {
- QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
- } else if ( this.expected !== null && this.expected !== this.assertions.length ) {
- QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
- } else if ( this.expected === null && !this.assertions.length ) {
- QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
- }
-
- var i, assertion, a, b, time, li, ol,
- test = this,
- good = 0,
- bad = 0,
- tests = id( "qunit-tests" );
-
- this.runtime = +new Date() - this.started;
- config.stats.all += this.assertions.length;
- config.moduleStats.all += this.assertions.length;
-
- if ( tests ) {
- ol = document.createElement( "ol" );
- ol.className = "qunit-assert-list";
-
- for ( i = 0; i < this.assertions.length; i++ ) {
- assertion = this.assertions[i];
-
- li = document.createElement( "li" );
- li.className = assertion.result ? "pass" : "fail";
- li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
- ol.appendChild( li );
-
- if ( assertion.result ) {
- good++;
- } else {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
-
- // store result when possible
- if ( QUnit.config.reorder && defined.sessionStorage ) {
- if ( bad ) {
- sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
- } else {
- sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
- }
- }
-
- if ( bad === 0 ) {
- addClass( ol, "qunit-collapsed" );
- }
-
- // `b` initialized at top of scope
- b = document.createElement( "strong" );
- b.innerHTML = this.nameHtml + " (" + bad + ", " + good + ", " + this.assertions.length + ")";
-
- addEvent(b, "click", function() {
- var next = b.parentNode.lastChild,
- collapsed = hasClass( next, "qunit-collapsed" );
- ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" );
- });
-
- addEvent(b, "dblclick", function( e ) {
- var target = e && e.target ? e.target : window.event.srcElement;
- if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) {
- target = target.parentNode;
- }
- if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
- window.location = QUnit.url({ testNumber: test.testNumber });
- }
- });
-
- // `time` initialized at top of scope
- time = document.createElement( "span" );
- time.className = "runtime";
- time.innerHTML = this.runtime + " ms";
-
- // `li` initialized at top of scope
- li = id( this.id );
- li.className = bad ? "fail" : "pass";
- li.removeChild( li.firstChild );
- a = li.firstChild;
- li.appendChild( b );
- li.appendChild( a );
- li.appendChild( time );
- li.appendChild( ol );
-
- } else {
- for ( i = 0; i < this.assertions.length; i++ ) {
- if ( !this.assertions[i].result ) {
- bad++;
- config.stats.bad++;
- config.moduleStats.bad++;
- }
- }
- }
-
- runLoggingCallbacks( "testDone", QUnit, {
- name: this.testName,
- module: this.module,
- failed: bad,
- passed: this.assertions.length - bad,
- total: this.assertions.length,
- duration: this.runtime
- });
-
- QUnit.reset();
-
- config.current = undefined;
- },
-
- queue: function() {
- var bad,
- test = this;
-
- synchronize(function() {
- test.init();
- });
- function run() {
- // each of these can by async
- synchronize(function() {
- test.setup();
- });
- synchronize(function() {
- test.run();
- });
- synchronize(function() {
- test.teardown();
- });
- synchronize(function() {
- test.finish();
- });
- }
-
- // `bad` initialized at top of scope
- // defer when previous test run passed, if storage is available
- bad = QUnit.config.reorder && defined.sessionStorage &&
- +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
-
- if ( bad ) {
- run();
- } else {
- synchronize( run, true );
- }
- }
-};
-
-// Root QUnit object.
-// `QUnit` initialized at top of scope
-QUnit = {
-
- // call on start of module test to prepend name to all tests
- module: function( name, testEnvironment ) {
- config.currentModule = name;
- config.currentModuleTestEnvironment = testEnvironment;
- config.modules[name] = true;
- },
-
- asyncTest: function( testName, expected, callback ) {
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = null;
- }
-
- QUnit.test( testName, expected, callback, true );
- },
-
- test: function( testName, expected, callback, async ) {
- var test,
- nameHtml = "" + escapeText( testName ) + "";
-
- if ( arguments.length === 2 ) {
- callback = expected;
- expected = null;
- }
-
- if ( config.currentModule ) {
- nameHtml = "" + escapeText( config.currentModule ) + ": " + nameHtml;
- }
-
- test = new Test({
- nameHtml: nameHtml,
- testName: testName,
- expected: expected,
- async: async,
- callback: callback,
- module: config.currentModule,
- moduleTestEnvironment: config.currentModuleTestEnvironment,
- stack: sourceFromStacktrace( 2 )
- });
-
- if ( !validTest( test ) ) {
- return;
- }
-
- test.queue();
- },
-
- // Specify the number of expected assertions to guarantee that failed test (no assertions are run at all) don't slip through.
- expect: function( asserts ) {
- if (arguments.length === 1) {
- config.current.expected = asserts;
- } else {
- return config.current.expected;
- }
- },
-
- start: function( count ) {
- // QUnit hasn't been initialized yet.
- // Note: RequireJS (et al) may delay onLoad
- if ( config.semaphore === undefined ) {
- QUnit.begin(function() {
- // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first
- setTimeout(function() {
- QUnit.start( count );
- });
- });
- return;
- }
-
- config.semaphore -= count || 1;
- // don't start until equal number of stop-calls
- if ( config.semaphore > 0 ) {
- return;
- }
- // ignore if start is called more often then stop
- if ( config.semaphore < 0 ) {
- config.semaphore = 0;
- QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) );
- return;
- }
- // A slight delay, to avoid any current callbacks
- if ( defined.setTimeout ) {
- setTimeout(function() {
- if ( config.semaphore > 0 ) {
- return;
- }
- if ( config.timeout ) {
- clearTimeout( config.timeout );
- }
-
- config.blocking = false;
- process( true );
- }, 13);
- } else {
- config.blocking = false;
- process( true );
- }
- },
-
- stop: function( count ) {
- config.semaphore += count || 1;
- config.blocking = true;
-
- if ( config.testTimeout && defined.setTimeout ) {
- clearTimeout( config.timeout );
- config.timeout = setTimeout(function() {
- QUnit.ok( false, "Test timed out" );
- config.semaphore = 1;
- QUnit.start();
- }, config.testTimeout );
- }
- }
-};
-
-// `assert` initialized at top of scope
-// Assert helpers
-// All of these must either call QUnit.push() or manually do:
-// - runLoggingCallbacks( "log", .. );
-// - config.current.assertions.push({ .. });
-// We attach it to the QUnit object *after* we expose the public API,
-// otherwise `assert` will become a global variable in browsers (#341).
-assert = {
- /**
- * Asserts rough true-ish result.
- * @name ok
- * @function
- * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
- */
- ok: function( result, msg ) {
- if ( !config.current ) {
- throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
- }
- result = !!result;
- msg = msg || (result ? "okay" : "failed" );
-
- var source,
- details = {
- module: config.current.module,
- name: config.current.testName,
- result: result,
- message: msg
- };
-
- msg = "" + escapeText( msg ) + "";
-
- if ( !result ) {
- source = sourceFromStacktrace( 2 );
- if ( source ) {
- details.source = source;
- msg += "| Source: | " + escapeText( source ) + " |
|---|
";
- }
- }
- runLoggingCallbacks( "log", QUnit, details );
- config.current.assertions.push({
- result: result,
- message: msg
- });
- },
-
- /**
- * Assert that the first two arguments are equal, with an optional message.
- * Prints out both actual and expected values.
- * @name equal
- * @function
- * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
- */
- equal: function( actual, expected, message ) {
- /*jshint eqeqeq:false */
- QUnit.push( expected == actual, actual, expected, message );
- },
-
- /**
- * @name notEqual
- * @function
- */
- notEqual: function( actual, expected, message ) {
- /*jshint eqeqeq:false */
- QUnit.push( expected != actual, actual, expected, message );
- },
-
- /**
- * @name propEqual
- * @function
- */
- propEqual: function( actual, expected, message ) {
- actual = objectValues(actual);
- expected = objectValues(expected);
- QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
- },
-
- /**
- * @name notPropEqual
- * @function
- */
- notPropEqual: function( actual, expected, message ) {
- actual = objectValues(actual);
- expected = objectValues(expected);
- QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
- },
-
- /**
- * @name deepEqual
- * @function
- */
- deepEqual: function( actual, expected, message ) {
- QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
- },
-
- /**
- * @name notDeepEqual
- * @function
- */
- notDeepEqual: function( actual, expected, message ) {
- QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
- },
-
- /**
- * @name strictEqual
- * @function
- */
- strictEqual: function( actual, expected, message ) {
- QUnit.push( expected === actual, actual, expected, message );
- },
-
- /**
- * @name notStrictEqual
- * @function
- */
- notStrictEqual: function( actual, expected, message ) {
- QUnit.push( expected !== actual, actual, expected, message );
- },
-
- "throws": function( block, expected, message ) {
- var actual,
- expectedOutput = expected,
- ok = false;
-
- // 'expected' is optional
- if ( typeof expected === "string" ) {
- message = expected;
- expected = null;
- }
-
- config.current.ignoreGlobalErrors = true;
- try {
- block.call( config.current.testEnvironment );
- } catch (e) {
- actual = e;
- }
- config.current.ignoreGlobalErrors = false;
-
- if ( actual ) {
- // we don't want to validate thrown error
- if ( !expected ) {
- ok = true;
- expectedOutput = null;
- // expected is a regexp
- } else if ( QUnit.objectType( expected ) === "regexp" ) {
- ok = expected.test( errorString( actual ) );
- // expected is a constructor
- } else if ( actual instanceof expected ) {
- ok = true;
- // expected is a validation function which returns true is validation passed
- } else if ( expected.call( {}, actual ) === true ) {
- expectedOutput = null;
- ok = true;
- }
-
- QUnit.push( ok, actual, expectedOutput, message );
- } else {
- QUnit.pushFailure( message, null, "No exception was thrown." );
- }
- }
-};
-
-/**
- * @deprecated since 1.8.0
- * Kept assertion helpers in root for backwards compatibility.
- */
-extend( QUnit, assert );
-
-/**
- * @deprecated since 1.9.0
- * Kept root "raises()" for backwards compatibility.
- * (Note that we don't introduce assert.raises).
- */
-QUnit.raises = assert[ "throws" ];
-
-/**
- * @deprecated since 1.0.0, replaced with error pushes since 1.3.0
- * Kept to avoid TypeErrors for undefined methods.
- */
-QUnit.equals = function() {
- QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
-};
-QUnit.same = function() {
- QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
-};
-
-// We want access to the constructor's prototype
-(function() {
- function F() {}
- F.prototype = QUnit;
- QUnit = new F();
- // Make F QUnit's constructor so that we can add to the prototype later
- QUnit.constructor = F;
-}());
-
-/**
- * Config object: Maintain internal state
- * Later exposed as QUnit.config
- * `config` initialized at top of scope
- */
-config = {
- // The queue of tests to run
- queue: [],
-
- // block until document ready
- blocking: true,
-
- // when enabled, show only failing tests
- // gets persisted through sessionStorage and can be changed in UI via checkbox
- hidepassed: false,
-
- // by default, run previously failed tests first
- // very useful in combination with "Hide passed tests" checked
- reorder: true,
-
- // by default, modify document.title when suite is done
- altertitle: true,
-
- // when enabled, all tests must call expect()
- requireExpects: false,
-
- // add checkboxes that are persisted in the query-string
- // when enabled, the id is set to `true` as a `QUnit.config` property
- urlConfig: [
- {
- id: "noglobals",
- label: "Check for Globals",
- tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings."
- },
- {
- id: "notrycatch",
- label: "No try-catch",
- tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings."
- }
- ],
-
- // Set of all modules.
- modules: {},
-
- // logging callback queues
- begin: [],
- done: [],
- log: [],
- testStart: [],
- testDone: [],
- moduleStart: [],
- moduleDone: []
-};
-
-// Export global variables, unless an 'exports' object exists,
-// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
-if ( typeof exports === "undefined" ) {
- extend( window, QUnit.constructor.prototype );
-
- // Expose QUnit object
- window.QUnit = QUnit;
-}
-
-// Initialize more QUnit.config and QUnit.urlParams
-(function() {
- var i,
- location = window.location || { search: "", protocol: "file:" },
- params = location.search.slice( 1 ).split( "&" ),
- length = params.length,
- urlParams = {},
- current;
-
- if ( params[ 0 ] ) {
- for ( i = 0; i < length; i++ ) {
- current = params[ i ].split( "=" );
- current[ 0 ] = decodeURIComponent( current[ 0 ] );
- // allow just a key to turn on a flag, e.g., test.html?noglobals
- current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
- urlParams[ current[ 0 ] ] = current[ 1 ];
- }
- }
-
- QUnit.urlParams = urlParams;
-
- // String search anywhere in moduleName+testName
- config.filter = urlParams.filter;
-
- // Exact match of the module name
- config.module = urlParams.module;
-
- config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
-
- // Figure out if we're running the tests from a server or not
- QUnit.isLocal = location.protocol === "file:";
-}());
-
-// Extend QUnit object,
-// these after set here because they should not be exposed as global functions
-extend( QUnit, {
- assert: assert,
-
- config: config,
-
- // Initialize the configuration options
- init: function() {
- extend( config, {
- stats: { all: 0, bad: 0 },
- moduleStats: { all: 0, bad: 0 },
- started: +new Date(),
- updateRate: 1000,
- blocking: false,
- autostart: true,
- autorun: false,
- filter: "",
- queue: [],
- semaphore: 1
- });
-
- var tests, banner, result,
- qunit = id( "qunit" );
-
- if ( qunit ) {
- qunit.innerHTML =
- "" +
- "" +
- "" +
- "" +
- "
";
- }
-
- tests = id( "qunit-tests" );
- banner = id( "qunit-banner" );
- result = id( "qunit-testresult" );
-
- if ( tests ) {
- tests.innerHTML = "";
- }
-
- if ( banner ) {
- banner.className = "";
- }
-
- if ( result ) {
- result.parentNode.removeChild( result );
- }
-
- if ( tests ) {
- result = document.createElement( "p" );
- result.id = "qunit-testresult";
- result.className = "result";
- tests.parentNode.insertBefore( result, tests );
- result.innerHTML = "Running...
";
- }
- },
-
- // Resets the test setup. Useful for tests that modify the DOM.
- /*
- DEPRECATED: Use multiple tests instead of resetting inside a test.
- Use testStart or testDone for custom cleanup.
- This method will throw an error in 2.0, and will be removed in 2.1
- */
- reset: function() {
- var fixture = id( "qunit-fixture" );
- if ( fixture ) {
- fixture.innerHTML = config.fixture;
- }
- },
-
- // Trigger an event on an element.
- // @example triggerEvent( document.body, "click" );
- triggerEvent: function( elem, type, event ) {
- if ( document.createEvent ) {
- event = document.createEvent( "MouseEvents" );
- event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
- 0, 0, 0, 0, 0, false, false, false, false, 0, null);
-
- elem.dispatchEvent( event );
- } else if ( elem.fireEvent ) {
- elem.fireEvent( "on" + type );
- }
- },
-
- // Safe object type checking
- is: function( type, obj ) {
- return QUnit.objectType( obj ) === type;
- },
-
- objectType: function( obj ) {
- if ( typeof obj === "undefined" ) {
- return "undefined";
- // consider: typeof null === object
- }
- if ( obj === null ) {
- return "null";
- }
-
- var match = toString.call( obj ).match(/^\[object\s(.*)\]$/),
- type = match && match[1] || "";
-
- switch ( type ) {
- case "Number":
- if ( isNaN(obj) ) {
- return "nan";
- }
- return "number";
- case "String":
- case "Boolean":
- case "Array":
- case "Date":
- case "RegExp":
- case "Function":
- return type.toLowerCase();
- }
- if ( typeof obj === "object" ) {
- return "object";
- }
- return undefined;
- },
-
- push: function( result, actual, expected, message ) {
- if ( !config.current ) {
- throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
- }
-
- var output, source,
- details = {
- module: config.current.module,
- name: config.current.testName,
- result: result,
- message: message,
- actual: actual,
- expected: expected
- };
-
- message = escapeText( message ) || ( result ? "okay" : "failed" );
- message = "" + message + "";
- output = message;
-
- if ( !result ) {
- expected = escapeText( QUnit.jsDump.parse(expected) );
- actual = escapeText( QUnit.jsDump.parse(actual) );
- output += "| Expected: | " + expected + " |
";
-
- if ( actual !== expected ) {
- output += "| Result: | " + actual + " |
";
- output += "| Diff: | " + QUnit.diff( expected, actual ) + " |
";
- }
-
- source = sourceFromStacktrace();
-
- if ( source ) {
- details.source = source;
- output += "| Source: | " + escapeText( source ) + " |
";
- }
-
- output += "
";
- }
-
- runLoggingCallbacks( "log", QUnit, details );
-
- config.current.assertions.push({
- result: !!result,
- message: output
- });
- },
-
- pushFailure: function( message, source, actual ) {
- if ( !config.current ) {
- throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) );
- }
-
- var output,
- details = {
- module: config.current.module,
- name: config.current.testName,
- result: false,
- message: message
- };
-
- message = escapeText( message ) || "error";
- message = "" + message + "";
- output = message;
-
- output += "";
-
- if ( actual ) {
- output += "| Result: | " + escapeText( actual ) + " |
";
- }
-
- if ( source ) {
- details.source = source;
- output += "| Source: | " + escapeText( source ) + " |
";
- }
-
- output += "
";
-
- runLoggingCallbacks( "log", QUnit, details );
-
- config.current.assertions.push({
- result: false,
- message: output
- });
- },
-
- url: function( params ) {
- params = extend( extend( {}, QUnit.urlParams ), params );
- var key,
- querystring = "?";
-
- for ( key in params ) {
- if ( hasOwn.call( params, key ) ) {
- querystring += encodeURIComponent( key ) + "=" +
- encodeURIComponent( params[ key ] ) + "&";
- }
- }
- return window.location.protocol + "//" + window.location.host +
- window.location.pathname + querystring.slice( 0, -1 );
- },
-
- extend: extend,
- id: id,
- addEvent: addEvent,
- addClass: addClass,
- hasClass: hasClass,
- removeClass: removeClass
- // load, equiv, jsDump, diff: Attached later
-});
-
-/**
- * @deprecated: Created for backwards compatibility with test runner that set the hook function
- * into QUnit.{hook}, instead of invoking it and passing the hook function.
- * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
- * Doing this allows us to tell if the following methods have been overwritten on the actual
- * QUnit object.
- */
-extend( QUnit.constructor.prototype, {
-
- // Logging callbacks; all receive a single argument with the listed properties
- // run test/logs.html for any related changes
- begin: registerLoggingCallback( "begin" ),
-
- // done: { failed, passed, total, runtime }
- done: registerLoggingCallback( "done" ),
-
- // log: { result, actual, expected, message }
- log: registerLoggingCallback( "log" ),
-
- // testStart: { name }
- testStart: registerLoggingCallback( "testStart" ),
-
- // testDone: { name, failed, passed, total, duration }
- testDone: registerLoggingCallback( "testDone" ),
-
- // moduleStart: { name }
- moduleStart: registerLoggingCallback( "moduleStart" ),
-
- // moduleDone: { name, failed, passed, total }
- moduleDone: registerLoggingCallback( "moduleDone" )
-});
-
-if ( typeof document === "undefined" || document.readyState === "complete" ) {
- config.autorun = true;
-}
-
-QUnit.load = function() {
- runLoggingCallbacks( "begin", QUnit, {} );
-
- // Initialize the config, saving the execution queue
- var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
- urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter,
- numModules = 0,
- moduleNames = [],
- moduleFilterHtml = "",
- urlConfigHtml = "",
- oldconfig = extend( {}, config );
-
- QUnit.init();
- extend(config, oldconfig);
-
- config.blocking = false;
-
- len = config.urlConfig.length;
-
- for ( i = 0; i < len; i++ ) {
- val = config.urlConfig[i];
- if ( typeof val === "string" ) {
- val = {
- id: val,
- label: val,
- tooltip: "[no tooltip available]"
- };
- }
- config[ val.id ] = QUnit.urlParams[ val.id ];
- urlConfigHtml += "";
- }
- for ( i in config.modules ) {
- if ( config.modules.hasOwnProperty( i ) ) {
- moduleNames.push(i);
- }
- }
- numModules = moduleNames.length;
- moduleNames.sort( function( a, b ) {
- return a.localeCompare( b );
- });
- moduleFilterHtml += "";
-
- // `userAgent` initialized at top of scope
- userAgent = id( "qunit-userAgent" );
- if ( userAgent ) {
- userAgent.innerHTML = navigator.userAgent;
- }
-
- // `banner` initialized at top of scope
- banner = id( "qunit-header" );
- if ( banner ) {
- banner.innerHTML = "" + banner.innerHTML + " ";
- }
-
- // `toolbar` initialized at top of scope
- toolbar = id( "qunit-testrunner-toolbar" );
- if ( toolbar ) {
- // `filter` initialized at top of scope
- filter = document.createElement( "input" );
- filter.type = "checkbox";
- filter.id = "qunit-filter-pass";
-
- addEvent( filter, "click", function() {
- var tmp,
- ol = document.getElementById( "qunit-tests" );
-
- if ( filter.checked ) {
- ol.className = ol.className + " hidepass";
- } else {
- tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
- ol.className = tmp.replace( / hidepass /, " " );
- }
- if ( defined.sessionStorage ) {
- if (filter.checked) {
- sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
- } else {
- sessionStorage.removeItem( "qunit-filter-passed-tests" );
- }
- }
- });
-
- if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
- filter.checked = true;
- // `ol` initialized at top of scope
- ol = document.getElementById( "qunit-tests" );
- ol.className = ol.className + " hidepass";
- }
- toolbar.appendChild( filter );
-
- // `label` initialized at top of scope
- label = document.createElement( "label" );
- label.setAttribute( "for", "qunit-filter-pass" );
- label.setAttribute( "title", "Only show tests and assertions that fail. Stored in sessionStorage." );
- label.innerHTML = "Hide passed tests";
- toolbar.appendChild( label );
-
- urlConfigCheckboxesContainer = document.createElement("span");
- urlConfigCheckboxesContainer.innerHTML = urlConfigHtml;
- urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input");
- // For oldIE support:
- // * Add handlers to the individual elements instead of the container
- // * Use "click" instead of "change"
- // * Fallback from event.target to event.srcElement
- addEvents( urlConfigCheckboxes, "click", function( event ) {
- var params = {},
- target = event.target || event.srcElement;
- params[ target.name ] = target.checked ? true : undefined;
- window.location = QUnit.url( params );
- });
- toolbar.appendChild( urlConfigCheckboxesContainer );
-
- if (numModules > 1) {
- moduleFilter = document.createElement( "span" );
- moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
- moduleFilter.innerHTML = moduleFilterHtml;
- addEvent( moduleFilter.lastChild, "change", function() {
- var selectBox = moduleFilter.getElementsByTagName("select")[0],
- selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);
-
- window.location = QUnit.url({
- module: ( selectedModule === "" ) ? undefined : selectedModule,
- // Remove any existing filters
- filter: undefined,
- testNumber: undefined
- });
- });
- toolbar.appendChild(moduleFilter);
- }
- }
-
- // `main` initialized at top of scope
- main = id( "qunit-fixture" );
- if ( main ) {
- config.fixture = main.innerHTML;
- }
-
- if ( config.autostart ) {
- QUnit.start();
- }
-};
-
-addEvent( window, "load", QUnit.load );
-
-// `onErrorFnPrev` initialized at top of scope
-// Preserve other handlers
-onErrorFnPrev = window.onerror;
-
-// Cover uncaught exceptions
-// Returning true will suppress the default browser handler,
-// returning false will let it run.
-window.onerror = function ( error, filePath, linerNr ) {
- var ret = false;
- if ( onErrorFnPrev ) {
- ret = onErrorFnPrev( error, filePath, linerNr );
- }
-
- // Treat return value as window.onerror itself does,
- // Only do our handling if not suppressed.
- if ( ret !== true ) {
- if ( QUnit.config.current ) {
- if ( QUnit.config.current.ignoreGlobalErrors ) {
- return true;
- }
- QUnit.pushFailure( error, filePath + ":" + linerNr );
- } else {
- QUnit.test( "global failure", extend( function() {
- QUnit.pushFailure( error, filePath + ":" + linerNr );
- }, { validTest: validTest } ) );
- }
- return false;
- }
-
- return ret;
-};
-
-function done() {
- config.autorun = true;
-
- // Log the last module results
- if ( config.currentModule ) {
- runLoggingCallbacks( "moduleDone", QUnit, {
- name: config.currentModule,
- failed: config.moduleStats.bad,
- passed: config.moduleStats.all - config.moduleStats.bad,
- total: config.moduleStats.all
- });
- }
- delete config.previousModule;
-
- var i, key,
- banner = id( "qunit-banner" ),
- tests = id( "qunit-tests" ),
- runtime = +new Date() - config.started,
- passed = config.stats.all - config.stats.bad,
- html = [
- "Tests completed in ",
- runtime,
- " milliseconds.
",
- "",
- passed,
- " assertions of ",
- config.stats.all,
- " passed, ",
- config.stats.bad,
- " failed."
- ].join( "" );
-
- if ( banner ) {
- banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
- }
-
- if ( tests ) {
- id( "qunit-testresult" ).innerHTML = html;
- }
-
- if ( config.altertitle && typeof document !== "undefined" && document.title ) {
- // show ✖ for good, ✔ for bad suite result in title
- // use escape sequences in case file gets loaded with non-utf-8-charset
- document.title = [
- ( config.stats.bad ? "\u2716" : "\u2714" ),
- document.title.replace( /^[\u2714\u2716] /i, "" )
- ].join( " " );
- }
-
- // clear own sessionStorage items if all tests passed
- if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
- // `key` & `i` initialized at top of scope
- for ( i = 0; i < sessionStorage.length; i++ ) {
- key = sessionStorage.key( i++ );
- if ( key.indexOf( "qunit-test-" ) === 0 ) {
- sessionStorage.removeItem( key );
- }
- }
- }
-
- // scroll back to top to show results
- if ( window.scrollTo ) {
- window.scrollTo(0, 0);
- }
-
- runLoggingCallbacks( "done", QUnit, {
- failed: config.stats.bad,
- passed: passed,
- total: config.stats.all,
- runtime: runtime
- });
-}
-
-/** @return Boolean: true if this test should be ran */
-function validTest( test ) {
- var include,
- filter = config.filter && config.filter.toLowerCase(),
- module = config.module && config.module.toLowerCase(),
- fullName = (test.module + ": " + test.testName).toLowerCase();
-
- // Internally-generated tests are always valid
- if ( test.callback && test.callback.validTest === validTest ) {
- delete test.callback.validTest;
- return true;
- }
-
- if ( config.testNumber ) {
- return test.testNumber === config.testNumber;
- }
-
- if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) {
- return false;
- }
-
- if ( !filter ) {
- return true;
- }
-
- include = filter.charAt( 0 ) !== "!";
- if ( !include ) {
- filter = filter.slice( 1 );
- }
-
- // If the filter matches, we need to honour include
- if ( fullName.indexOf( filter ) !== -1 ) {
- return include;
- }
-
- // Otherwise, do the opposite
- return !include;
-}
-
-// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
-// Later Safari and IE10 are supposed to support error.stack as well
-// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
-function extractStacktrace( e, offset ) {
- offset = offset === undefined ? 3 : offset;
-
- var stack, include, i;
-
- if ( e.stacktrace ) {
- // Opera
- return e.stacktrace.split( "\n" )[ offset + 3 ];
- } else if ( e.stack ) {
- // Firefox, Chrome
- stack = e.stack.split( "\n" );
- if (/^error$/i.test( stack[0] ) ) {
- stack.shift();
- }
- if ( fileName ) {
- include = [];
- for ( i = offset; i < stack.length; i++ ) {
- if ( stack[ i ].indexOf( fileName ) !== -1 ) {
- break;
- }
- include.push( stack[ i ] );
- }
- if ( include.length ) {
- return include.join( "\n" );
- }
- }
- return stack[ offset ];
- } else if ( e.sourceURL ) {
- // Safari, PhantomJS
- // hopefully one day Safari provides actual stacktraces
- // exclude useless self-reference for generated Error objects
- if ( /qunit.js$/.test( e.sourceURL ) ) {
- return;
- }
- // for actual exceptions, this is useful
- return e.sourceURL + ":" + e.line;
- }
-}
-function sourceFromStacktrace( offset ) {
- try {
- throw new Error();
- } catch ( e ) {
- return extractStacktrace( e, offset );
- }
-}
-
-/**
- * Escape text for attribute or text content.
- */
-function escapeText( s ) {
- if ( !s ) {
- return "";
- }
- s = s + "";
- // Both single quotes and double quotes (for attributes)
- return s.replace( /['"<>&]/g, function( s ) {
- switch( s ) {
- case "'":
- return "'";
- case "\"":
- return """;
- case "<":
- return "<";
- case ">":
- return ">";
- case "&":
- return "&";
- }
- });
-}
-
-function synchronize( callback, last ) {
- config.queue.push( callback );
-
- if ( config.autorun && !config.blocking ) {
- process( last );
- }
-}
-
-function process( last ) {
- function next() {
- process( last );
- }
- var start = new Date().getTime();
- config.depth = config.depth ? config.depth + 1 : 1;
-
- while ( config.queue.length && !config.blocking ) {
- if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) {
- config.queue.shift()();
- } else {
- setTimeout( next, 13 );
- break;
- }
- }
- config.depth--;
- if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
- done();
- }
-}
-
-function saveGlobal() {
- config.pollution = [];
-
- if ( config.noglobals ) {
- for ( var key in window ) {
- if ( hasOwn.call( window, key ) ) {
- // in Opera sometimes DOM element ids show up here, ignore them
- if ( /^qunit-test-output/.test( key ) ) {
- continue;
- }
- config.pollution.push( key );
- }
- }
- }
-}
-
-function checkPollution() {
- var newGlobals,
- deletedGlobals,
- old = config.pollution;
-
- saveGlobal();
-
- newGlobals = diff( config.pollution, old );
- if ( newGlobals.length > 0 ) {
- QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
- }
-
- deletedGlobals = diff( old, config.pollution );
- if ( deletedGlobals.length > 0 ) {
- QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
- }
-}
-
-// returns a new Array with the elements that are in a but not in b
-function diff( a, b ) {
- var i, j,
- result = a.slice();
-
- for ( i = 0; i < result.length; i++ ) {
- for ( j = 0; j < b.length; j++ ) {
- if ( result[i] === b[j] ) {
- result.splice( i, 1 );
- i--;
- break;
- }
- }
- }
- return result;
-}
-
-function extend( a, b ) {
- for ( var prop in b ) {
- if ( hasOwn.call( b, prop ) ) {
- // Avoid "Member not found" error in IE8 caused by messing with window.constructor
- if ( !( prop === "constructor" && a === window ) ) {
- if ( b[ prop ] === undefined ) {
- delete a[ prop ];
- } else {
- a[ prop ] = b[ prop ];
- }
- }
- }
- }
-
- return a;
-}
-
-/**
- * @param {HTMLElement} elem
- * @param {string} type
- * @param {Function} fn
- */
-function addEvent( elem, type, fn ) {
- // Standards-based browsers
- if ( elem.addEventListener ) {
- elem.addEventListener( type, fn, false );
- // IE
- } else {
- elem.attachEvent( "on" + type, fn );
- }
-}
-
-/**
- * @param {Array|NodeList} elems
- * @param {string} type
- * @param {Function} fn
- */
-function addEvents( elems, type, fn ) {
- var i = elems.length;
- while ( i-- ) {
- addEvent( elems[i], type, fn );
- }
-}
-
-function hasClass( elem, name ) {
- return (" " + elem.className + " ").indexOf(" " + name + " ") > -1;
-}
-
-function addClass( elem, name ) {
- if ( !hasClass( elem, name ) ) {
- elem.className += (elem.className ? " " : "") + name;
- }
-}
-
-function removeClass( elem, name ) {
- var set = " " + elem.className + " ";
- // Class name may appear multiple times
- while ( set.indexOf(" " + name + " ") > -1 ) {
- set = set.replace(" " + name + " " , " ");
- }
- // If possible, trim it for prettiness, but not necessarily
- elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, "");
-}
-
-function id( name ) {
- return !!( typeof document !== "undefined" && document && document.getElementById ) &&
- document.getElementById( name );
-}
-
-function registerLoggingCallback( key ) {
- return function( callback ) {
- config[key].push( callback );
- };
-}
-
-// Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks( key, scope, args ) {
- var i, callbacks;
- if ( QUnit.hasOwnProperty( key ) ) {
- QUnit[ key ].call(scope, args );
- } else {
- callbacks = config[ key ];
- for ( i = 0; i < callbacks.length; i++ ) {
- callbacks[ i ].call( scope, args );
- }
- }
-}
-
-// Test for equality any JavaScript type.
-// Author: Philippe Rathé
-QUnit.equiv = (function() {
-
- // Call the o related callback with the given arguments.
- function bindCallbacks( o, callbacks, args ) {
- var prop = QUnit.objectType( o );
- if ( prop ) {
- if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
- return callbacks[ prop ].apply( callbacks, args );
- } else {
- return callbacks[ prop ]; // or undefined
- }
- }
- }
-
- // the real equiv function
- var innerEquiv,
- // stack to decide between skip/abort functions
- callers = [],
- // stack to avoiding loops from circular referencing
- parents = [],
- parentsB = [],
-
- getProto = Object.getPrototypeOf || function ( obj ) {
- /*jshint camelcase:false */
- return obj.__proto__;
- },
- callbacks = (function () {
-
- // for string, boolean, number and null
- function useStrictEquality( b, a ) {
- /*jshint eqeqeq:false */
- if ( b instanceof a.constructor || a instanceof b.constructor ) {
- // to catch short annotation VS 'new' annotation of a
- // declaration
- // e.g. var i = 1;
- // var j = new Number(1);
- return a == b;
- } else {
- return a === b;
- }
- }
-
- return {
- "string": useStrictEquality,
- "boolean": useStrictEquality,
- "number": useStrictEquality,
- "null": useStrictEquality,
- "undefined": useStrictEquality,
-
- "nan": function( b ) {
- return isNaN( b );
- },
-
- "date": function( b, a ) {
- return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
- },
-
- "regexp": function( b, a ) {
- return QUnit.objectType( b ) === "regexp" &&
- // the regex itself
- a.source === b.source &&
- // and its modifiers
- a.global === b.global &&
- // (gmi) ...
- a.ignoreCase === b.ignoreCase &&
- a.multiline === b.multiline &&
- a.sticky === b.sticky;
- },
-
- // - skip when the property is a method of an instance (OOP)
- // - abort otherwise,
- // initial === would have catch identical references anyway
- "function": function() {
- var caller = callers[callers.length - 1];
- return caller !== Object && typeof caller !== "undefined";
- },
-
- "array": function( b, a ) {
- var i, j, len, loop, aCircular, bCircular;
-
- // b could be an object literal here
- if ( QUnit.objectType( b ) !== "array" ) {
- return false;
- }
-
- len = a.length;
- if ( len !== b.length ) {
- // safe and faster
- return false;
- }
-
- // track reference to avoid circular references
- parents.push( a );
- parentsB.push( b );
- for ( i = 0; i < len; i++ ) {
- loop = false;
- for ( j = 0; j < parents.length; j++ ) {
- aCircular = parents[j] === a[i];
- bCircular = parentsB[j] === b[i];
- if ( aCircular || bCircular ) {
- if ( a[i] === b[i] || aCircular && bCircular ) {
- loop = true;
- } else {
- parents.pop();
- parentsB.pop();
- return false;
- }
- }
- }
- if ( !loop && !innerEquiv(a[i], b[i]) ) {
- parents.pop();
- parentsB.pop();
- return false;
- }
- }
- parents.pop();
- parentsB.pop();
- return true;
- },
-
- "object": function( b, a ) {
- /*jshint forin:false */
- var i, j, loop, aCircular, bCircular,
- // Default to true
- eq = true,
- aProperties = [],
- bProperties = [];
-
- // comparing constructors is more strict than using
- // instanceof
- if ( a.constructor !== b.constructor ) {
- // Allow objects with no prototype to be equivalent to
- // objects with Object as their constructor.
- if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
- ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
- return false;
- }
- }
-
- // stack constructor before traversing properties
- callers.push( a.constructor );
-
- // track reference to avoid circular references
- parents.push( a );
- parentsB.push( b );
-
- // be strict: don't ensure hasOwnProperty and go deep
- for ( i in a ) {
- loop = false;
- for ( j = 0; j < parents.length; j++ ) {
- aCircular = parents[j] === a[i];
- bCircular = parentsB[j] === b[i];
- if ( aCircular || bCircular ) {
- if ( a[i] === b[i] || aCircular && bCircular ) {
- loop = true;
- } else {
- eq = false;
- break;
- }
- }
- }
- aProperties.push(i);
- if ( !loop && !innerEquiv(a[i], b[i]) ) {
- eq = false;
- break;
- }
- }
-
- parents.pop();
- parentsB.pop();
- callers.pop(); // unstack, we are done
-
- for ( i in b ) {
- bProperties.push( i ); // collect b's properties
- }
-
- // Ensures identical properties name
- return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
- }
- };
- }());
-
- innerEquiv = function() { // can take multiple arguments
- var args = [].slice.apply( arguments );
- if ( args.length < 2 ) {
- return true; // end transition
- }
-
- return (function( a, b ) {
- if ( a === b ) {
- return true; // catch the most you can
- } else if ( a === null || b === null || typeof a === "undefined" ||
- typeof b === "undefined" ||
- QUnit.objectType(a) !== QUnit.objectType(b) ) {
- return false; // don't lose time with error prone cases
- } else {
- return bindCallbacks(a, callbacks, [ b, a ]);
- }
-
- // apply transition with (1..n) arguments
- }( args[0], args[1] ) && innerEquiv.apply( this, args.splice(1, args.length - 1 )) );
- };
-
- return innerEquiv;
-}());
-
-/**
- * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
- * http://flesler.blogspot.com Licensed under BSD
- * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
- *
- * @projectDescription Advanced and extensible data dumping for Javascript.
- * @version 1.0.0
- * @author Ariel Flesler
- * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
- */
-QUnit.jsDump = (function() {
- function quote( str ) {
- return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\"";
- }
- function literal( o ) {
- return o + "";
- }
- function join( pre, arr, post ) {
- var s = jsDump.separator(),
- base = jsDump.indent(),
- inner = jsDump.indent(1);
- if ( arr.join ) {
- arr = arr.join( "," + s + inner );
- }
- if ( !arr ) {
- return pre + post;
- }
- return [ pre, inner + arr, base + post ].join(s);
- }
- function array( arr, stack ) {
- var i = arr.length, ret = new Array(i);
- this.up();
- while ( i-- ) {
- ret[i] = this.parse( arr[i] , undefined , stack);
- }
- this.down();
- return join( "[", ret, "]" );
- }
-
- var reName = /^function (\w+)/,
- jsDump = {
- // type is used mostly internally, you can fix a (custom)type in advance
- parse: function( obj, type, stack ) {
- stack = stack || [ ];
- var inStack, res,
- parser = this.parsers[ type || this.typeOf(obj) ];
-
- type = typeof parser;
- inStack = inArray( obj, stack );
-
- if ( inStack !== -1 ) {
- return "recursion(" + (inStack - stack.length) + ")";
- }
- if ( type === "function" ) {
- stack.push( obj );
- res = parser.call( this, obj, stack );
- stack.pop();
- return res;
- }
- return ( type === "string" ) ? parser : this.parsers.error;
- },
- typeOf: function( obj ) {
- var type;
- if ( obj === null ) {
- type = "null";
- } else if ( typeof obj === "undefined" ) {
- type = "undefined";
- } else if ( QUnit.is( "regexp", obj) ) {
- type = "regexp";
- } else if ( QUnit.is( "date", obj) ) {
- type = "date";
- } else if ( QUnit.is( "function", obj) ) {
- type = "function";
- } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
- type = "window";
- } else if ( obj.nodeType === 9 ) {
- type = "document";
- } else if ( obj.nodeType ) {
- type = "node";
- } else if (
- // native arrays
- toString.call( obj ) === "[object Array]" ||
- // NodeList objects
- ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
- ) {
- type = "array";
- } else if ( obj.constructor === Error.prototype.constructor ) {
- type = "error";
- } else {
- type = typeof obj;
- }
- return type;
- },
- separator: function() {
- return this.multiline ? this.HTML ? "
" : "\n" : this.HTML ? " " : " ";
- },
- // extra can be a number, shortcut for increasing-calling-decreasing
- indent: function( extra ) {
- if ( !this.multiline ) {
- return "";
- }
- var chr = this.indentChar;
- if ( this.HTML ) {
- chr = chr.replace( /\t/g, " " ).replace( / /g, " " );
- }
- return new Array( this.depth + ( extra || 0 ) ).join(chr);
- },
- up: function( a ) {
- this.depth += a || 1;
- },
- down: function( a ) {
- this.depth -= a || 1;
- },
- setParser: function( name, parser ) {
- this.parsers[name] = parser;
- },
- // The next 3 are exposed so you can use them
- quote: quote,
- literal: literal,
- join: join,
- //
- depth: 1,
- // This is the list of parsers, to modify them, use jsDump.setParser
- parsers: {
- window: "[Window]",
- document: "[Document]",
- error: function(error) {
- return "Error(\"" + error.message + "\")";
- },
- unknown: "[Unknown]",
- "null": "null",
- "undefined": "undefined",
- "function": function( fn ) {
- var ret = "function",
- // functions never have name in IE
- name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];
-
- if ( name ) {
- ret += " " + name;
- }
- ret += "( ";
-
- ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
- return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
- },
- array: array,
- nodelist: array,
- "arguments": array,
- object: function( map, stack ) {
- /*jshint forin:false */
- var ret = [ ], keys, key, val, i;
- QUnit.jsDump.up();
- keys = [];
- for ( key in map ) {
- keys.push( key );
- }
- keys.sort();
- for ( i = 0; i < keys.length; i++ ) {
- key = keys[ i ];
- val = map[ key ];
- ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
- }
- QUnit.jsDump.down();
- return join( "{", ret, "}" );
- },
- node: function( node ) {
- var len, i, val,
- open = QUnit.jsDump.HTML ? "<" : "<",
- close = QUnit.jsDump.HTML ? ">" : ">",
- tag = node.nodeName.toLowerCase(),
- ret = open + tag,
- attrs = node.attributes;
-
- if ( attrs ) {
- for ( i = 0, len = attrs.length; i < len; i++ ) {
- val = attrs[i].nodeValue;
- // IE6 includes all attributes in .attributes, even ones not explicitly set.
- // Those have values like undefined, null, 0, false, "" or "inherit".
- if ( val && val !== "inherit" ) {
- ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" );
- }
- }
- }
- ret += close;
-
- // Show content of TextNode or CDATASection
- if ( node.nodeType === 3 || node.nodeType === 4 ) {
- ret += node.nodeValue;
- }
-
- return ret + open + "/" + tag + close;
- },
- // function calls it internally, it's the arguments part of the function
- functionArgs: function( fn ) {
- var args,
- l = fn.length;
-
- if ( !l ) {
- return "";
- }
-
- args = new Array(l);
- while ( l-- ) {
- // 97 is 'a'
- args[l] = String.fromCharCode(97+l);
- }
- return " " + args.join( ", " ) + " ";
- },
- // object calls it internally, the key part of an item in a map
- key: quote,
- // function calls it internally, it's the content of the function
- functionCode: "[code]",
- // node calls it internally, it's an html attribute value
- attribute: quote,
- string: quote,
- date: quote,
- regexp: literal,
- number: literal,
- "boolean": literal
- },
- // if true, entities are escaped ( <, >, \t, space and \n )
- HTML: false,
- // indentation unit
- indentChar: " ",
- // if true, items in a collection, are separated by a \n, else just a space.
- multiline: true
- };
-
- return jsDump;
-}());
-
-// from jquery.js
-function inArray( elem, array ) {
- if ( array.indexOf ) {
- return array.indexOf( elem );
- }
-
- for ( var i = 0, length = array.length; i < length; i++ ) {
- if ( array[ i ] === elem ) {
- return i;
- }
- }
-
- return -1;
-}
-
-/*
- * Javascript Diff Algorithm
- * By John Resig (http://ejohn.org/)
- * Modified by Chu Alan "sprite"
- *
- * Released under the MIT license.
- *
- * More Info:
- * http://ejohn.org/projects/javascript-diff-algorithm/
- *
- * Usage: QUnit.diff(expected, actual)
- *
- * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick brown fox jumped jumps over"
- */
-QUnit.diff = (function() {
- /*jshint eqeqeq:false, eqnull:true */
- function diff( o, n ) {
- var i,
- ns = {},
- os = {};
-
- for ( i = 0; i < n.length; i++ ) {
- if ( !hasOwn.call( ns, n[i] ) ) {
- ns[ n[i] ] = {
- rows: [],
- o: null
- };
- }
- ns[ n[i] ].rows.push( i );
- }
-
- for ( i = 0; i < o.length; i++ ) {
- if ( !hasOwn.call( os, o[i] ) ) {
- os[ o[i] ] = {
- rows: [],
- n: null
- };
- }
- os[ o[i] ].rows.push( i );
- }
-
- for ( i in ns ) {
- if ( hasOwn.call( ns, i ) ) {
- if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) {
- n[ ns[i].rows[0] ] = {
- text: n[ ns[i].rows[0] ],
- row: os[i].rows[0]
- };
- o[ os[i].rows[0] ] = {
- text: o[ os[i].rows[0] ],
- row: ns[i].rows[0]
- };
- }
- }
- }
-
- for ( i = 0; i < n.length - 1; i++ ) {
- if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
- n[ i + 1 ] == o[ n[i].row + 1 ] ) {
-
- n[ i + 1 ] = {
- text: n[ i + 1 ],
- row: n[i].row + 1
- };
- o[ n[i].row + 1 ] = {
- text: o[ n[i].row + 1 ],
- row: i + 1
- };
- }
- }
-
- for ( i = n.length - 1; i > 0; i-- ) {
- if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
- n[ i - 1 ] == o[ n[i].row - 1 ]) {
-
- n[ i - 1 ] = {
- text: n[ i - 1 ],
- row: n[i].row - 1
- };
- o[ n[i].row - 1 ] = {
- text: o[ n[i].row - 1 ],
- row: i - 1
- };
- }
- }
-
- return {
- o: o,
- n: n
- };
- }
-
- return function( o, n ) {
- o = o.replace( /\s+$/, "" );
- n = n.replace( /\s+$/, "" );
-
- var i, pre,
- str = "",
- out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
- oSpace = o.match(/\s+/g),
- nSpace = n.match(/\s+/g);
-
- if ( oSpace == null ) {
- oSpace = [ " " ];
- }
- else {
- oSpace.push( " " );
- }
-
- if ( nSpace == null ) {
- nSpace = [ " " ];
- }
- else {
- nSpace.push( " " );
- }
-
- if ( out.n.length === 0 ) {
- for ( i = 0; i < out.o.length; i++ ) {
- str += "" + out.o[i] + oSpace[i] + "";
- }
- }
- else {
- if ( out.n[0].text == null ) {
- for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
- str += "" + out.o[n] + oSpace[n] + "";
- }
- }
-
- for ( i = 0; i < out.n.length; i++ ) {
- if (out.n[i].text == null) {
- str += "" + out.n[i] + nSpace[i] + "";
- }
- else {
- // `pre` initialized at top of scope
- pre = "";
-
- for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
- pre += "" + out.o[n] + oSpace[n] + "";
- }
- str += " " + out.n[i].text + nSpace[i] + pre;
- }
- }
- }
-
- return str;
- };
-}());
-
-// for CommonJS environments, export everything
-if ( typeof exports !== "undefined" ) {
- extend( exports, QUnit.constructor.prototype );
-}
-
-// get at whatever the global object is, like window in browsers
-}( (function() {return this;}.call()) ));
diff --git a/applib-targets/emscripten/timeshift-js/tests.html b/applib-targets/emscripten/timeshift-js/tests.html
deleted file mode 100644
index 0cb517039a..0000000000
--- a/applib-targets/emscripten/timeshift-js/tests.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-TimeShift.js unit tests
-
-
-
-
-
-
-
-
-
-
diff --git a/applib-targets/emscripten/timeshift-js/tests.js b/applib-targets/emscripten/timeshift-js/tests.js
deleted file mode 100644
index cf00f65f50..0000000000
--- a/applib-targets/emscripten/timeshift-js/tests.js
+++ /dev/null
@@ -1,520 +0,0 @@
-var JAN = 0;
-var FEB = 1;
-var MAR = 2;
-var APR = 3;
-var MAY = 4;
-var JUN = 5;
-var JUL = 6;
-var AUG = 7;
-var SEP = 8;
-var OCT = 9;
-var NOV = 10;
-var DEC = 11;
-
-var SUN = 0;
-var MON = 1;
-var TUE = 2;
-var WED = 3;
-var THU = 4;
-var FRI = 5;
-var SAT = 6;
-
-function matches(d, year, month, day, hour, min, sec, msec, wkday) {
- equal(d.getFullYear(), year, "year");
- equal(d.getMonth(), month, "month");
- equal(d.getDate(), day, "day of month");
- equal(d.getHours(), hour, "hour");
- equal(d.getMinutes(), min, "minutes");
- equal(d.getSeconds(), sec, "seconds");
- equal(d.getMilliseconds(), msec, "milliseconds");
- equal(d.getDay(), wkday, "weekday");
- equal(d.getYear(), year-1900, "year-1900");
-}
-
-function matchesUTC(d, year, month, day, hour, min, sec, msec, wkday) {
- equal(d.getUTCFullYear(), year, "UTC year");
- equal(d.getUTCMonth(), month, "UTC month");
- equal(d.getUTCDate(), day, "UTC day of month");
- equal(d.getUTCHours(), hour, "UTC hour");
- equal(d.getUTCMinutes(), min, "UTC minutes");
- equal(d.getUTCSeconds(), sec, "UTC seconds");
- equal(d.getUTCMilliseconds(), msec, "UTC milliseconds");
- equal(d.getUTCDay(), wkday, "UTC weekday");
-}
-
-
-////////////////// Constructor tests ///////////////////
-
-test("no-arg constructor; no time set", function() {
- TimeShift.setTimezoneOffset(-120);
- var now = new Date();
- var d = new TimeShift.Date();
- ok(now.getTime() - d.getTime() < 500);
-});
-
-test("no-arg constructor; time set", function() {
- TimeShift.setTimezoneOffset(-120);
- TimeShift.setTime(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- var d = new TimeShift.Date();
- matches(d, 2013, AUG, 8, 21, 53, 4, 123, THU);
- matchesUTC(d, 2013, AUG, 8, 19, 53, 4, 123, THU);
- TimeShift.setTime(undefined);
-});
-
-test("no-arg constructor; reset to normal time", function() {
- TimeShift.setTimezoneOffset(-120);
- TimeShift.setTime(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- TimeShift.setTime(undefined);
- var now = new Date();
- var d = new TimeShift.Date();
- ok(now.getTime() - d.getTime() < 500);
-});
-
-
-test("timestamp constructor", function() {
- TimeShift.setTimezoneOffset(-120);
- var d = new TimeShift.Date(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- matches(d, 2013, AUG, 8, 21, 53, 4, 123, THU);
- matchesUTC(d, 2013, AUG, 8, 19, 53, 4, 123, THU);
-});
-
-test("constructor year-month", function() {
- TimeShift.setTimezoneOffset(180);
- var d = new TimeShift.Date(2012, MAR); // Thu 2012-03-01 00:00:00 -0300
- matches(d, 2012, MAR, 1, 00, 00, 00, 000, THU);
- matchesUTC(d, 2012, MAR, 1, 03, 00, 00, 000, THU);
-});
-
-test("constructor year-month-day", function() {
- TimeShift.setTimezoneOffset(-180);
- var d = new TimeShift.Date(2012, MAR, 5); // Mon 2012-03-05 00:00:00 +0300
- matches(d, 2012, MAR, 5, 00, 00, 00, 000, MON);
- matchesUTC(d, 2012, MAR, 4, 21, 00, 00, 000, SUN);
-});
-
-test("constructor year-month-day-hour", function() {
- TimeShift.setTimezoneOffset(-180);
- var d = new TimeShift.Date(2012, MAR, 5, 23); // Mon 2012-03-05 23:00:00 +0300
- matches(d, 2012, MAR, 5, 23, 00, 00, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 20, 00, 00, 000, MON);
-});
-
-test("constructor year-month-day-hour-min", function() {
- TimeShift.setTimezoneOffset(-180);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45); // Mon 2012-03-05 23:45:00 +0300
- matches(d, 2012, MAR, 5, 23, 45, 00, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 20, 45, 00, 000, MON);
-});
-
-test("constructor year-month-day-hour-min-sec", function() {
- TimeShift.setTimezoneOffset(-180);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0300
- matches(d, 2012, MAR, 5, 23, 45, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 20, 45, 12, 000, MON);
-});
-
-test("constructor year-month-day-hour-min-sec-msec", function() {
- TimeShift.setTimezoneOffset(-180);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 23); // Mon 2012-03-05 23:45:12.023 +0300
- matches(d, 2012, MAR, 5, 23, 45, 12, 23, MON);
- matchesUTC(d, 2012, MAR, 5, 20, 45, 12, 23, MON);
-});
-
-test("constructor year-month with timezone shift over month border", function() {
- TimeShift.setTimezoneOffset(-120);
- var d = new TimeShift.Date(2012, MAR); // Thu 2012-03-01 00:00:00 +0200
- matches(d, 2012, MAR, 1, 00, 00, 00, 000, THU);
- matchesUTC(d, 2012, FEB, 29, 22, 00, 00, 000, WED);
-});
-
-test("timezone shift over year boundary", function() {
- TimeShift.setTimezoneOffset(-630);
- var d = new TimeShift.Date(1356989624234); // Mon 2012-12-31 21:33:44.234 UTC
- matches(d, 2013, JAN, 1, 8, 03, 44, 234, TUE);
- matchesUTC(d, 2012, DEC, 31, 21, 33, 44, 234, MON);
-});
-
-
-/////////////////// Setter tests /////////////////////
-
-test("set test precondition", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- matches(d, 2012, MAR, 5, 23, 45, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 12, 000, MON);
-});
-
-//// Local time
-
-test("setFullYear(year)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setFullYear(2011);
- matches(d, 2011, MAR, 5, 23, 45, 12, 000, SAT);
- matchesUTC(d, 2011, MAR, 5, 18, 45, 12, 000, SAT);
-});
-
-test("setFullYear(year, month)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setFullYear(2011, APR);
- matches(d, 2011, APR, 5, 23, 45, 12, 000, TUE);
- matchesUTC(d, 2011, APR, 5, 18, 45, 12, 000, TUE);
-});
-
-test("setFullYear(year, month, day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setFullYear(2011, APR, 7);
- matches(d, 2011, APR, 7, 23, 45, 12, 000, THU);
- matchesUTC(d, 2011, APR, 7, 18, 45, 12, 000, THU);
-});
-
-test("setYear(year)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setYear(111);
- matches(d, 2011, MAR, 5, 23, 45, 12, 000, SAT);
- matchesUTC(d, 2011, MAR, 5, 18, 45, 12, 000, SAT);
-});
-
-test("setMonth(month)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMonth(APR);
- matches(d, 2012, APR, 5, 23, 45, 12, 000, THU);
- matchesUTC(d, 2012, APR, 5, 18, 45, 12, 000, THU);
-});
-
-test("setMonth(month, day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMonth(APR, 7);
- matches(d, 2012, APR, 7, 23, 45, 12, 000, SAT);
- matchesUTC(d, 2012, APR, 7, 18, 45, 12, 000, SAT);
-});
-
-test("setDate(day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setDate(7);
- matches(d, 2012, MAR, 7, 23, 45, 12, 000, WED);
- matchesUTC(d, 2012, MAR, 7, 18, 45, 12, 000, WED);
-});
-
-test("setHours(hour)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setHours(20);
- matches(d, 2012, MAR, 5, 20, 45, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 15, 45, 12, 000, MON);
-});
-
-test("setHours(hour, min)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setHours(20, 51);
- matches(d, 2012, MAR, 5, 20, 51, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 15, 51, 12, 000, MON);
-});
-
-test("setHours(hour, min, sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setHours(20, 51, 22);
- matches(d, 2012, MAR, 5, 20, 51, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 15, 51, 22, 000, MON);
-});
-
-test("setHours(hour, min, sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setHours(20, 51, 22, 123);
- matches(d, 2012, MAR, 5, 20, 51, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 15, 51, 22, 123, MON);
-});
-
-test("setMinutes(min)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMinutes(52);
- matches(d, 2012, MAR, 5, 23, 52, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 12, 000, MON);
-});
-
-test("setMinutes(min, sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMinutes(52, 22);
- matches(d, 2012, MAR, 5, 23, 52, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 22, 000, MON);
-});
-
-test("setMinutes(min, sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMinutes(52, 22, 123);
- matches(d, 2012, MAR, 5, 23, 52, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 22, 123, MON);
-});
-
-test("setSeconds(sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setSeconds(22);
- matches(d, 2012, MAR, 5, 23, 45, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 22, 000, MON);
-});
-
-test("setSeconds(sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setSeconds(22, 123);
- matches(d, 2012, MAR, 5, 23, 45, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 22, 123, MON);
-});
-
-test("setMilliseconds(msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setMilliseconds(123);
- matches(d, 2012, MAR, 5, 23, 45, 12, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 12, 123, MON);
-});
-
-
-//// UTC time
-
-test("setUTCFullYear(year)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCFullYear(2011);
- matches(d, 2011, MAR, 5, 23, 45, 12, 000, SAT);
- matchesUTC(d, 2011, MAR, 5, 18, 45, 12, 000, SAT);
-});
-
-test("setUTCFullYear(year, month)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCFullYear(2011, APR);
- matches(d, 2011, APR, 5, 23, 45, 12, 000, TUE);
- matchesUTC(d, 2011, APR, 5, 18, 45, 12, 000, TUE);
-});
-
-test("setUTCFullYear(year, month, day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCFullYear(2011, APR, 7);
- matches(d, 2011, APR, 7, 23, 45, 12, 000, THU);
- matchesUTC(d, 2011, APR, 7, 18, 45, 12, 000, THU);
-});
-
-test("setUTCMonth(month)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMonth(APR);
- matches(d, 2012, APR, 5, 23, 45, 12, 000, THU);
- matchesUTC(d, 2012, APR, 5, 18, 45, 12, 000, THU);
-});
-
-test("setUTCMonth(month, day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMonth(APR, 7);
- matches(d, 2012, APR, 7, 23, 45, 12, 000, SAT);
- matchesUTC(d, 2012, APR, 7, 18, 45, 12, 000, SAT);
-});
-
-test("setUTCDate(day)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCDate(7);
- matches(d, 2012, MAR, 7, 23, 45, 12, 000, WED);
- matchesUTC(d, 2012, MAR, 7, 18, 45, 12, 000, WED);
-});
-
-test("setUTCHours(hour)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCHours(10);
- matches(d, 2012, MAR, 5, 15, 45, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 10, 45, 12, 000, MON);
-});
-
-test("setUTCHours(hour, min)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCHours(10, 51);
- matches(d, 2012, MAR, 5, 15, 51, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 10, 51, 12, 000, MON);
-});
-
-test("setUTCHours(hour, min, sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCHours(10, 51, 22);
- matches(d, 2012, MAR, 5, 15, 51, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 10, 51, 22, 000, MON);
-});
-
-test("setUTCHours(hour, min, sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCHours(10, 51, 22, 123);
- matches(d, 2012, MAR, 5, 15, 51, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 10, 51, 22, 123, MON);
-});
-
-test("setUTCMinutes(min)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMinutes(52);
- matches(d, 2012, MAR, 5, 23, 52, 12, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 12, 000, MON);
-});
-
-test("setUTCMinutes(min, sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMinutes(52, 22);
- matches(d, 2012, MAR, 5, 23, 52, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 22, 000, MON);
-});
-
-test("setUTCMinutes(min, sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMinutes(52, 22, 123);
- matches(d, 2012, MAR, 5, 23, 52, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 52, 22, 123, MON);
-});
-
-test("setUTCSeconds(sec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCSeconds(22);
- matches(d, 2012, MAR, 5, 23, 45, 22, 000, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 22, 000, MON);
-});
-
-test("setUTCSeconds(sec, msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCSeconds(22, 123);
- matches(d, 2012, MAR, 5, 23, 45, 22, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 22, 123, MON);
-});
-
-test("setUTCMilliseconds(msec)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setUTCMilliseconds(123);
- matches(d, 2012, MAR, 5, 23, 45, 12, 123, MON);
- matchesUTC(d, 2012, MAR, 5, 18, 45, 12, 123, MON);
-});
-
-//// Other setters
-
-test("setTime(time)", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12); // Mon 2012-03-05 23:45:12 +0500
- d.setTime(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- matches(d, 2013, AUG, 9, 00, 53, 04, 123, FRI);
- matchesUTC(d, 2013, AUG, 8, 19, 53, 04, 123, THU);
-});
-
-
-//////////////////// Other functionality ////////////////////
-
-test("getTime(), valueOf()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12.123 +0500
- equal(d.getTime(), 1330973112123);
- equal(d.valueOf(), 1330973112123);
-});
-
-test("getTimezoneOffset()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12.123 +0500
- equal(d.getTimezoneOffset(), -300);
- TimeShift.setTimezoneOffset(-650);
- equal(d.getTimezoneOffset(), -650);
- TimeShift.setTimezoneOffset(550);
- equal(d.getTimezoneOffset(), 550);
-});
-
-
-///////////////////// "Class" functions ////////////////////
-
-test("Date.now(); no time set", function() {
- TimeShift.setTimezoneOffset(-120);
- var now = Date.now();
- var t = TimeShift.Date.now();
- ok(now - t < 500);
-});
-
-test("Date.now(); time set", function() {
- TimeShift.setTimezoneOffset(-120);
- TimeShift.setTime(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- var t = TimeShift.Date.now();
- equal(t, 1375991584123);
- TimeShift.setTime(undefined);
-});
-
-test("Date.now(); reset to normal time", function() {
- TimeShift.setTimezoneOffset(-120);
- TimeShift.setTime(1375991584123); // Thu 2013-08-08 19:53:04.123 UTC
- TimeShift.setTime(undefined);
- var now = Date.now();
- var t = TimeShift.Date.now();
- ok(now - t < 500);
-});
-
-test("Date.UTC", function() {
- TimeShift.setTimezoneOffset(-120);
- var t = TimeShift.Date.UTC(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12 UTC
- equal(t, 1330991112123);
-});
-
-// Date.parse is probably not correct
-
-
-///////////////////// String functions (approximate) /////////////////////
-
-test("toString()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 6, 7, 8, 123); // Mon 2012-03-05 06:07:08.123 +0500
- equal(d.toString(), "Mon Mar 05 2012 06:07:08 GMT+0500");
-});
-
-test("toString() 2", function() {
- TimeShift.setTimezoneOffset(300);
- var d = new TimeShift.Date(2012, DEC, 29, 6, 7, 8, 123); // Sat 2012-12-29 06:07:08.123 -0500
- equal(d.toString(), "Sat Dec 29 2012 06:07:08 GMT-0500");
-});
-
-test("toString() 3", function() {
- TimeShift.setTimezoneOffset(0);
- var d = new TimeShift.Date(2012, JAN, 1, 6, 7, 8, 123); // Sun 2012-01-01 06:07:08.123 GMT
- equal(d.toString(), "Sun Jan 01 2012 06:07:08 GMT");
-});
-
-test("toUTCString()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12.123 +0500
- // IE has slightly own format
- ok(d.toUTCString().match(/^Mon, 0?5 Mar 2012 18:45:12 (GMT|UTC)$/));
-});
-
-test("toISOString()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12.123 +0500
- equal(d.toISOString(), "2012-03-05T18:45:12.123Z");
-});
-
-test("toJSON()", function() {
- TimeShift.setTimezoneOffset(-300);
- var d = new TimeShift.Date(2012, MAR, 5, 23, 45, 12, 123); // Mon 2012-03-05 23:45:12.123 +0500
- equal(d.toJSON(), "2012-03-05T18:45:12.123Z");
-});
-
diff --git a/applib-targets/emscripten/timeshift-js/timeshift.js b/applib-targets/emscripten/timeshift-js/timeshift.js
deleted file mode 100644
index 24dc12c34c..0000000000
--- a/applib-targets/emscripten/timeshift-js/timeshift.js
+++ /dev/null
@@ -1,244 +0,0 @@
-/*!
- * TimeShift.js version 20130811
- *
- * Copyright 2013 Mobile Wellness Solutions MWS Ltd, Sampo Niskanen
- * Released under the MIT license
- */
-
-// Add to Rocky.Module:
-
-Module.TimeShift = (function(originalDate) {
-
- var OriginalDate = originalDate;
-
- var TimeShift = {};
-
- var currentTime = undefined;
- var timezoneOffset = new OriginalDate().getTimezoneOffset();
-
- function currentDate() {
- if (currentTime) {
- return new OriginalDate(currentTime);
- } else {
- return new OriginalDate();
- }
- }
-
-
- function realLocalToUtc(realLocal) {
- return new OriginalDate(realLocal.getTime() - realLocal.getTimezoneOffset()*60*1000 + timezoneOffset*60*1000);
- }
- function utcToLocal(utc) {
- return new OriginalDate(utc.getTime() - timezoneOffset*60*1000);
- }
- function localToUtc(local) {
- return new OriginalDate(local.getTime() + timezoneOffset*60*1000);
- }
- function twoDigit(n) {
- if (n < 10) {
- return "0" + n;
- } else {
- return "" + n;
- }
- }
- function timezoneName() {
- var zone = "GMT";
- var offset = Math.abs(timezoneOffset);
- if (timezoneOffset < 0) {
- zone = zone + "+";
- } else if (timezoneOffset > 0) {
- zone = zone + "-";
- } else {
- return zone;
- }
- return zone + twoDigit(Math.floor(offset/60)) + twoDigit(offset%60);
- }
-
-
- /**
- * Return the current time zone offset in minutes. A value of -60 corresponds to GMT+1,
- * +60 to GTM-1. Default value is from new Date().getTimezoneOffset().
- */
- TimeShift.getTimezoneOffset = function() {
- return timezoneOffset;
- }
-
- /**
- * Set the time zone offset in minutes. -60 corresponds to GMT+1, +60 to GTM-1.
- * Changing this will affect the results also for previously created Date instances.
- */
- TimeShift.setTimezoneOffset = function(offset) {
- timezoneOffset = offset;
- }
-
- /**
- * Return the currently overridden time value as milliseconds after Jan 1 1970 in UTC time.
- * The default value is undefined, which indicates using the real current time.
- */
- TimeShift.getTime = function() {
- return currentTime;
- }
-
- /**
- * Set the current time in milliseconds after Jan 1 1970 in UTC time. Setting this
- * to undefined will reset to the real current time.
- */
- TimeShift.setTime = function(time) {
- currentTime = time;
- }
-
- /**
- * Access to the original Date constructor.
- */
- TimeShift.OriginalDate = OriginalDate;
-
-
- /**
- * Mock implementation of Date.
- */
- TimeShift.Date = function() {
-
- // Detect whether we're being called with 'new'
- // From http://stackoverflow.com/questions/367768/how-to-detect-if-a-function-is-called-as-constructor
- var isConstructor = false;
- if (this instanceof TimeShift.Date && !this.__previouslyConstructedByTimeShift) {
- isConstructor = true;
- this.__previouslyConstructedByTimeShift = true;
- }
- if (!isConstructor) {
- return (new TimeShift.Date()).toString();
- }
-
- switch (arguments.length) {
- case 0:
- this.utc = currentDate();
- break;
- case 1:
- this.utc = new OriginalDate(arguments[0]);
- break;
- case 2:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1]));
- break;
- case 3:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1], arguments[2]));
- break;
- case 4:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3]));
- break;
- case 5:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]));
- break;
- case 6:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]));
- break;
- default:
- this.utc = realLocalToUtc(new OriginalDate(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]));
- break;
- }
- }
-
- TimeShift.Date.prototype.getDate = function() { return utcToLocal(this.utc).getUTCDate(); }
- TimeShift.Date.prototype.getDay = function() { return utcToLocal(this.utc).getUTCDay(); }
- TimeShift.Date.prototype.getFullYear = function() { return utcToLocal(this.utc).getUTCFullYear(); }
- TimeShift.Date.prototype.getHours = function() { return utcToLocal(this.utc).getUTCHours(); }
- TimeShift.Date.prototype.getMilliseconds = function() { return utcToLocal(this.utc).getUTCMilliseconds(); }
- TimeShift.Date.prototype.getMinutes = function() { return utcToLocal(this.utc).getUTCMinutes(); }
- TimeShift.Date.prototype.getMonth = function() { return utcToLocal(this.utc).getUTCMonth(); }
- TimeShift.Date.prototype.getSeconds = function() { return utcToLocal(this.utc).getUTCSeconds(); }
-
- TimeShift.Date.prototype.getUTCDate = function() { return this.utc.getUTCDate(); }
- TimeShift.Date.prototype.getUTCDay = function() { return this.utc.getUTCDay(); }
- TimeShift.Date.prototype.getUTCFullYear = function() { return this.utc.getUTCFullYear(); }
- TimeShift.Date.prototype.getUTCHours = function() { return this.utc.getUTCHours(); }
- TimeShift.Date.prototype.getUTCMilliseconds = function() { return this.utc.getUTCMilliseconds(); }
- TimeShift.Date.prototype.getUTCMinutes = function() { return this.utc.getUTCMinutes(); }
- TimeShift.Date.prototype.getUTCMonth = function() { return this.utc.getUTCMonth(); }
- TimeShift.Date.prototype.getUTCSeconds = function() { return this.utc.getUTCSeconds(); }
-
- TimeShift.Date.prototype.setDate = function() { var d = utcToLocal(this.utc); d.setUTCDate.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setFullYear = function() { var d = utcToLocal(this.utc); d.setUTCFullYear.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setHours = function() { var d = utcToLocal(this.utc); d.setUTCHours.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setMilliseconds = function() { var d = utcToLocal(this.utc); d.setUTCMilliseconds.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setMinutes = function() { var d = utcToLocal(this.utc); d.setUTCMinutes.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setMonth = function() { var d = utcToLocal(this.utc); d.setUTCMonth.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
- TimeShift.Date.prototype.setSeconds = function() { var d = utcToLocal(this.utc); d.setUTCSeconds.apply(d, Array.prototype.slice.call(arguments, 0)); this.utc = localToUtc(d); }
-
- TimeShift.Date.prototype.setUTCDate = function() { this.utc.setUTCDate.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCFullYear = function() { this.utc.setUTCFullYear.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCHours = function() { this.utc.setUTCHours.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCMilliseconds = function() { this.utc.setUTCMilliseconds.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCMinutes = function() { this.utc.setUTCMinutes.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCMonth = function() { this.utc.setUTCMonth.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
- TimeShift.Date.prototype.setUTCSeconds = function() { this.utc.setUTCSeconds.apply(this.utc, Array.prototype.slice.call(arguments, 0)); }
-
-
- TimeShift.Date.prototype.getYear = function() { return this.getFullYear() - 1900; }
- TimeShift.Date.prototype.setYear = function(v) { this.setFullYear(v + 1900); }
-
- TimeShift.Date.prototype.getTime = function() { return this.utc.getTime(); }
- TimeShift.Date.prototype.setTime = function(v) { this.utc.setTime(v); }
-
- TimeShift.Date.prototype.getTimezoneOffset = function() { return timezoneOffset; }
-
- TimeShift.Date.prototype.toDateString = function() { return utcToLocal(this.utc).toDateString(); } // Wrong
- // Added to Date.prototype by rocky_api_datetime.c:
- // TimeShift.Date.prototype.toLocaleDateString = function() { return utcToLocal(this.utc).toLocaleDateString(); } // Wrong
-
- TimeShift.Date.prototype.toISOString = function() { return this.utc.toISOString(); }
- TimeShift.Date.prototype.toGMTString = function() { return this.utc.toGMTString(); }
- TimeShift.Date.prototype.toUTCString = function() { return this.utc.toUTCString(); }
-
- TimeShift.Date.prototype.toString = function() {
- var wkdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
- var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
- var d = utcToLocal(this.utc);
- // Mon Mar 05 2012 06:07:08 GMT+0500
- return wkdays[d.getUTCDay()] + " " + months[d.getUTCMonth()] + " " + twoDigit(d.getUTCDate()) + " " + d.getUTCFullYear() +
- " " + twoDigit(d.getUTCHours()) + ":" + twoDigit(d.getUTCMinutes()) + ":" + twoDigit(d.getUTCSeconds()) + " " + timezoneName();
- }
-
- // Added to Date.prototype by rocky_api_datetime.c:
- // TimeShift.Date.prototype.toLocaleString = function() { return this.toString(); } // Wrong
- // TimeShift.Date.prototype.toLocaleTimeString = function() { return this.toString(); } // Wrong
- TimeShift.Date.prototype.toTimeString = function() { return this.toString(); } // Wrong
-
- TimeShift.Date.prototype.toJSON = function() { return this.utc.toJSON(); }
- TimeShift.Date.prototype.valueOf = function() { return this.utc.getTime(); }
-
-
- TimeShift.Date.now = function() { return currentDate().getTime(); }
- TimeShift.Date.parse = OriginalDate.parse; // Wrong
- TimeShift.Date.UTC = OriginalDate.UTC;
-
-
- /**
- * Helper method that describes a Date object contents.
- */
- TimeShift.Date.prototype.desc = function() {
- return "utc=" + this.utc.toUTCString() + " local=" + utcToLocal(this.utc).toUTCString() + " offset=" + timezoneOffset;
- }
-
- return TimeShift;
-})(Date);
-
-// Replace original Date:
-Date = Module.TimeShift.Date;
-
-var callTickTimerServiceHandleTimeChange = function() {
- Module.ccall('tick_timer_service_handle_time_change');
-}
-
-Module.setTime = function(time) {
- Module.TimeShift.setTime(time);
- callTickTimerServiceHandleTimeChange();
-}
-
-Module.setTimezoneOffset = function(offset) {
- Module.TimeShift.setTimezoneOffset(offset);
- callTickTimerServiceHandleTimeChange();
-}
-
-Module.set24hStyle = function(is_24h_style) {
- Module.ccall('clock_set_24h_style', null, ['number'], [is_24h_style]);
- callTickTimerServiceHandleTimeChange();
-}
diff --git a/applib-targets/emscripten/transform_js.py b/applib-targets/emscripten/transform_js.py
deleted file mode 100755
index b1eeca9dff..0000000000
--- a/applib-targets/emscripten/transform_js.py
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2024 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import argparse
-import re
-import sys
-
-
-def main():
- parser = argparse.ArgumentParser()
- parser.add_argument('js_file')
- parser.add_argument('--unittest', action='store_true')
- args = parser.parse_args()
-
- # load file to be processed
- with open(args.js_file, "r") as f:
- source = f.read()
-
- # remove all known functions for memory access
- # note: this implementation uses a weak heuristic: only the closing } of a
- # given function has no indentation
- for func in ["SAFE_HEAP_LOAD", "SAFE_HEAP_LOAD_D", "SAFE_HEAP_STORE", "SAFE_HEAP_STORE_D"]:
- source = re.sub("function %s\([^\)]*\)\s*{(.*\n)+?}" % func, "", source)
-
- # applies the same patch as seen at
- # https://github.com/kripken/emscripten/commit/bc11547fbf446993ee0f6f30a0deb3f80f205c35
- # which is part of the fix for https://github.com/kripken/emscripten/issues/3945
- # TODO: fix after PBL-32521 is done
- orig_source = source
- source = source.replace("funcstr += arg + '=' + convertCode.returnValue + ';';",
- "funcstr += arg + '=(' + convertCode.returnValue + ');';")
- # assert source != orig_source, "Emscripten output does not match expected output of 1.35.0"
-
- # we're not using emscripten's --pre-js and --post-js as it interferes
- # with --embed-file
- with open(args.js_file, "w") as f:
- f.write(PROLOGUE)
- if args.unittest:
- f.write(UNITTEST_PROLOGUE)
- f.write(source)
- f.write(EPILOGUE)
- if args.unittest:
- f.write("new RockySimulator();\n")
-
-PROLOGUE = """
-RockySimulator = function(options) {
- options = options || {};
-
- var Module = {
- print: function(text) {
- console.log(text);
- },
- printErr: function(text) {
- console.error(text);
- },
- };
-
-"""
-
-EPILOGUE = """
-// support non-aligned memory access
-function SAFE_HEAP_STORE(dest, value, bytes, isFloat) {
- if (dest <= 0) abort('segmentation fault storing ' + bytes + ' bytes to address ' + dest);
- if (dest + bytes > Math.max(DYNAMICTOP, STATICTOP)) abort('segmentation fault, exceeded the top of the available heap when storing ' + bytes + ' bytes to address ' + dest + '. STATICTOP=' + STATICTOP + ', DYNAMICTOP=' + DYNAMICTOP);
- assert(DYNAMICTOP <= TOTAL_MEMORY);
- if (dest % bytes !== 0) {
- for (var i = 0; i < bytes; i++) {
- HEAPU8[dest + i >> 0] = (value >> (8 * i)) & 0xff;
- }
- } else {
- setValue(dest, value, getSafeHeapType(bytes, isFloat), 1);
- }
-}
-
-function SAFE_HEAP_STORE_D(dest, value, bytes) {
- SAFE_HEAP_STORE(dest, value, bytes, true);
-}
-
-function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) {
- // overrule
- if (dest <= 0) abort('segmentation fault loading ' + bytes + ' bytes from address ' + dest);
- if (dest + bytes > Math.max(DYNAMICTOP, STATICTOP)) abort('segmentation fault, exceeded the top of the available heap when loading ' + bytes + ' bytes from address ' + dest + '. STATICTOP=' + STATICTOP + ', DYNAMICTOP=' + DYNAMICTOP);
- assert(DYNAMICTOP <= TOTAL_MEMORY);
- var type = getSafeHeapType(bytes, isFloat);
- var ret;
- if (dest % bytes !== 0) {
- for (var i = 0; i < bytes; i++) {
- ret |= HEAPU8[dest + i >> 0] << (8 * i);
- }
- } else {
- ret = getValue(dest, type, 1);
- }
- if (unsigned) ret = unSign(ret, parseInt(type.substr(1)), 1);
- return ret;
-}
-function SAFE_HEAP_LOAD_D(dest, bytes, unsigned) {
- return SAFE_HEAP_LOAD(dest, bytes, unsigned, true);
-}
-
- return Module;
-};
-
-if (typeof(module) !== "undefined") {
- module.exports = RockySimulator;
-}
-
-"""
-
-UNITTEST_PROLOGUE = """
-var defaultPreRun = Module.preRun;
-Module.preRun = function() {
- if (defaultPreRun) {
- defaultPreRun();
- }
- // Mount the host filesystem to make the fixture files accessible:
- FS.mkdir('/node_fs');
- FS.mount(NODEFS, { root: '/' }, '/node_fs');
-}
-"""
-
-if __name__ == "__main__":
- main()
diff --git a/applib-targets/emscripten/wscript b/applib-targets/emscripten/wscript
deleted file mode 100644
index fedf52a196..0000000000
--- a/applib-targets/emscripten/wscript
+++ /dev/null
@@ -1,137 +0,0 @@
-from waflib import Logs
-
-
-def em_resource(task):
- packager = task.env.EMSCRIPTEN_ROOT + '/tools/file_packager.py'
- task.exec_command(['python',
- packager,
- task.outputs[0].abspath(),
- '--embed',
- task.inputs[0].abspath(),
- '--js-output=' + task.outputs[0].abspath()])
-
-
-def configure(conf):
- conf.find_program('node', var='NODE', errmsg='node is not installed')
-
- # Make sure we're about to modify the 'local' conf:
- prev_env = conf.env
- conf.set_env(conf.all_envs['local'])
-
- conf.load('emscripten')
-
- # The standard lib emscripten bundles uses a different format
- # for its stack guard!!
- conf.env.CFLAGS.append('-D_TIME_H')
-
- # For unit tests: DUMA depends on pthread,
- # which I didn't get to work with emscripten.
- conf.env.DEFINES.append('DUMA_DISABLED')
-
- # Flags that emcc doesn't support, just remove them:
- unwanted_cflags = ['-gdwarf-4']
-
- if 'RELEASE' not in conf.env.DEFINES:
- conf.env.EMCC_DEBUG = 2
- conf.env['CFLAGS'].extend(['-g4'])
- unwanted_cflags.extend(['-g3', '-g'])
-
- conf.env['CFLAGS'] = filter(
- lambda flag: flag not in unwanted_cflags,
- conf.env['CFLAGS']
- )
-
- conf.env.EMX_OTHER_SETTINGS = [
- 'SAFE_HEAP=1',
- # absurdly large value so we don't worry:
- 'RESERVED_FUNCTION_POINTERS=1000',
- 'ERROR_ON_UNDEFINED_SYMBOLS=1'
- ]
-
- conf.add_platform_defines(conf.env)
-
- conf.recurse('integration_tests')
-
- conf.setenv('emscripten', conf.env)
-
- conf.set_env(prev_env)
-
-
-def apply_config_for_applib_and_test_rocky_emx_builds(bld):
- bld.env.DEFINES.append("APPLIB_EMSCRIPTEN=1")
-
- # __builtin_return_address() doesn't seem to be supported by Emscripten,
- # it fail at runtime due to a missing `llvm_return_address` function.
- bld.env.CFLAGS.extend(['-D__builtin_return_address(level)=(0)'])
-
- jerry_api_js = bld.path.make_node('jerry_api.js')
- timeshift_js = bld.path.find_node('timeshift-js/timeshift.js')
- html_binding_js = bld.path.make_node('html-binding.js')
- bld.env.EMX_PRE_JS_FILES = [jerry_api_js, timeshift_js]
- bld.env.EMX_POST_JS_FILES = [html_binding_js]
- # use external transformation script instead of --pre-js and --post-js so
- # we can replace functions and wrap entire file without interfering with
- # --embed-file
- transform_js_node_and_args = [bld.path.make_node('transform_js.py')]
- if bld.variant == 'test_rocky_emx':
- transform_js_node_and_args.append(' --unittest')
- bld.env.EMX_TRANSFORM_JS_NODE_AND_ARGS = transform_js_node_and_args
-
-
-def build(bld):
- if bld.variant == 'test':
- bld.recurse('tests')
- return
-
- # Extend waf's 'cprogram' feature with Emscripten-specific things:
- bld.load('emscripten')
-
- apply_config_for_applib_and_test_rocky_emx_builds(bld)
-
- # Fine to use 'stlib' here vs emscripten_program, because we're only
- # invoking emcc to generate an archive file, so only 'standard' compiler
- # flags need to be passed.
- bld.objects(source=['emscripten_jerry_api.c'],
- target='emscripten_jerry_api',
- use=['jerry_port_includes'])
-
- if bld.variant == 'test_rocky_emx':
- return
-
- # Copy stuff from html folder:
- html_node = bld.path.find_dir('html')
- html_bld_node = bld.path.get_bld().make_node('html')
- for file in html_node.ant_glob('**/*'):
- bld(rule="cp ${SRC} ${TGT}",
- source=file,
- target=html_bld_node.make_node(file.path_from(html_node)))
-
- pbpack = bld.path.parent.parent.get_bld().make_node('system_resources.pbpack')
- exported_functions = bld.path.make_node('exported_functions.json')
- sources = bld.path.ant_glob('*.c', excl='emscripten_jerry_api.c')
- rockyjs_node = html_bld_node.make_node('rocky.js')
- bld.program(source=sources,
- target=rockyjs_node,
- emx_pre_js_files=[],
- emx_post_js_files=[],
- emx_exported_functions=exported_functions,
- emx_other_settings=[],
- emx_embed_files=[pbpack],
- use=['emscripten_jerry_api',
- 'applib',
- 'applib_includes',
- 'nanopb',
- 'fw_includes',
- 'libutil',
- 'upng'])
-
- bld.recurse('integration_tests')
-
- def print_index_html_path(bld):
- index_html_path = html_bld_node.find_node('index.html').abspath()
- Logs.pprint('PINK',
- 'Built Rocky Simulator: file://{}'.format(index_html_path))
- bld.add_post_fun(print_index_html_path)
-
-
-# vim:filetype=python
diff --git a/applib-targets/overrides/FreeRTOS.h b/applib-targets/overrides/FreeRTOS.h
deleted file mode 100644
index 6740fc5009..0000000000
--- a/applib-targets/overrides/FreeRTOS.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-typedef long BaseType_t;
diff --git a/applib-targets/overrides/applib/applib_malloc.auto.h b/applib-targets/overrides/applib/applib_malloc.auto.h
deleted file mode 100644
index 56398de5c8..0000000000
--- a/applib-targets/overrides/applib/applib_malloc.auto.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include
-#include
-
-static void* applib_zalloc(size_t size) {
- void* result = malloc(size);
- if (result) {
- memset(result, 0, size);
- }
- return result;
-}
-
-#define applib_type_zalloc(Type) applib_zalloc(sizeof(Type))
-#define applib_type_malloc(Type) malloc(sizeof(Type))
-#define applib_type_size(Type) sizeof(Type)
-#define applib_malloc(size) malloc(size)
-#define applib_free(ptr) free(ptr)
diff --git a/applib-targets/overrides/os/mutex.h b/applib-targets/overrides/os/mutex.h
deleted file mode 100644
index 4d57e392f2..0000000000
--- a/applib-targets/overrides/os/mutex.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-struct pebble_mutex_t;
-typedef struct pebble_mutex_t PebbleMutex;
-struct pebble_recursive_mutex_t;
-typedef struct pebble_recursive_mutex_t PebbleRecursiveMutex;
diff --git a/applib-targets/overrides/portmacro.h b/applib-targets/overrides/portmacro.h
deleted file mode 100644
index 6740fc5009..0000000000
--- a/applib-targets/overrides/portmacro.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-typedef long BaseType_t;
diff --git a/applib-targets/overrides/queue.h b/applib-targets/overrides/queue.h
deleted file mode 100644
index 1bb2a6faa3..0000000000
--- a/applib-targets/overrides/queue.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-typedef void * QueueHandle_t;
diff --git a/applib-targets/overrides/semphr.h b/applib-targets/overrides/semphr.h
deleted file mode 100644
index d22f7c8754..0000000000
--- a/applib-targets/overrides/semphr.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
diff --git a/applib-targets/overrides/task.h b/applib-targets/overrides/task.h
deleted file mode 100644
index 52aedc94c7..0000000000
--- a/applib-targets/overrides/task.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-typedef void * TaskHandle_t;
-
-typedef struct {
-} TaskParameters_t;
diff --git a/applib-targets/sdl/examples/main.c b/applib-targets/sdl/examples/main.c
deleted file mode 100644
index 1b4791c535..0000000000
--- a/applib-targets/sdl/examples/main.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-
-#include "sdl_graphics.h"
-#include "sdl_app.h"
-
-#include "applib/app.h"
-#include "applib/graphics/gtypes.h"
-#include "applib/graphics/graphics.h"
-#include "applib/graphics/graphics_line.h"
-
-
-int main(void) {
- GContext *context = sdl_graphics_get_gcontext();
- graphics_context_set_stroke_color(context, GColorBrightGreen);
- graphics_context_set_stroke_width(context, 2);
- graphics_draw_line(context, (GPoint){0, 0}, (GPoint){100, 100});
- graphics_draw_line(context, (GPoint){0, 10}, (GPoint){100, 10});
- graphics_draw_line(context, (GPoint){0, 20}, (GPoint){100, 20});
- graphics_draw_line(context, (GPoint){0, 30}, (GPoint){100, 30});
- graphics_draw_circle(context, (GPoint){50, 50}, 20);
- app_event_loop();
-
- return 0;
-}
diff --git a/applib-targets/sdl/examples/wscript b/applib-targets/sdl/examples/wscript
deleted file mode 100644
index c2627c0e1c..0000000000
--- a/applib-targets/sdl/examples/wscript
+++ /dev/null
@@ -1,12 +0,0 @@
-from waflib import Task
-from waflib.TaskGen import feature, before_method
-
-
-def build(bld):
- sources = bld.path.ant_glob('*.c')
- bld.program(source=sources,
- target='sdl-example',
- defines=['main=app_main'],
- use=['applib_sdl', 'fw_includes'])
-
-# vim:filetype=python
diff --git a/applib-targets/sdl/sdl_app.c b/applib-targets/sdl/sdl_app.c
deleted file mode 100644
index c7c7d79730..0000000000
--- a/applib-targets/sdl/sdl_app.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sdl_app.h"
-#include "sdl_graphics.h"
-
-#include
-
-extern int app_main(void);
-
-int main(int argc, char **argv) {
- if (!sdl_app_init()) {
- return -1;
- }
-
- app_main();
- sdl_app_deinit();
-
- return 0;
-}
-
-#include
-
-bool sdl_app_init(void) {
- if (SDL_Init(SDL_INIT_VIDEO) < 0) {
- printf("Error: Failed to init SDL\n");
- return false;
- }
-
- if (!sdl_graphics_init()) {
- printf("Error: Failed to init graphics\n");
- return false;
- }
-
- return true;
-}
-
-void sdl_app_deinit(void) {
- SDL_Quit();
-}
-
-void sdl_app_event_loop(void) {
- SDL_Event event;
- int keypress = 0;
-
- while (!keypress) {
- sdl_graphics_render();
- while (SDL_PollEvent(&event)) {
- switch (event.type) {
- case SDL_QUIT:
- keypress = 1;
- break;
- case SDL_KEYDOWN:
- keypress = 1;
- break;
- }
- }
- }
-}
diff --git a/applib-targets/sdl/sdl_app.h b/applib-targets/sdl/sdl_app.h
deleted file mode 100644
index 88406c1d67..0000000000
--- a/applib-targets/sdl/sdl_app.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include
-
-bool sdl_app_init(void);
-void sdl_app_deinit(void);
-void sdl_app_event_loop(void);
diff --git a/applib-targets/sdl/sdl_graphics.c b/applib-targets/sdl/sdl_graphics.c
deleted file mode 100644
index 3054af7e00..0000000000
--- a/applib-targets/sdl/sdl_graphics.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "sdl_graphics.h"
-
-#include "applib/graphics/graphics.h"
-#include "applib/graphics/8_bit/framebuffer.h"
-#include "util/circular_cache.h"
-
-#include
-#include
-#include
-
-static GContext s_gcontext = {};
-static FrameBuffer fb = {};
-static SDL_Surface *screen = NULL;
-
-bool sdl_graphics_init(void) {
- if (!(screen = SDL_SetVideoMode(DISP_COLS, DISP_ROWS, 8 /* bits/pixel */, SDL_HWSURFACE))) {
- return false;
- }
-
- framebuffer_init(&fb, &(GSize) {DISP_COLS, DISP_ROWS});
- s_gcontext = (GContext) {
- .dest_bitmap = (GBitmap) {
- .addr = screen->pixels,
- .row_size_bytes = DISP_COLS,
- .info = (BitmapInfo) {.format = GBITMAP_NATIVE_FORMAT },
- .bounds = (GRect) { { 0, 0 }, { DISP_COLS, DISP_ROWS } },
- .data_row_infos = NULL,
- },
- .parent_framebuffer = &fb,
- .parent_framebuffer_vertical_offset = 0,
- .lock = false
- };
-
- graphics_context_set_default_drawing_state(&s_gcontext, GContextInitializationMode_App);
-
- return true;
-}
-
-GContext *sdl_graphics_get_gcontext(void) {
- return &s_gcontext;
-}
-
-void sdl_graphics_render(void) {
- SDL_Flip(screen);
-}
diff --git a/applib-targets/sdl/sdl_graphics.h b/applib-targets/sdl/sdl_graphics.h
deleted file mode 100644
index 3e8e938de4..0000000000
--- a/applib-targets/sdl/sdl_graphics.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include
-#include "applib/graphics/gtypes.h"
-
-bool sdl_graphics_init(void);
-void sdl_graphics_render(void);
-GContext *sdl_graphics_get_gcontext(void);
diff --git a/applib-targets/sdl/shims.c b/applib-targets/sdl/shims.c
deleted file mode 100644
index f92c2895ff..0000000000
--- a/applib-targets/sdl/shims.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-#include
-#include
-
-#include "util/heap.h"
-#include "util/circular_cache.h"
-
-#include "sdl_app.h"
-#include "sdl_graphics.h"
-
-void *task_malloc(size_t bytes) {
- return malloc(bytes);
-}
-
-void task_free(void *ptr) {
- free(ptr);
-}
-
-void app_log(uint8_t log_level, const char* src_filename,
- int src_line_number, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
- vprintf(fmt, args);
- va_end(args);
-}
-
-GContext* app_state_get_graphics_context() {
- return sdl_graphics_get_gcontext();
-}
-
-Heap *app_state_get_heap(void) {
- return NULL;
-}
-
-GBitmap* app_state_legacy2_get_2bit_framebuffer(void) {
- return NULL;
-}
-
-void circular_cache_init(CircularCache* c, uint8_t* buffer, size_t item_size,
- int total_items, Comparator compare_cb) {
-}
-
-bool heap_is_allocated(Heap* const heap, void* ptr) {
- return false;
-}
-
-void passert_failed(const char* filename, int line_number, const char* message, ...) {
-}
-
-void passert_failed_no_message(const char* filename, int line_number) {
-}
-
-void pbl_log(uint8_t log_level, const char* src_filename,
- int src_line_number, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
- vprintf(fmt, args);
- va_end(args);
-}
-
-bool process_manager_compiled_with_legacy2_sdk(void) {
- return false;
-}
-
-ResAppNum sys_get_current_resource_num(void) {
- return 0;
-}
-
-const uint8_t * sys_resource_builtin_bytes(ResAppNum app_num, uint32_t resource_id,
- uint32_t *num_bytes_out) {
- return 0;
-}
-
-size_t sys_resource_load_range(ResAppNum app_num, uint32_t id, uint32_t start_bytes,
- uint8_t *buffer, size_t num_bytes) {
- return 0;
-}
-
-size_t sys_resource_size(ResAppNum app_num, uint32_t handle) {
- return 0;
-}
-
-void app_event_loop(void) {
- sdl_app_event_loop();
-}
-
-void wtf(void) {
- printf(">>> WTF\n");
-}
diff --git a/applib-targets/sdl/wscript b/applib-targets/sdl/wscript
deleted file mode 100644
index 51d0f7bbaa..0000000000
--- a/applib-targets/sdl/wscript
+++ /dev/null
@@ -1,27 +0,0 @@
-import waflib
-
-
-def configure(conf):
- conf.check_cfg(msg='Checking for sdl-config',
- path='sdl-config',
- package='',
- args='--cflags --libs',
- uselib_store='SDL')
-
- conf.find_program('objcopy gobjcopy', var='OBJCOPY')
-
- # We are overriding the gcc toolchain include/time.h with our own
- # just to check/force our version of
- conf.env.CFLAGS.append('-D_TIME_H_')
-
-
-def build(bld):
- sources = bld.path.ant_glob('*.c')
- bld.stlib(source=sources,
- target='applib_sdl',
- includes='.',
- export_includes='.',
- use=['applib', 'fw_includes', 'libutil', 'upng', 'SDL'])
- bld.recurse('examples')
-
-# vim:filetype=python
diff --git a/applib-targets/wscript b/applib-targets/wscript
deleted file mode 100644
index d067e20963..0000000000
--- a/applib-targets/wscript
+++ /dev/null
@@ -1,33 +0,0 @@
-def options(opt):
- opt.add_option('--target', action='store',
- choices=['sdl', 'emscripten'],
- help='What backend we are compiling applib against (#rockyJS)')
-
-
-def configure(conf):
- if conf.options.target is None:
- return
- else:
- conf.env.APPLIB_TARGET = conf.options.target
- conf.recurse(conf.options.target)
-
-
-def build(bld):
- if bld.variant == 'test':
- bld.recurse('emscripten')
- return
-
- if bld.env.APPLIB_TARGET is None:
- bld(export_includes=[], name='target_includes')
- return
-
- bld.set_env(bld.all_envs['local'])
-
- # time_t is defined in sys/types in newlib, and time.h on recent Linux
- # so just force the defined type for testing time
- bld.env.CFLAGS.append('-Dtime_t=__SYSCALL_SLONG_TYPE')
-
- bld(export_includes=['overrides'], name='target_includes')
- bld.recurse(bld.env.APPLIB_TARGET)
-
-# vim:filetype=python
diff --git a/bin/boot/boot_asterix@1753450013.bin b/bin/boot/boot_asterix@1753450013.bin
deleted file mode 100755
index 7603504e3e..0000000000
Binary files a/bin/boot/boot_asterix@1753450013.bin and /dev/null differ
diff --git a/bin/boot/boot_asterix@1753450013.elf b/bin/boot/boot_asterix@1753450013.elf
deleted file mode 100755
index ab529e80b9..0000000000
Binary files a/bin/boot/boot_asterix@1753450013.elf and /dev/null differ
diff --git a/bin/boot/boot_asterix@1753450013.hex b/bin/boot/boot_asterix@1753450013.hex
deleted file mode 100644
index 570b0a699f..0000000000
--- a/bin/boot/boot_asterix@1753450013.hex
+++ /dev/null
@@ -1,1021 +0,0 @@
-:1000000000000420E53A0000553B0000E51F000019
-:10001000593B00005B3B00005D3B0000000000001E
-:100020000000000000000000000000005F3B000036
-:10003000613B000000000000633B0000653B0000E6
-:10004000673B0000673B0000673B0000673B000028
-:10005000673B0000673B0000673B0000673B000018
-:10006000673B0000673B0000673B0000673B000008
-:10007000673B0000673B0000673B0000673B0000F8
-:10008000673B0000673B0000673B0000673B0000E8
-:10009000673B0000673B0000673B0000673B0000D8
-:1000A000673B0000673B0000673B0000673B0000C8
-:1000B000673B0000673B00000000000000000000FC
-:1000C000673B0000673B0000673B0000673B0000A8
-:1000D000673B0000673B0000673B0000673B000098
-:1000E000673B0000673B0000673B0000000000002A
-:1000F00000000000673B000000000000673B0000BC
-:1001000000000000000000000000000000000000EF
-:1001100000000000000000000000000000000000DF
-:1001200000000000000000000000000000000000CF
-:1001300000000000000000000000000000000000BF
-:1001400000000000000000000000000000000000AF
-:10015000000000000000000000000000000000009F
-:10016000000000000000000000000000000000008F
-:10017000000000000000000000000000000000007F
-:10018000000000000000000000000000000000006F
-:10019000000000000000000000000000000000005F
-:1001A000000000000000000000000000000000004F
-:1001B000000000000000000000000000000000003F
-:1001C000000000000000000000000000000000002F
-:1001D000000000000000000000000000000000001F
-:1001E000000000000000000000000000000000000F
-:1001F00000000000000000000000000000000000FF
-:10020000537475636B20627574746F6E20726567CA
-:10021000697374657220697320696E76616C6964B4
-:100220002C20636C656172696E672E004275747470
-:100230006F6E2069642000697320737475636B218D
-:1002400000427574746F6E207761732070757368E7
-:100250006564206F6E20626F6F742E204275747417
-:100260006F6E20636F756E7465723A200042616331
-:100270006B0055700053656C65637400446F776E56
-:10028000006D783235752E63004A45444543204958
-:10029000443A2000616464726573732000206973BE
-:1002A000206F7574736964652073797374656D204C
-:1002B000666C6173680073797374656D5F666C61F9
-:1002C00073685F65726173653A2061646472657317
-:1002D00073206E6F7420776F726420616C69676E33
-:1002E00065640073797374656D5F666C6173685FD4
-:1002F00077726974653A2061646472657373206E05
-:100300006F7420776F726420616C69676E6564003A
-:10031000496E76616C6964206669726D7761726599
-:10032000206465736372697074696F6E210043683D
-:1003300065636B73756D6D696E67206669726D7745
-:10034000617265207570646174650043616C6375EA
-:100350006C6174656420636865636B73756D3A20C6
-:1003600000496E76616C6964206669726D776172AE
-:10037000652043524320696E2053504920666C61CA
-:100380007368210065726173655F6F6C645F666995
-:10039000726D776172650077726974655F6E6577FB
-:1003A0005F6669726D7761726500576527726520B7
-:1003B0006465616400436865636B73756D6D696E38
-:1003C0006720002062797465730D0A0043686563D5
-:1003D0006B73756D202D2077616E7465642000202D
-:1003E000676F7420004F757220696E7465726E615C
-:1003F0006C20666C61736820636F6E74656E7473D5
-:1004000020617265206261642028636865636B7394
-:10041000756D206661696C65642921205468697373
-:10042000206973207265616C6C79206261642100BF
-:100430004F75722070726576696F75732066697288
-:100440006D7761726520757064617465206661699D
-:100450006C65642C2061626F7274696E67207570C0
-:10046000646174652E004E6577206669726D7761F0
-:10047000726520697320617661696C61626C6521C7
-:10048000004C6F6164696E67207265636F76657298
-:1004900079206669726D77617265004661696C6585
-:1004A0006420746F206C6F6164207265636F766581
-:1004B0007279206669726D776172652C207374722F
-:1004C000696B65206F6E652E2054727920616761BB
-:1004D000696E2E004661696C656420746F206C6FD4
-:1004E0006164207265636F76657279206669726DEA
-:1004F000776172652C20737472696B652074776FF5
-:100500002E2054727920616761696E2E0046616900
-:100510006C656420746F206C6F6164207265636F1A
-:1005200076657279206669726D776172652C2073C9
-:100530007472696B652074687265652E205341443E
-:100540002057415443480048415244204641554CAD
-:1005500054002020205F202020202020205F202009
-:100560002020202020202020205F2020202020006C
-:1005700020202F5F5C2020205F5F7C207C5F205F3D
-:100580005F5F205F205F285F295F205F5F00202F73
-:10059000205F205C20285F2D3C20205F2F202D5FD6
-:1005A0002920275F7C205C205C202F002F5F2F20DC
-:1005B0005C5F5C2F5F5F2F5C5F5F5C5F5F5F7C5F9A
-:1005C0007C207C5F2F5F5C5F5C00626F6F742062D9
-:1005D0006974004C617374206669726D776172652D
-:1005E00020626F6F742077617320737461626C6531
-:1005F0003B20636C65617220737472696B65730074
-:10060000504D494320696E6974206661696C656468
-:1006100000537475636B20627574746F6E00427260
-:100620006F6B656E20666C61736800486F6C642048
-:10063000646F776E205550202B204241434B202B76
-:100640002053454C45435420666F72203520736516
-:1006500063732E20746F20666F7263652D626F6FF7
-:100660007420505246004669726D77617265206948
-:100670007320657261736564005761746368646FA9
-:1006800067206361757365642061207265736574AA
-:1006900000536F667477617265206661696C75726C
-:1006A000652063617573656420612072657365748C
-:1006B000004661696C656420746F207374617274A4
-:1006C000206669726D776172652C20737472696B34
-:1006D000652074687265652E004661696C656420EA
-:1006E000746F207374617274206669726D776172C1
-:1006F000652C20737472696B652074776F2E0046C9
-:1007000061696C656420746F207374617274206613
-:1007100069726D776172652C20737472696B6520E4
-:100720006F6E652E00466F7263652D626F6F746920
-:100730006E67207265636F76657279206D6F646590
-:100740002E2E2E00426F6F74696E67206669726D7F
-:1007500077617265204020002E2E2E0D0A0D0A00B2
-:10076000426F6F7420626974733A2000536F66742D
-:1007700077617265206661696C7572653B20726590
-:1007800073657474696E6721004669726D77617272
-:1007900065206C656E6774683A2000436865636B1A
-:1007A00073756D3A20004153534552543A20003A34
-:1007B00000415353455254004153534552544E0047
-:1007C0002A2A2A20575446200053544D33320053CE
-:1007D000544D3332207065726970686572616C20A7
-:1007E0006C696272617279207472697070656420DC
-:1007F000616E206173736572740043524F414B20E8
-:100800004F4F4D0052657461696E65642072656773
-:10081000697374657220435243206661696C656434
-:100820003A20657870656374656420435243200004
-:100830002C20676F742043524320002E2020436CED
-:10084000656172696E6720626F6F7462697473218B
-:100850000069746F612062756666657220746F6FDF
-:1008600020736D616C6C002E2E2F2E2E2F2E2E2FAE
-:100870002E2E2F74686972645F70617274792F68AC
-:10088000616C5F6E6F726469632F6E7266782F6839
-:10089000616C2F6E72665F6770696F2E68002E2E16
-:1008A0002F2E2E2F2E2E2F2E2E2F74686972645FFE
-:1008B00070617274792F68616C5F6E6F72646963C6
-:1008C0002F6E7266782F647269766572732F7372F9
-:1008D000632F6E7266785F717370692E63002E2EBF
-:1008E0002F2E2E2F2E2E2F2E2E2F74686972645FBE
-:1008F00070617274792F68616C5F6E6F7264696386
-:100900002F6E7266782F647269766572732F7372B8
-:10091000632F6E7266785F7370696D2E63002E2E82
-:100920002F2E2E2F2E2E2F2E2E2F74686972645F7D
-:1009300070617274792F68616C5F6E6F7264696345
-:100940002F6E7266782F647269766572732F737278
-:10095000632F6E7266785F7477692E630000000003
-:100960006D020000000000501C00000003000000A9
-:1009700072020000000000501D0000000300000093
-:1009800075020000000000501E000000030000007F
-:100990007C020000000000501F0000000300000067
-:1009A00001424F4F544C4F4144455200000000005B
-:1009B000002A2A00000000000000000000000000E3
-:1009C0000338FDD870470000000000000000000060
-:1009D000000400000000000000000000000000040F
-:1009E0000000000000000000000000000000000007
-:1009F0000000000000000000008000042000000053
-:100A00000000000000000000010E100000000000C7
-:100A1000000000000000803F0000000000C00060F7
-:100A200000300000FCF1073E000000C00060003014
-:100A30000000FCE0077F000000C000600030000004
-:100A40000C008663000000C00060003000000C0055
-:100A50008601F001F8C07C603E30E0030C008601A6
-:100A6000FC07FEC3FFE1FF30F80F4E108E030E0EA1
-:100A700007C783E3C1311C1C46100C0F060C03C6CC
-:100A800001E380310C184310183E039881CF0066B3
-:100A9000003306BE030038780398F9CF00660033B0
-:100AA000E63F431018600398FFC000660033FE0362
-:100AB000860F0CC003980FC0006600333E000E0086
-:100AC0000EC0039801CC0066003306300C00C6C08F
-:100AD000070C038601C380310C180C00C6C00F0E32
-:100AE0008F8783C3C1311C1C0C008661FF07FE0386
-:100AF000FF81FF70F80FFCE0877FF301F8007C00B6
-:100B00003E60E003FCF1071E03000000000000004F
-:100B10000000803F00000300000000000000000013
-:100B2000010E10000300000000000000008000041F
-:100B30002000030000000000000000000000000092
-:100B400000000000000000000000000400000000A1
-:100B5000000000000000000000040000000000E0B1
-:100B6000FF0F000000000000F8FF7F000000000001
-:100B700000FEFFFF030000000080FFFFFF1F0000DA
-:100B80000000E01F00F87F00000000F80F00C0FF29
-:100B900000000000FE030000FE010000807F000056
-:100BA00000F0030000C01F000000C0070000C007E5
-:100BB000000000800F0000E003000000001F0000A4
-:100BC000E001000000003E0000F000000000007C9A
-:100BD0000000F00000000000780000780000000035
-:100BE00000F00000780000000000F000003C300041
-:100BF000000000E001003C7000000000E001001E69
-:100C00007000700000C003001EF000780000C003F8
-:100C1000001EE0007C00008007000FE0013E0000A5
-:100C20008007000FC0011F00008007000FC0830F66
-:100C300000008007000FC0C307000080078007E0A6
-:100C4000C303000080078007F0C103000080078015
-:100C500007F880030000800780077C800700008081
-:100C600007C0033E000700008007C0031E000F00FE
-:100C7000008007E0030E000E00008007F001000076
-:100C80000E00008007F80000000C000080077800CC
-:100C9000C07100000080077C00E079001800800728
-:100CA0003C00F0FF003C0080073C00F8FF003C00E7
-:100CB00080073E00F8FF011E0080071E0038CF01AC
-:100CC0001E0080071E0000C7010F00C0031F0000A8
-:100CD00000000F00C0030F000000800700E0010FBC
-:100CE000000000800700E0010F000000C00300F0DA
-:100CF000000F000000C00300F0000F000000C00360
-:100D00000078000F600000C0030078000FF80000BA
-:100D1000C0033C3C000FFE0100C0033F3C009FFFAE
-:100D20000300C0C33F1E00FFFF0700C0E30F1E000B
-:100D3000FE870F00C0FF031E00F8031F00C0FF0066
-:100D40001E0060003E00807F001E000000FC0000CE
-:100D50003E001E000000F80F0018001E000000F00A
-:100D60007F0000001E000000E0FF0700001E0000E2
-:100D70000080FF3F00001E00000000F8FF03003C61
-:100D800000000000C0FF0F003C0000000000FC3F1E
-:100D900000780000000000E0FF00F8000000000004
-:100DA00000FE03F0010000000000F01FE00300005F
-:100DB000000000C07FC007000000000000FFFF0F20
-:100DC000000000000000FCFF1F000000000000F019
-:100DD000FF1F000000000000C0FF0F7C00FE00FFAE
-:100DE00001C701C701C701C701C701C701C701C7C3
-:100DF00001C701C701C701C701FF01FE007C003820
-:100E0000003C003E003E0038003800380038003812
-:100E100000380038003800380038003800FE00FE86
-:100E200000FE007C00FE00FF01C701C701C001C039
-:100E300001E000F00078003C001E000E000F0007EB
-:100E400000FF01FF01FF017C00FE00FF01C701C799
-:100E500001C001C001F8007800F800C001C001C065
-:100E600001C701C701FF01FE007C00E000E000F0C7
-:100E700000F000F800F800F800FC00EC00EE00E6DE
-:100E800000FF01FF01FF01E000E000E000E000FFE3
-:100E900000FF00FF000700070007007F00FF00FFC2
-:100EA00001C701C001C001C701C701C701FF01FEA1
-:100EB000007C007C00FE00FF01C701C7010700079E
-:100EC000007700FF00FF01C701C701C701C701C7C5
-:100ED00001FF01FE007C00FF01FF01FF01E000E0D7
-:100EE0000070007000700038003800380038001CB6
-:100EF000001C001C001C001C001C007C00FE00FFED
-:100F000001C701C701C701C701FE007C00FE00C781
-:100F100001C701C701C701C701FF01FE007C007CBA
-:100F200000FE00FF01C701C701C701C701C701FFDC
-:100F300001FE01DC01C001C001C701C701FF01FEC4
-:100F4000007C0000000000000000007C00FE00FFAC
-:100F500001C701C701F001FC01CE01C701C701E7CC
-:100F600001FF01DF01CE010700070007000700E7CE
-:100F700000F701FF01CF01C701C701C701C701C7C2
-:100F800001C701CF01FF01F701E7000000000000E9
-:100F90000000007C00FE00FF01C701C70107000739
-:100FA0000007000700C701C701FF01FE007C00C069
-:100FB00001C001C001C001CE01DF01FF01E701C78F
-:100FC00001C701C701C701C701C701E701FF01DF71
-:100FD00001CE0100000000000000007C00FE00FFC8
-:100FE00001C701C701C701FF01FF010700C701C712
-:100FF00001FF01FE007C00E000F000F8003800FE78
-:1010000000FE00FE00380038003800380038003894
-:101010000038003800380038003800FFFFFFFFFFBD
-:10102000FFFFFFFFFFFFFF010000000000000000C6
-:1010300000008001000000000000000000008001AE
-:10104000000000000000000000008001000000001F
-:10105000000000000000800100000000000000000F
-:10106000000080010000000000000000000080FF80
-:10107000FFFFFFFFFFFFFFFFFFFFFF00000000007B
-:101080000338FDD8704700000E0000000F0000007C
-:101090000000980107000000004000400000000030
-:1010A0000701010E01000B06000B010104020104FF
-:1010B0000501040701040C00040D00040E000415D2
-:1010C00000020200030501050A01030C08030D04D8
-:1010D000030810030900030A2A03010103000103A6
-:1010E00010BB0311010312A40313020314540315CC
-:1010F000010316540317010123440123900123FA2D
-:101100000123CE034604035001030401080500082F
-:101110000C08080801080001080600080D08080965
-:101120000108020106000006010006020006030095
-:1011300006040000000000006410B71DC8206E3BCC
-:10114000AC30D9269041DC76F4516B6B5861B24DCE
-:101150003C7105502083B8ED44930FF0E8A3D6D638
-:101160008CB361CBB0C2649BD4D2D38678E20AA0A0
-:101170001CF2BDBD000000000000000000000000E7
-:101180000338FDD870470000000000000000000098
-:101190000338FDD870470000FF000000FF0000008A
-:1011A000FF000000FF000000FF000000FF00000043
-:0811B0000338FDD87047000070
-:0811B80094000000010000009A
-:1011C0000348044B834202D0034B03B118477047D6
-:1011D0002C0100202C010020000000000548064BD7
-:1011E0001B1AD90F01EBA301491002D0034B03B125
-:1011F000184770472C0100202C010020000000003F
-:1012000010B5064C237843B9FFF7DAFF044B13B14E
-:101210000448AFF300800123237010BD2C0100208F
-:1012200000000000083E000008B5054B1BB1054951
-:101230000548AFF30080BDE80840FFF7CFBF00BF0F
-:101240000000000030010020083E0000A3F5803AB5
-:10125000704700BF174B002B08BF134B9D46FFF78D
-:10126000F5FF00218B460F461348144A121A02F06C
-:1012700081FD0E4B002B00D098470D4B002B00D06A
-:1012800098470020002104000D000D48002802D0DE
-:101290000C48AFF3008002F075FD2000290000F03B
-:1012A000EFFE02F055FD00BF000008000000000046
-:1012B00000000000000004202C010020F0020120AA
-:1012C0000000000000000000F7B5012001F072F9F5
-:1012D0000024019001AD2746E0B200F049F806462F
-:1012E000A0B928700134042C05F10105F4D1019C4A
-:1012F0003CB1174800F0F6F8204600F012F900F073
-:1013000087F82146012001F047F90DE02B78042BE6
-:101310000DD9104800F0FEF8019800F002F9002104
-:10132000012001F039F90027384603B0F0BD013340
-:10133000DBB2052B2B70D5D1074800F0D3F820463F
-:1013400000F0EFF8054800F0E5F83746CAE700BFBF
-:1013500041020000000200002C02000037020000E1
-:1013600008B500F049FB80F00100C0B208BD0000E4
-:10137000064B03EB001043688268D3F81035012058
-:1013800090401840B0FA80F04009704760090000B2
-:10139000002110B50C46C8B2FFF7EAFF88400131C2
-:1013A00004430429E4B2F6D1204610BD10B5074B22
-:1013B0000422D3E90141187B01F5E0718000013A74
-:1013C00044F8210003F11003F3D110BD60090000BF
-:1013D000074B0422C3F80025C3F81C05D3F81C21D1
-:1013E000012AFBD10022C3F81C21C3F80025704755
-:1013F00000200040054B4FF08052C3F82425012205
-:101400009A601B22C3F80C25704700BF00200040E3
-:101410002DE9F843304E346804F12E0323F007031E
-:1014200000AFADEB030D50238DF8003021238DF874
-:10143000013000238DF8023003238DF8033004F1CE
-:1014400021035BBAADF80430244B04F127086D4644
-:101450000DF1060203F11C0153F8040B42F8040BD2
-:101460008B42F9D11B78137004F1230922461C49E1
-:1014700005F1230002F0AAFC4A462946002001F0AB
-:10148000CBF804F59273FE22B3FBF2F34344073327
-:1014900023F00703ADEB030D45F80900424629464A
-:1014A000684601F08DF801465520FFF791FF6C4624
-:1014B00069448C4207D15520FFF78AFF002333602F
-:1014C000BD46BDE8F88314F8010B552808BF00207D
-:1014D000FFF77EFFEDE700BF48010020A0090000F4
-:1014E0004C01002038B50A4D441E14F8012F12B1EA
-:1014F0002B68FF2B00D938BD0A2A02D1FFF788FFDD
-:10150000F3E70D2A1FBF591C5B1929601A71ECE71C
-:101510004801002008B5FFF7E5FFBDE80840FFF7E8
-:1015200077BF1FB50C2201A901F0A4F801A8FFF7AD
-:10153000D9FF05B05DF804FB7FB50DF1070300226C
-:101540008DF80700029302A9012304480592CDE912
-:10155000033201F08FFE07B05DF804FB00010020AC
-:10156000F8B50733122706460698079C0731DD08B1
-:1015700007FB02F303EBD1031044234407FB0044B1
-:1015800004EBD104314618462A4602F01FFC0346FC
-:101590001233A3422E44F5D1F8BD0000044B0822BB
-:1015A000C3F80825034B4FF4E07043F001031847DC
-:1015B00000030050C009000010B5084C4FF4E07063
-:1015C00044F00104A047064B0822C3F80C254FF451
-:1015D00080702346BDE81040184700BFC0090000D6
-:1015E000000300502DE9F0410646FFF7D7FF8020A9
-:1015F000FFF7A2FF0025012420BA90FAA0F0C0B2A4
-:10160000FFF79AFF06EB0508002718F8010B00BA50
-:1016100090FAA0F00137C0B2FFF78EFF122FF4D17D
-:1016200000200134FFF788FFA92C05F11205E3D152
-:101630000020FFF781FFBDE8F041FFF7BDBF0000CC
-:1016400010B5ADF6D83D02AC4FF43D620021204606
-:1016500002F090FB1D2300934522702310210548C2
-:101660000194FFF77DFF2046FFF7BCFF0DF6D83D44
-:1016700010BD00BFC60900002DE9F04FADF6E43DF6
-:1016800004AF03904FF43D620021384602F072FB34
-:101690004723264800930197452318222321FFF76B
-:1016A0005FFF1C2005464FF024084FF0010C039A01
-:1016B0000F23834013401E4AC34008FB03230DF64B
-:1016C0003806002403F1010913F814B00022082A97
-:1016D00006D00CFA02F111EA0B0F05D10132F6E740
-:1016E00019F81410C9070FD55119C1F3C40E01F030
-:1016F000070116F80EA00CFA01F1013241EA0A01C5
-:10170000092A06F80E10E2D10134122C06F1120655
-:10171000DAD10B35742DA0F10400C8D13846FFF79B
-:1017200061FF0DF6E43DBDE8F08F00BF5C0B0000EB
-:10173000DB0D000008B5FFF731FF0020FFF7FCFECE
-:101740000020FFF7F9FE0020FFF7F6FEBDE8084095
-:10175000FFF732BF5E23F0B55843214BB0FBF1F4E5
-:101760009A68A242ADF6DC3D37D002AD4FF43D623F
-:10177000002128469C6002F0FDFA1D2319480093C1
-:101780004522702310210195FFF7EAFE08230093FC
-:1017900018211548019560236A22FFF7E1FE0DF23A
-:1017A0008E7700214FF0010C781800220DE002F135
-:1017B0001903C3F3C40603F0070310F806E00CFA9C
-:1017C00003F343EA0E0383550132A242EFD11231F3
-:1017D0006C29E9D12846FFF705FF0DF6DC3DF0BD89
-:1017E00000010020C60900001B10000038B51B4D89
-:1017F0001B481C4B2B621C4A48F20C0303802F230E
-:10180000C2F8603501210723C2F8001540F21144E7
-:10181000C2F80C350023C2F80435C2F80845C2F8F6
-:101820001435C2F81035C2F82005C2F82415284630
-:10183000C2F82835C2F82C3591601A4605F10C0122
-:1018400001F080FC094B0322C3F80C274FF0A043A2
-:10185000C3F810271022C3F8082538BD0001002066
-:101860004C02002040420F0000C001400003005025
-:1018700008B5044801F0A2FC034B0022C3F8002580
-:1018800008BD00BF0001002000C0014070B50C463B
-:10189000ADF5806D00254618B4F5806FA6EB040108
-:1018A0000BD82246684600F0C9F822466946284609
-:1018B00000F0B2FE0DF5806D70BD4FF48062684699
-:1018C00000F0BCF828464FF48062694600F0A4FEA0
-:1018D000A4F580640546DFE707B540F20113013245
-:1018E000ADF8023000238DF800008DF80120684625
-:1018F0000A461946ADF8043001F064F9044B9842E9
-:1019000003D00448162100F0E9FD03B05DF804FBA4
-:101910000000AD0B8102000007B5013240F2011357
-:101920008DF800008DF8012068460022ADF80230E5
-:10193000ADF8042001F046F9044B984203D0044866
-:101940001F2100F0CBFD03B05DF804FB0000AD0BE0
-:101950008102000010B513238CB00024CDE90143AF
-:1019600011221423CDE9032315211623CDE90513F4
-:101970001E4BDFF880C01720CDE907034FF4FA7340
-:10198000CDE909C322460723214601A80B9301F0A4
-:10199000E9F8224621466620FFF7BEFF224621468F
-:1019A0009920FFF7B9FF124B4FF40C6043F001038D
-:1019B000984722462146B720FFF7AEFF694601222D
-:1019C0000520FFF789FF01220DEB02013520FFF70B
-:1019D00083FF9DF80130022243F002036946012093
-:1019E0008DF80130FFF798FF0CB010BD0402010024
-:1019F000801000000500000313B5032201A99F20F9
-:101A0000FFF76AFF9DF805409DF80430094824025D
-:101A100044EA03449DF806301C43FFF763FD20466B
-:101A2000FFF77FFDFFF7F4FC0348231A58425841A3
-:101A300002B010BD890200001960C8002DE9F34111
-:101A4000454205F00305954288BFD5B2541B04F00A
-:101A5000030806460F4624F003049DB10A460421FC
-:101A60000DEB010001F016F9184B984203D05D21EF
-:101A7000174800F033FD30462A4601A902F0A6F9C6
-:101A80002F442E445CB13A462146304601F002F91B
-:101A90000E4B984201D06621EAE727442644B8F16C
-:101AA000000F0FD004213A460DEB010001F0F2F8CF
-:101AB000064B984201D06E21DAE7424601A9304632
-:101AC00002F084F902B0BDE8F08100BF0000AD0B68
-:101AD000810200002DE9F0411F4900231A46ACB0F5
-:101AE00001F1100001F0B6FE1C4B984206462ED1C3
-:101AF0001B4801F003FF1B49932207A802F066F977
-:101B000007AC00274FF4D6480025032021786278DF
-:101B1000A3788DF80410CDE9030501A8CDE90505EA
-:101B20008DF805200E48ADF808802A4602A98DF8E8
-:101B3000063001F02FFFB04209D10137312F04F1F7
-:101B40000304E1D1064801F0F9FE284601E04FF018
-:101B5000FF302CB0BDE8F081881000000000AD0B14
-:101B600098100000A0100000B0F5801F10B50446CA
-:101B70000BD90F48FFF7B6FC2046FFF7D2FC0D4803
-:101B8000FFF7C8FC4FF0FF3010BD00231A46B4EB3E
-:101B9000023F03F101034FEA023105D301F5805101
-:101BA0008C4201D21046EFE7FF2BEFD11846EBE74E
-:101BB000940200009D0200002DE9F04705461646FC
-:101BC0009846894641B310F0030705D01C48FFF73B
-:101BD000A1FC0020BDE8F087FFF7C6FF0446681EA1
-:101BE0004844FFF7C1FF611C0546F2D0421CF0D00B
-:101BF000A0EB040909F101091EB1424649463846E5
-:101C0000B047104F0223C7F80435C4F1010AAC42B3
-:101C100004DD0023C7F804350120DBE72303C7F800
-:101C20000835D7F80034DB07FBD500F067F826B19C
-:101C3000424649460AEB0400B0470134E7E700BFDB
-:101C4000B602000000E001402DE9F74F10F0030458
-:101C500006460F46984606D01F48FFF75BFC00205B
-:101C600003B0BDE8F08FDFF874B0012302F0030A7F
-:101C700022F00309CBF80435D5094C4518D3BAF145
-:101C8000000F0FD04FF0FF330193DBF80034DB0778
-:101C9000FBD5524607EB090101A802F097F8019B1A
-:101CA00046F809300D4B0022C3F804250120D7E780
-:101CB000DBF80034D907FBD53B59A35100F01EF8DF
-:101CC000B8F1000F05D0620603D10C9A2946E0094D
-:101CD000C0470434D1E700BFE302000000E0014048
-:101CE000054B01224FF48021C3F80C25C3F80825C9
-:101CF000C3F804151A607047000001400B4AD2F87F
-:101D0000003430B58BB10A4800230121D2F80845D0
-:101D100001FA03F5254218BF03F5C07403F101036E
-:101D200018BF42F82400082BF0D130BD000001405C
-:101D30003546526E4FF080434FF0FF32D3F8000427
-:101D4000C3F80024C0F3400070474900FFF702BD0C
-:101D50002DE9F047012186B005460020FFF7FAFC87
-:101D6000042000F0F8FA03A8294600F055FB03A868
-:101D700000F076FB30B93C48FFF7CCFB012006B001
-:101D8000BDE8F08739480C35FFF7C4FB04992846B5
-:101D9000FFF77CFD04463648FFF7A4FB2046FFF71B
-:101DA000C0FBFFF735FB059B9C4201D03148E3E7C0
-:101DB000049CDFF8E0803048FFF7ACFB21462F4A57
-:101DC00000234046FFF7F8FE2D48049FFFF7A2FBD3
-:101DD0000024A1464FEA570AA74217D93E1BB6F581
-:101DE000803F28BF4FF48036264832462919FFF736
-:101DF00025FE2449CDF800900023324608EB04006C
-:101E0000FFF722FF38BB2048FFF784FB1F48FFF78E
-:101E100069FB0498FFF785FB1D48FFF763FB049AF5
-:101E20001C49002000F0F8FB04461B48FFF75AFB52
-:101E30000598FFF776FB1948FFF754FB2046FFF79C
-:101E400070FBFFF7E5FA059B9C420BD01448FFF7A7
-:101E500061FB022093E7344439460AEB5400FFF754
-:101E600079FCB9E700208AE7100300002E03000088
-:101E70004B03000061030000840300004B1D0000C1
-:101E8000970300004E020020AA030000B5030000E3
-:101E9000C303000000800000CC030000DF0300004B
-:101EA000E503000008B5022000F06DFAD8B3042065
-:101EB00000F069FA70B11C48FFF72CFB042000F019
-:101EC00056FA022000F053FABDE808404FF40040F3
-:101ED00000F04DBA1548FFF71DFB082000F047FA47
-:101EE000102000F044FA202000F041FA402000F0D9
-:101EF0003EFA4FF48010FFF72BFF022807D108208D
-:101F000000F029FA102000F026FA00F00FFB042060
-:101F100000F02DFA022000F02AFABDE808404FF444
-:101F2000004000F018BA08BD30040000660400004C
-:101F300010B52448FFF7EEFA0020FFF709FF01383B
-:101F4000C0B201280ED9202000F011FA402000F084
-:101F50000EFA802000F0FFF90124042000F007FAB7
-:101F6000204610BD082000F0F6F9102000F0F3F92B
-:101F7000202000F008FA58B91348FFF7CBFA2020C8
-:101F800000F0E9F94FF4007000F0E5F900F0CEFA46
-:101F9000402000F0F8F920B90C48FFF7BBFA4020C8
-:101FA000EEE70B48FFF7B6FA082000F0E0F9102042
-:101FB00000F0DDF9202000F0DAF9402000F0D7F938
-:101FC0000024CAE7810400009B040000D404000040
-:101FD0000D05000008B50248FFF79CFA00F0ABFAC7
-:101FE000470500001EF0040F0CBFEFF30880EFF36D
-:101FF0000980FFF7EFBF704708B50120FFF7B8F978
-:1020000018B9002000F0010008BD0020FFF7B0F96A
-:102010000028F6D00220FFF7ABF90028F1D003200A
-:10202000FFF7A6F980F00100C0B2EBE71FB5044648
-:102030001148FFF76FFA0C2201A9204600F01AFBA5
-:1020400001A8FFF767FA2046FFF716FBFFF7A0F994
-:102050000A4C20F004002070FFF79AF9237800F072
-:10206000FB00834201D000F061FAFFF747FE0A202F
-:1020700000F0F2FAF0E700BF3D0500004E0201203B
-:1020800030B585B0FFF73AFEFFF7B4F99748FFF790
-:1020900041FA9748FFF73EFA9648FFF73BFA964811
-:1020A000FFF738FA9548FFF735FA9048FFF732FA0C
-:1020B00000F073F99248FFF72DFA00F097F900232A
-:1020C000CDE90133039300F08DF90C2201A900F052
-:1020D000D1FA01A8FFF71EFA8448FFF71BFA8348DC
-:1020E000FFF718FA4FF4804000F04DF990B18548A1
-:1020F000FFF710FA4FF4804000F039F9082000F0A3
-:1021000036F9102000F033F9202000F030F940209B
-:1021100000F02DF9FFF7DEFC28B17B48FFF7FAF954
-:102120007A48FFF783FFFFF715FCFFF73FF9FFF74A
-:102130005DFBFFF785FAFFF7C7F820B17448FFF79A
-:10214000E9F97448EDE7FFF70BF920B17248FFF7A2
-:10215000E1F97248E5E700F035F9802000F013F965
-:1021600020B1802000F003F96D48DAE74FF4003029
-:1021700000F009F938B14FF4003000F0F8F8694880
-:10218000FFF7C8F94AE0FFF737FF78B16648FFF775
-:10219000C1F941F28834FFF72FFF70B1FFF7AEFDB0
-:1021A000012000F059FA013CF5D1E8E75F4B1A68CD
-:1021B0005B68013312D0013210D0FFF7BBFD88B944
-:1021C0004FF4007000F0DFF878B9082000F0CFF885
-:1021D000102000F0CCF8FFF765FE23E05448FFF72D
-:1021E00099F9CCE75348FFF795F94FF4007000F0E8
-:1021F000CAF810B15048FFF78DF94FF4007000F0A5
-:10220000B6F8102000F0BFF878B34C48FFF782F919
-:10221000082000F0ACF8102000F0A9F8FFF788FEC5
-:102220000028A1D04FF4005000F0ADF805464FF45F
-:10223000805000F0A8F844004FF4006000F0A3F8CC
-:1022400044EA850464B2204340B207281DD14FF40C
-:10225000006000F08CF84FF4805000F088F84FF4E4
-:10226000005000F084F836485BE7082000F08BF857
-:1022700030B13448FFF74EF9102000F06CF8AAE7AF
-:102280003148FFF747F90820F7E7032823D020F06B
-:10229000040001284FF4006018D000F05CF8FFF74C
-:1022A000E7FAFFF71DFD214B28485C681D68FFF722
-:1022B00019F92046FFF735F92548FFF713F9FFF71D
-:1022C0001DFD63B64FF0FF3EAD46204700F04FF8CE
-:1022D0004FF48050E1E74FF4006000F048F84FF40D
-:1022E000805000F044F84FF40050D6E75F0700003C
-:1022F00052050000700500008E050000AC050000CE
-:10230000CA050000D305000000060000054550FE88
-:1023100011060000014550FE1E060000024550FE59
-:10232000034550FE250700002B060000008000003A
-:10233000660600007906000091060000B106000064
-:10234000044550FED9060000FF06000044070000C7
-:1023500058070000704710B50446002000F02AF925
-:1023600040EA0401BDE81040002000F015B910B5A6
-:102370000446002000F01EF920EA0401BDE81040E8
-:10238000002000F009B910B50446002000F012F951
-:102390002040003818BF012010BD4FF0804208B522
-:1023A000D2F8043943F48023C2F8043900F0C6F8A7
-:1023B0000120FFF7E8FF20B9BDE80840012100F047
-:1023C000EBB808BD08B50648FFF78CF8002000F010
-:1023D000F1F8FFF7A6F8BDE80840FFF719B800BF0D
-:1023E00060070000022000F0E5B8000008B5FFF724
-:1023F000F9FF0449884204D0BDE80840022000F0FB
-:10240000CBB808BD1D86836808B50248FFF782F87F
-:1024100000F08CF86C0700001FB50C22044601A8E0
-:10242000FFF70CFB0C48FFF75DF80298FFF779F80F
-:10243000FEF7EEFF0948FFF755F80398FFF771F82C
-:10244000FEF7E6FF01AB03CB20601868A0602046D2
-:10245000616004B010BD00BF890700009B07000049
-:102460000068A0F10C0358425841704780B50646F9
-:10247000174610480D461C46FFF734F83846FFF75C
-:1024800031F80D48FFF72EF83046FFF72BF80B48D0
-:10249000FFF728F82846FFF744F82CB10848FFF763
-:1024A00021F82046FFF71EF80648FFF733F8FFF73C
-:1024B000ABFF00BFA60700006D050000AF070000DE
-:1024C0006E0500005F0700001FB506AC1A4654F801
-:1024D000043B00940394FFF7C9FF000007B50023F5
-:1024E00000937246014BFFF7EFFF00BFB8070000F3
-:1024F00007B5034B00937246024BFFF7E5FF00BFA1
-:10250000CF070000C9070000BFF34F8F0549064BF6
-:10251000CA6802F4E0621343CB60BFF34F8F00BF81
-:10252000FDE700BF00ED00E00400FA0508B5FFF785
-:1025300001F9FFF7E9FF08B5FFF7E6FF38B5124CE0
-:102540007C222146002000F067F8E36F83420546B5
-:1025500018D00E48FEF7C6FF2846FEF7E2FF0C48EB
-:10256000FEF7C0FFE06FFEF7DCFF0A48FEF7BAFF98
-:10257000FEF74EFF20464FF48072BDE83840002140
-:1025800001F0F8BB38BD00BF0000002004080000C7
-:10259000300800003B08000010B5054C7C2244F8D0
-:1025A00020102146002000F037F8E06710BD00BF82
-:1025B00000000020014B53F820007047000000206D
-:1025C0002DE9F0410546002401202746034602F18B
-:1025D000FF38944205EB070C03D18CF80030BDE8BE
-:1025E000F08111F804E0461CBEF1000F05D1EB5557
-:1025F0000746012301343046EBE70133DBB2FF2B02
-:1026000005F800E0F6D1A04504D037468CF800303C
-:10261000861CEEE73046E0E730B5C9B10D4DC0434A
-:102620000A44914201D1C04330BD11F8013B83EA15
-:10263000000404F00F0455F8244084EA101080EAE6
-:10264000131303F00F0355F8233083EA1010E8E763
-:102650000846E9E73411000038B5054D044645F059
-:10266000010504B938BD4FF47A40A847013CF8E7AA
-:10267000801100000A2A30B403DC30BC1048FEF799
-:1026800049BF0C46302304F8023B78234B701C22D0
-:102690000F2505FA02F30340D340092B0AD8303343
-:1026A000DBB2043A04F8013B131DF2D1002330BC25
-:1026B0008B7270470F2B01D85733F1E72023F0E7D7
-:1026C0005108000070B546090D4600F01F0419D0EE
-:1026D000012E04D14FF6FF73E340DB0704D4134807
-:1026E0004FF46C71FFF704FF7EB1012E1CD00F4830
-:1026F00040F2B931FFF7FCFE04F5E074002353F813
-:102700002430FFDE4FF0FF33E6E74FF0A04202EB4C
-:102710008402074BD2F800170B4043EA052343F02D
-:102720000203C2F8003770BD024AF0E767080000F4
-:10273000F0F8FCFF000300500E4B0238D3F83C26A3
-:10274000D3F8383610B5072813D8DFE800F0110F9A
-:102750000D0B0A080604100EC871100C8871100ABF
-:1027600048710A711A0ECA701A0C8A701A0A4A70D5
-:102770000B7010BD00900240023807281FD8DFE818
-:1027800000F02927251123211F04CB791B068A7904
-:1027900043EA02434A7943EA02230A7913430E4A81
-:1027A000C2F83C36CB781B068A7843EA02434A7863
-:1027B00043EA02230A781343074AC2F838367047BF
-:1027C0000023E4E70023E5E70023E6E70023EBE747
-:1027D0000023ECE70023EDE7009002400268154B70
-:1027E000FF2A08BF4FF0FF32C3F824254268FF2AB2
-:1027F00008BF4FF0FF32C3F828258268FF2A08BFC0
-:102800004FF0FF32C3F83025C268FF2A08BF4FF0EF
-:10281000FF32C3F834250269FF2A08BF4FF0FF32A8
-:10282000C3F838254269FF2A08BF4FF0FF32C3F8CA
-:102830003C25704700900240F8B5114D6C6BB4B167
-:102840004FF47A735C430A23B4FBF3F40D4E0E4F3E
-:1028500046F00106D7F8003163B995F839304BB925
-:102860004FF42070B047013CF4D10848F8BD4CF259
-:102870005034EBE795F83930002BF6D10448F5E7F2
-:102880005002012090110000009002400700AD0BA3
-:102890000000AD0B0A4B10B500220124C3F800451F
-:1028A000C3F800211C6038B1FFF7C6FF054B984202
-:1028B00004D1054B83F83840024810BD0348FCE7BB
-:1028C000009002400000AD0B500201200700AD0B4C
-:1028D0002DE9F8433D4C994694F830300646884639
-:1028E00017461BB93A487F21FFF702FE2EB9384838
-:1028F0008021FFF7FDFD374841E006F06043B3F16A
-:10290000005FF8D1B307F6D194F83030012B05D031
-:102910004B4558D194F83830002B54D02E4AB9F199
-:10292000020F4FF000030BBFC2F81075C2F8047518
-:10293000C2F81465C2F808650CBFC2F81885C2F861
-:102940000C8584F8393023680CBF08250425C3B9E9
-:1029500094F838306BB1204B05F1804505F52435EE
-:102960000022C3F8002101232B60BDE8F843FFF7E4
-:1029700063BF0120FFF78EFF184B9842EBD1BDE8F3
-:10298000F883A3682BB1E660C4F81480E7611448AB
-:10299000F5E7114AA660C4F81080A76184F830906A
-:1029A000C2F800310123C2F8043394F8382002F051
-:1029B000FF0012B9FFF76EFFE9E705F1804505F565
-:1029C00024352B60E3E70748D9E700BF5002012018
-:1029D0009E0800000A00AD0B009002400700AD0BFE
-:1029E0000000AD0B0B00AD0B30B5194D0FCD8DB008
-:1029F00006AC0FC495E8030084E803001549D1F83C
-:102A00002435DBB20093D1F82835DBB20193D1F83D
-:102A10003035DBB20293D1F83435DBB20393D1F811
-:102A20003835DBB20493D1F83C3506A8DBB2059308
-:102A3000FFF7D4FE0023C1F8003101230B60D1F869
-:102A40000031002BFBD06846FFF7C8FE0DB030BD4B
-:102A5000981100000090024090F8293070B50446AB
-:102A600013B190F82A206ABB6068FF286DD0A26875
-:102A7000FF2A6AD0E268FF2A67D02269FF2A64D061
-:102A8000D3B90321FFF71EFEA0680321FFF71AFE4A
-:102A9000E0680321FFF716FE20690321FFF712FE0D
-:102AA0006069FF2802D00321FFF70CFEA069FF2810
-:102AB00002D00321FFF706FE94F82A3013B9201D37
-:102AC000FFF78CFE224E636A224D736394F829301F
-:102AD00086F83A300123C5F80833FFF785FF2368ED
-:102AE000C5F84035A37F617F227F9B0143EAC10384
-:102AF0001343E27F43EAC213C5F84435D5F80026F4
-:102B000094F8203022F07F4222F0FF02134394F821
-:102B1000212043EA026394F8222043EA426394F8B6
-:102B2000232043EA0273C5F8003633685BB194F89A
-:102B30002830094A5B01DBB282F829334FF4007375
-:102B4000C2F884315360054870BD0548FCE700BFFA
-:102B5000500201200090024000E100E00000AD0BB7
-:102B60000400AD0BF8B50F461646054620B91048CF
-:102B70004FF4DB71FFF7BCFC0E4C94F83030A3B976
-:102B8000C4E900764DB90023C4E9023301220A48A2
-:102B900084F8302084F83830F8BD2846FFF75CFF11
-:102BA000054B9842EFD00548F6E70548F4E700BF2B
-:102BB0009E080000500201200000AD0B0400AD0B88
-:102BC0000C00AD0B2DE9F047DFF8C4A09AF83030C7
-:102BD00005468946164623B928484FF40171FFF788
-:102BE00087FC9AF83000012846D19AF83830DFF88F
-:102BF000948063B3224F0123C7F80833FFF7F4FE34
-:102C00006C78B9F1000F29D1AA784FF000098AF841
-:102C100039902302C7F8009143EA02332A7813431C
-:102C2000EA7843EA42332A7943EA82336A7943EA0B
-:102C3000C233C7F83436FFF7FFFD404513D12B7977
-:102C40004BB90E4840F23621FFF752FC03E0FFF784
-:102C500021FE4045CED10B48BDE8F08749462046CD
-:102C6000FFF78AFDD0E7C7F800911EB168783146BA
-:102C7000FFF762FD0448EFE70448EDE79E08000017
-:102C8000009002400700AD0B0000AD0B0B00AD0B38
-:102C9000500201200323FFF71BBE30B50546900804
-:102CA00040380124844014EA010009D0A85838B102
-:102CB0000021A950AA5813B11A6822431A600120B2
-:102CC00030BD2DE9F341002304460D4601939046A3
-:102CD00001AB4FF4A672FFF7E0FF4FF48272294672
-:102CE0002046FFF7DAFF4FF48C720746294620464C
-:102CF000FFF7D3FF064630B1B8F1000F1DD017B172
-:102D0000D4F83C353E4601AB4FF488722946204644
-:102D1000FFF7C3FF30B1B8F1000F03D016B90FB100
-:102D2000D4F83C3501AB4FF4907229462046FFF7AA
-:102D3000B4FF019802B0BDE8F0814646E3E7000029
-:102D400003685A0910B504461CD0012A06D14FF673
-:102D5000FF7203F01F03DA40D30704D40D484FF489
-:102D60006C71FFF7C5FB236803F01F025B0922604B
-:102D70000BD0012B0CD0074840F2B931FFF7B8FB5C
-:102D8000002010BD4FF0FF32E3E74FF0A040F8E71E
-:102D90000148F6E7670800000003005007B50190FE
-:102DA00001A8FFF7CDFF019A01239340C0F8083531
-:102DB00003B05DF804FB07B5019001A8FFF7C0FF61
-:102DC000019A01239340C0F80C3503B05DF804FB71
-:102DD000F7B51746421C1C460646089B0D4618D000
-:102DE000012902D1BBB1FFF7D9FF01A80196FFF776
-:102DF000A7FF019B00EB83002402D0F80027074BBC
-:102E000044EA87042C4313401C4344EA4504C0F8B9
-:102E1000004703B0F0BDFFF7CEFFE6E7F0F8FCFF98
-:102E2000F8B51A4F012304460D46436164261F433B
-:102E3000002202212046FFF744FF18B94020B8477E
-:102E4000013EF5D14FF080530022D3F830116A775C
-:102E5000082918D1D3F83431ABB94FF0FF32D4F888
-:102E60000805D4F80C15C4F80035C4F80825C4F8D2
-:102E70000C250922C4F80025C4F80035C4F808055B
-:102E8000C4F80C15F8BDC4F80025FBE7B01100002C
-:102E9000104B98421BD011D80F4B984217D008D82E
-:102EA0000E4A0F4B984218BF90420CBF01200020E1
-:102EB00070470C4BC31A5842584170470A4B98420E
-:102EC00005D002D8094A0A4BECE70A4BF2E7012089
-:102ED000704700BF80841E0020A1070090D003002F
-:102EE00048E8010040420F000024F40000127A007C
-:102EF00000093D000048E8012DE9F3474B69794A94
-:102F000090F80490934207460C4600F0D08000F2FF
-:102F1000B880754A934200F0CD8000F2AB80734ACE
-:102F2000934200F0CA80724A934200F0C98071480F
-:102F30004FF4BC71FFF7DCFA4FF08045DFF8D08129
-:102F4000E67E242202FB0983997F66F300019977CC
-:102F50003B79217C02FB03839A7F61F341029A77DC
-:102F60005EBB6269644B9A420CBF4FF0030A4FF09C
-:102F7000000A237E012B94BF0023012300932068C5
-:102F8000534632460121FFF723FF009660685346FF
-:102F900032460121FFF71CFF0096A27EA06853462F
-:102FA0003146FFF715FF237C83F001030093E068AF
-:102FB000534632460121FFF70BFF242303FB09830D
-:102FC000E2681A62217C9A7F267F61F341029A7738
-:102FD00094F812C0217E94F819E03B6896B9D4E9C0
-:102FE00001902268C3F80825C3F80C95C3F81005B2
-:102FF0004FF0FF30C3F86C05C3F81405C3F86865DB
-:10300000C3F86465BEF1000218BF01220229C3F8AB
-:10301000C0C5C3F8245559D003295AD0012901D17C
-:1030200042F00202C3F854250222C3F860253A791F
-:1030300024214A4358F80220CAB1627C43F3073383
-:103040005201002BD2B247DB03F1604101F561412F
-:1030500081F8002303F01F015B099B0003F160432B
-:1030600003F5614301228A40C3F880211A6002B04F
-:10307000BDE8F087214A93427FF459AF4FF0805565
-:103080005CE71F4A93421ED00AD81E4A93423FF47F
-:1030900053AF1D4A93427FF44AAF4FF000454DE7CE
-:1030A000154A93427FF443AF4FF0A05546E74FF0E7
-:1030B000005543E74FF0006540E74FF000753DE7EE
-:1030C0004FF080653AE74FF0206537E742F00402A1
-:1030D000A8E742F00602A5E70C4903F00F03CA5423
-:1030E000C5E700BF80841E0020A1070048E801005A
-:1030F00090D00300DE0800000048E80140420F00C5
-:103100000024F40000093D0000127A0014ED00E0F4
-:103110008C020120431C07B50ED0019001A8FFF7D7
-:103120000FFE019B00EB8300054BD0F800271340F6
-:1031300043F00203C0F8003703B05DF804FB00BFA2
-:10314000F0F8FCFF2DE9F8430646914698460D46F7
-:1031500021B9154840F24B21FFF7CAF93779134CD2
-:10316000242303FB07431B7FD3B91DB16869FFF715
-:103170008FFEB8B124217943631844F80190C3F855
-:1031800004801DB129463046FFF7B6FE242303FB19
-:10319000074400236377064801232377BDE8F883BB
-:1031A0000448FBE70448F9E7DE0800008C02012030
-:1031B0000000AD0B0C00AD0B0400AD0B2DE9F84386
-:1031C000274C0679242303FB064305461B7F23B9BE
-:1031D00024484FF42B71FFF78BF92B6843F3073327
-:1031E000002B0DDB5A09012103F01F03994002F166
-:1031F00020031D4A42F82310BFF34F8FBFF36F8F98
-:1032000024217143635833B12868184BC0F8083340
-:103210002144FFF705FE24272B6807FB0647D3F858
-:103220000805D3F80C85D3F81095BB7FDB070AD4CB
-:10323000FFF770FF4846FFF76DFF4046FFF76AFF54
-:10324000386AFFF767FF2B68094A934204BF0122DF
-:103250005A60242303FB064400232377BDE8F88348
-:103260008C020120DE08000000E100E052010800AD
-:1032700000F002402DE9F04F6D4F90F804802423B8
-:1032800003FB087385B01B7F82460D46164623B9A3
-:10329000684840F29131FFF72BF92B6833B96B681E
-:1032A00023B1644840F29231FFF722F9AB68002B5A
-:1032B00055D1EB68002B4DD1EB88002B52D116F085
-:1032C00008090AD0242303FB08731B6A013304D0C6
-:1032D000584840F29731FFF70BF9242303FB08F31A
-:1032E000FA18517F002940F0A180FB5823B116F055
-:1032F000140F04BF0123537795E80F00242404FB27
-:10330000087404F10C0C8CE80F00206A431C04D0F4
-:10331000A37F99072CD5FFF741FDD5F800B0BBF18D
-:10332000000F04D00BF06043B3F1005F09D1D5F872
-:1033300008E0BEF1000F1ED00EF06043B3F1005F55
-:1033400019D0242303FB087300223B485A7705B0A9
-:10335000BDE8F08F374840F29331FFF7C9F8EB89A9
-:10336000002BA9D033484FF46571FFF7C1F8A6E7E9
-:10337000FFF721FDD1E7DAF8004016F0010318BF8E
-:103380000123C4F8503516F0020318BF0123C4F816
-:10339000403595E80F00C4F844B58DE80F00C4F837
-:1033A0004815C4F834E5C4F838350023C4F818319A
-:1033B000D4F818310723C4F80035242303FB08F39D
-:1033C000EC46FB58B9F1000F21D10122226103BB69
-:1033D000D4F81831002BFBD0624640212046FFF77D
-:1033E00070FC242303FB0873186A421C04D09B7FE3
-:1033F0009B0718D5FFF7DFFCB9F1000F05D1242199
-:1034000001FB08712046FFF70BFD0C489FE7002BDE
-:10341000E7D016F0040F4FF0400314BFC4F8083390
-:10342000C4F80433F1E7FFF7B9FCE5E704488EE799
-:103430008C020120DE0800000A00AD0B0000AD0B7D
-:103440000B00AD0BCA7B036810B52AB9D1E9004265
-:10345000C3F80845C3F80C258A68C3F82425027907
-:103460003C20424311488258CAB10A7B43F30733D8
-:103470005201002BD2B213DB03F1604101F561412F
-:1034800081F8002303F01F015B099B0003F16043F7
-:1034900003F5614301228A40C3F880211A6010BD00
-:1034A000034903F00F03CA54F9E700BFB00201203B
-:1034B00014ED00E0D0F8043130B52BB10023C0F892
-:1034C0000431D0F80431012391F82F2022B30022D7
-:1034D000C0F82421D0F82441C0F81C21D0F81C41A8
-:1034E000C0F80821D0F80821002B79D0002281F8FB
-:1034F0002D2091F82F20002A37D14D6B8C6AA542E0
-:103500001FBF0523C0F80025C0F80035134683F01F
-:10351000010381F82F3028E0D0F8244114B1C0F81D
-:1035200024210EE0D0F81C216AB3C0F81C41D0F869
-:103530001C214A6BD0F8245101324A6345B1C0F8CE
-:103540002441D0F824210122426181F82F20CBE7C9
-:103550008C6AA24204D24C6AA25CC0F81C25C3E764
-:1035600091F82C201AB10123C361002030BD0A6AF2
-:1035700012F0400F4FF0010203D0C26181F82D20FC
-:10358000F3E74261B0E7D0F80841002CACD0C0F8B6
-:103590000821D0F80841D0F82441002CBFD14A6B53
-:1035A0008C6AA242A0D24C6AD0F81855A5544A6B36
-:1035B0008C6A0132651EAA424A6308D10A6A54061F
-:1035C00002D40222C0F80022012202628CE7A24249
-:1035D000FAD10A6A520687D5022381F82D30C4E752
-:1035E0000120C3E72DE9F0415FEA50180E46174667
-:1035F0001C4600F01F051DD0B8F1010F04D14FF695
-:10360000FF73EB40DB0704D416484FF46C71FEF7F0
-:103610006FFFB8F1000F10D0B8F1010F1FD01148A3
-:1036200040F2B931FEF764FF05F5E075002353F869
-:103630002530FFDE4FF0FF33E3E74FF0A04303EB0D
-:103640008503094AD3F80017240244EA87040A4094
-:1036500044EA46041443C3F80047BDE8F081034B35
-:10366000EDE700BF67080000F0F8FCFF0003005022
-:1036700013B53A4B01930023C0F80431D0F804216C
-:10368000C0F82431D0F82421C0F81C31D0F81C2116
-:10369000C0F80831D0F80821C0F800324B6381F837
-:1036A0002F300123036291F82D209A4218BF8360C6
-:1036B0008B6A044673B14B6A1B78C0F81C350B68E3
-:1036C00003B340F286238B608B682548C4F804332B
-:1036D00002B010BD91F82C3013B10123C361EEE7A5
-:1036E0000B6A13F0400F4FF0010316BFC361436133
-:1036F00081F82D30E3E72046FFF7DCFE28B1019B7F
-:10370000013B0193019B002BF5DC91F82F305BB955
-:103710001348019B002BDBDC0023C4F80035052394
-:103720001048C4F80035D3E7D4F8C434C4F8C4341E
-:103730008BB10C4A0C4813F0010F08BF104613F070
-:10374000020F02F5803218BF104613F0040F074B2A
-:1037500018BF1846DDE70348DBE700BFA08601007D
-:103760000000AD0B0100AD0B0000AE0B0200AE0B74
-:1037700013B5334B01930023C0F80431D0F8042172
-:10378000C0F82431D0F82421C0F81C31D0F81C2115
-:10379000C0F80831D0F808214B6381F82F308B6ACC
-:1037A000012B044617D10B6A5B0614D40223C4F81C
-:1037B00000320123236291F82D20022A18BF2360D2
-:1037C0000B688BB140F286238B608B681D48C4F870
-:1037D000043302B010BD0123E9E72046FFF76AFE7B
-:1037E00028B1019B013B0193019B002BF5DC91F873
-:1037F0002F305BB91348019B002BEADC0023C4F88F
-:10380000003505231048C4F80035E2E7D4F8C43485
-:10381000C4F8C4348BB10C4A0C4813F0010F08BF34
-:10382000104613F0020F02F5803218BF104613F055
-:10383000040F074B18BF1846DDE70348DBE700BF5E
-:10384000A08601000000AD0B0100AD0B0000AE0B27
-:103850000200AE0B2DE9F047074691469A460C460A
-:1038600019B92248B521FEF743FE97F80480204D90
-:103870003C2000FB08F0291891F82E609EBB8E605A
-:1038800045F80090C1F804A081F82D6081F83160FE
-:1038900081F83060F4B1637B81F83830A37B81F824
-:1038A00039309BB9D4E900239A4203D10F48E8216B
-:1038B000FEF71EFE2068062303220021FFF792FE7A
-:1038C0006068062303220021FFF78CFE214638465C
-:1038D000FFF7B8FD3C2303FB08550648012385F894
-:1038E0002E30BDE8F0870448FBE700BF1E0900004A
-:1038F000B00201200000AD0B0C00AD0B70B50D4CFB
-:1039000006793C2303FB0643054693F82E30012B32
-:1039100004D0094840F23111FEF7EAFD2B68052278
-:10392000C3F800253C2303FB0644022384F82E3011
-:1039300070BD00BFB00201201E09000070B5124C1E
-:1039400006793C2303FB0643054693F82E3023B942
-:103950000E484FF49F71FEF7CBFD2B680C4AC3F85D
-:103960000823D3F8002222F00302C3F80022002229
-:10397000C3F800253C2303FB0644012384F82E30C2
-:1039800084F8302070BD00BFB00201201E09000085
-:10399000864204002DE9F8434D4F06793C2303FB92
-:1039A0000673054693F82E30022B0C46904604D041
-:1039B000484840F2AE21FEF79BFDE36833B96368E7
-:1039C00023B1444840F2AF21FEF792FD236933B999
-:1039D000A36823B13F484FF42C71FEF789FD4FF0E7
-:1039E0003C0909FB06F957F80930A3B92378022BE3
-:1039F00008D02378032B0ED136484FF42D71FEF7F3
-:103A000077FD08E0334840F2B321FEF771FD57F827
-:103A10000930002BEDD03C2303FB0673D5F8009052
-:103A200093F82D30012B04D12378012B06D12A489D
-:103A300011E0022B02D12378012BF8D13C25274B32
-:103A4000C9F8083305FB067595F830302BB1AB6823
-:103A50002348C9F80433BDE8F883C8F3800383F032
-:103A60000103DBB2A64685F83030BEE80F0005F151
-:103A70000C0CACE80F00DEF80030CCF800306368C6
-:103A8000AB62E368C5F820806B626378C9F888355B
-:103A90002378012B17D09BB9C8F340183C2303FBB4
-:103AA00006732946484683F82C80FFF7E1FD3C2346
-:103AB0005E43BA19BB59002BCDD182F83030CAE72A
-:103AC0004FF00108EAE729464846FFF751FEEEE7C6
-:103AD000B00201201E0900000500AD0B8642040063
-:103AE0000B00AD0B0F49104A104B00F010F81049B5
-:103AF000104A114B00F00BF81049114A114B00F01D
-:103B000006F81149114A124B00F001F806E0521A6A
-:103B100003DD043A98588850FBDC704700F03AF80F
-:103B2000FDF798FB000100202C010020543E00000E
-:103B30002C0100202C010020803E00002C010020E0
-:103B40002C010020803E00002C0100202C010020D0
-:103B5000803E0000FEE7FEE7FEE7FEE7FEE7FEE749
-:103B6000FEE7FEE7FEE7FEE74FF08053D3F8302193
-:103B7000082A03BFD3F83401B0FA80F040090020CE
-:103B800070470000024AD2F80034002BFBD0704787
-:103B900000E0014008B54FF08053D3F83021082AE7
-:103BA0004ED14FF080420021C2F80C11C2F8101122
-:103BB000C2F8381502F54042D3F80414C2F82015B3
-:103BC000D3F80814C2F82415D3F80C14C2F8281539
-:103BD000D3F81014C2F82C15D3F81414C2F8301509
-:103BE000D3F81814C2F83415D3F81C14C2F84015D1
-:103BF000D3F82014C2F84415D3F82414C2F8481599
-:103C0000D3F82814C2F84C15D3F82C14C2F8501568
-:103C1000D3F83014C2F85415D3F83414C2F8601530
-:103C2000D3F83814C2F86415D3F83C14C2F86815F8
-:103C3000D3F84014C2F86C15D3F84434C2F8703588
-:103C4000FFF792FF18B13B4B3B4AC3F88C26FFF7B6
-:103C50008BFF18B1394BFB22C3F81825FFF784FFFF
-:103C600058B14FF080424FF08051D2F8E43ED1F885
-:103C7000581261F30303C2F8E43EFFF775FF20B169
-:103C80002F4B4FF40072C3F840264FF08053D3F807
-:103C90003031082B09D14FF08043D3F80024D207EC
-:103CA00044BF6FF00102C3F80024264AD2F88830DE
-:103CB00043F47003C2F88830BFF34F8FBFF36F8FA8
-:103CC0004FF08053D3F83021082A0BD1D3F8343188
-:103CD000042B81BF4FF01023D3F808224FF080430C
-:103CE000C3F858254FF01021D1F80C32DB071FD54F
-:103CF00015480123C0F80435FFF744FFD1F80C3212
-:103D000023F00103C1F80C32FFF73CFF0023C0F899
-:103D10000435FFF737FFBFF34F8F0A490B4BCA68D3
-:103D200002F4E0621343CB60BFF34F8F00BFFDE7A7
-:103D300008BD00BF005000404881030000F0004073
-:103D40000090024000ED00E000E001400400FA05B0
-:103D500008B5064B044613B10021AFF30080044BB5
-:103D60001B6803B198472046FEF7F4FA00000000F4
-:103D7000EC02012002440346934200D1704703F84D
-:103D8000011BF9E770B50D4B0D4D5B1B9C10002618
-:103D9000A64209D100F028F80A4D0B4B5B1B9C1082
-:103DA0000026A64205D170BD55F8043B9847013660
-:103DB000EEE755F8043B98470136F2E7F43D000082
-:103DC000F43D0000F43D0000F83D00000A4491423B
-:103DD00000F1FF3300D1704710B511F8014B03F823
-:103DE000014F9142F9D110BDF8B500BFF8BC08BC35
-:103DF0009E46704729120000F8B500BFF8BC08BC09
-:0C3E00009E467047011200000000000008
-:103E0C00543E0000000100200B000000803E00002A
-:103E1C002C01002000000000803E00002C0100203E
-:103E2C0000000000803E00002C010020000000007B
-:103E3C002C01002071400000F00201200000000065
-:083E4C00F0020120000000005B
-:103E540000F0024000000000FFFFFFFF060000002A
-:103E640008000000FFFFFFFFFFFFFFFF0007FF0048
-:0C3E740000093D000000000000000000FC
-:020000042000DA
-:1000000000000000000000000000000000000000F0
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C0000000000000000000000000000000000030
-:1000D0000000000000000000000000000000000020
-:1000E0000000000000000000000000000000000010
-:1000F0000000000000000000000000000000000000
-:0400000300003AE5DA
-:00000001FF
diff --git a/bin/boot/boot_bb2@1447134832.bin b/bin/boot/boot_bb2@1447134832.bin
deleted file mode 100755
index c591c2ed3a..0000000000
Binary files a/bin/boot/boot_bb2@1447134832.bin and /dev/null differ
diff --git a/bin/boot/boot_bb2@1447134832.hex b/bin/boot/boot_bb2@1447134832.hex
deleted file mode 100644
index 14072ac25d..0000000000
--- a/bin/boot/boot_bb2@1447134832.hex
+++ /dev/null
@@ -1,1062 +0,0 @@
-:020000040800F2
-:10000000482001208D2C0008ED2F0008ED2F00085E
-:10001000ED2F0008ED2F0008ED2F00080000000074
-:10002000000000000000000000000000ED2F0008AC
-:10003000ED2F000800000000ED2F0008ED2F000854
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0C2FD3A
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000AFFD05B05DF804FBE2
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:080188009BFD05B05DF804FBCE
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F06CFCDDF820C026
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F00DFC089B9CE0BA4268
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00C93F00084B45F7DBEDE70D9907910798BB
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01D03F0008D1
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C00BFF34F8F044A054BD16801F4E0610B43E0
-:10191C00D360BFF34F8FFEE700ED00E00400FA0543
-:10192C0010B5044608484021FFF784FC0028F9D084
-:10193C0005482146FFF77AFC03484021FFF77AFC63
-:10194C000028F9D010BD00BF00480040014608B582
-:10195C000448FFF757FC03480221FFF755FC002809
-:10196C00F9D008BD0038004000B9074803680133BE
-:10197C0008D04368013305D0C069044BC31A5842E0
-:10198C005841704700207047004000086F57654E63
-:10199C00074B1A69C2F306427F2A07D11869C0F3B4
-:1019AC000C00B0F1FF0358425841704700207047BB
-:1019BC000028004000F13F4000F57E00800A082816
-:1019CC000FD8084A52F820305BB1013B42F8203066
-:1019DC003BB9012101FA00F0034B1A6B22EA00001B
-:1019EC0018637047200000200038024000F13F408F
-:1019FC0000F57E00800A08280DD8074A52F82030DE
-:101A0C00591C42F8201033B9012101FA00F0034BA4
-:101A1C001A6B1043186370472000002000380240F6
-:101A2C0010B50C4C2046FFF7E1FF072001F01AFB24
-:101A3C004FF4805100222046FFF776FB042001F082
-:101A4C0011FB2046FFF7B6FF4FF480400021FFF753
-:101A5C0067F810BD0004024010B50B4C01214FF487
-:101A6C008040FFF75DF82046FFF7C0FF20464FF49B
-:101A7C0080510122FFF758FB072001F0F3FA2046B2
-:101A8C00FFF798FF10BD00BF00040240F0B55E25C3
-:101A9C006843204BB0FBF1F51A68ADF6DC3D95427E
-:101AAC0034D002AC00214FF43D6220461D60FEF79D
-:101ABC00CEFA1B238DE81800174810214022692309
-:101ACC0001F0B3FA08238DE818001448602318219C
-:101ADC006A2201F0AAFA0DF2FA760DF28E73002248
-:101AEC00AA420DD002F11900C0B2C108012700F0C2
-:101AFC00070007FA00F05F5C013238435854EFE7F7
-:101B0C001233B342EBD1204601F0F9FA0DF6DC3D6D
-:101B1C00F0BD00BF00000020FC370008913B00081E
-:101B2C002DE9F043ADF6DC3D02AC00214FF43D62F3
-:101B3C0080462046FEF78BFA2C238DE818002022D5
-:101B4C00284818215C2301F070FA1C2215460F2737
-:101B5C00974007EA0807D740234B242101FB07379E
-:101B6C000DF50366002117F801C00023082B07D0E0
-:101B7C000120984010EA0C0F0CBF0020012003E05C
-:101B8C007818407800F0010078B15819C0B24FEACB
-:101B9C00D00E4FF0010900F0070009FA00F016F81A
-:101BAC000E9040EA090006F80E000133092BDDD136
-:101BBC000231242906F11206D5D10B35742DA2F170
-:101BCC000402C4D10E238DE81800102190226D233D
-:101BDC00064801F02AFA204601F091FA0DF6DC3D98
-:101BEC00BDE8F083EC350008E83200082835000821
-:101BFC0010B5ADF6D83D02AC204600214FF43D6245
-:101C0C00FEF725FA1B238DE81800102140226923CA
-:101C1C00044801F00AFA204601F071FA0DF6D83D9D
-:101C2C0010BD00BFFC3700082DE9F74F434E444F61
-:101C3C0001214FF48040FEF773FF3046FFF7D6FECC
-:101C4C003846404CFFF7D2FE30460D210522FFF7F7
-:101C5C0070FA052230460F21FFF76BFA3046214609
-:101C6C000125FFF70EFA2023384621462360257103
-:101C7C00A5714FF0000A01934FF4805BFFF701FA56
-:101C8C00304621464FF002084FF48049257184F804
-:101C9C0006A0C4F800B0FFF7F4F93046214684F8EA
-:101CAC000480C4F80080FFF7ECF921462571A5717A
-:101CBC00C4F80090244C3046FFF7E3F92046FFF7B8
-:101CCC0049F920462149FFF76FFA20462946FFF7CC
-:101CDC008AFA019B384619465246FFF725FA2A46DE
-:101CEC0030464946FFF720FA40462946FEF718FFD2
-:101CFC00A4F5505480232380F92323854FF4F0421C
-:101D0C004FF6FF13E3623046A28329462364424612
-:101D1C00A4F820B0FFF70DFA29462046A582FEF75D
-:101D2C002FFD3846FFF746FE3046FFF743FE484688
-:101D3C005146FEF7F5FE03B0BDE8F08F00040240FB
-:101D4C000008024004000020003800400C00002075
-:101D5C0010B5074C2046FFF749FE20461021FFF72F
-:101D6C00DFF92046FFF726FE012001F07BF910BDBC
-:101D7C000000024038B50A4B0C2404FB00346068A8
-:101D8C00FFF734FE21896068FFF7C4F905466068E7
-:101D9C00FFF710FED5F1010038BF002038BD00BFA1
-:101DAC00A032000810B5064C2046FFF71FFE204657
-:101DBC001021FFF7B7F92046FFF7FCFD10BD00BF5F
-:101DCC0000000240F0B587B0FFF7E2FD002841D1DA
-:101DDC000320FFF769F807460420FFF765F8474B27
-:101DEC000A241A68C2F30545C2F30626C2F302138D
-:101DFC0002F00F0204FB0322330906F00F0604FB6A
-:101E0C0003662B0905F00F0504FB03533C2505FB6A
-:101E1C00036305FB0323191A44BF01F5A83101F52F
-:101E2C00C07107EB91210320FFF72EF803A8FFF7F1
-:101E3C00A8F903A8FEF704FF01A8FFF7A8F901A968
-:101E4C000020FEF741FF02A8FFF7A7F9002002A926
-:101E5C00FEF7A4FF0A2442F2107501F072F910B9D2
-:101E6C00013DFAD107E0264D01F06BF908B1013DB7
-:101E7C00FAD1013CEFD10020FEF7A2FD00214FF278
-:101E8C000400FFF72DF84FF43C50FFF755F81D4BAD
-:101E9C0001201A6842F004021A60FEF791FD1A4BF9
-:101EAC001B781BB1194801F06BF908E01848FEF7D4
-:101EBC0011F9174902461748FEF7EDF970B11648AB
-:101ECC0001F05EF90020FEF7FFFF08200121FEF76C
-:101EDC00C7FF4FF400400121FFF702F80F4801F053
-:101EEC004FF9084B1A6842F002021A600C4B1A693F
-:101EFC0042F004021A6130BF07B0F0BD0028004068
-:101F0C00A086010000700040017AFF1F763900089E
-:101F1C008B3900082078FF1F91390008A63900087A
-:101F2C0000ED00E0B0F1006F10B504460BD20D4887
-:101F3C0001F01DF9204601F029F90B4801F020F9B8
-:101F4C004FF0FF3010BD094A002352F8041FA14284
-:101F5C0002D851688C4202D30133072BF5D11846B5
-:101F6C0010BD00BFBA3A0008B73900087C3200082F
-:101F7C0008B5024801F004F9FFF7C2FCD03900089B
-:101F8C0010B504460A480221FFF73EF90028F9D0A3
-:101F9C0007482146FFF736F905480121FFF734F9C8
-:101FAC000028F9D00248FFF72AF9C0B210BD00BFD3
-:101FBC00003001402DE9F04F87B00121814600AF80
-:101FCC000020FFF763FD042001F067F807F10C0017
-:101FDC0049460C2201F0FFF8FD683C690C2DD7F83E
-:101FEC0014B013D0994801F0C2F8284601F0CEF88D
-:101FFC00974801F0BCF8204601F0C8F8954801F06C
-:10200C00B6F8584601F0C2F8934833E0934801F013
-:10201C00B7F84FF480500121FEF776FD09F10C0959
-:10202C00EA46FEF7EFFBA0B06E462546C846802D6B
-:10203C000CD941463046802201F0CDF830462021A3
-:10204C00FEF7ECFB803D08F18008F0E725B1304647
-:10205C0041462A4601F0BFF82946304600F0CAFF37
-:10206C00002180464FF48050FEF74EFDD845D546F2
-:10207C0004D07B4801F084F80120E3E088B0684686
-:10208C004946202201F0A7F86846FFF76DFC7860FE
-:10209C007448D54601F074F87B682BB9724801F08E
-:1020AC006FF804F5404600E02646002E3BD06F4802
-:1020BC00FFF738FF05466E483044FFF733FF002D1D
-:1020CC00824630DB00282EDB431B01334FEA430BE7
-:1020DC0000205946FFF7DAFCFEF7C0FB654B0026E3
-:1020EC0003EB45033B6055451BDCF320FEF7CCFBB3
-:1020FC003B68002133F81600FEF7E6FB082806F1D2
-:10210C00010608D05C4801F032F8284601F03EF890
-:10211C0001F025F805E030465946FFF7B7FC0135CC
-:10212C00E1E7FEF7A9FB554801F02AF87B680BB1F3
-:10213C004E4B00E0524B7B6063083B600025A54290
-:10214C003CD2661BB6F5803F28BF4FF480362EB1CB
-:10215C004C4805EB0901324601F03DF8D7F804A0D4
-:10216C00FEF77CFBF320FEF78FFBAA444FF0000B2D
-:10217C00B34519D043490BEB0A0011F80B10FEF7CD
-:10218C00DBFB08280DD0404800F0F1FF504600F072
-:10219C00FDFF00F0E4FFFEF76FFB3C4800F0F0FFA2
-:1021AC000CE00BF1010BE3E7FEF766FB3B68214605
-:1021BC0003EB5500FFF76AFC5D44C0E7344800F0C0
-:1021CC00D6FF204600F0E2FF324800F0D9FF002095
-:1021DC00FFF7CAFB20B1304800F0D2FF234D03E0DB
-:1021EC002E4800F0CDFF264D4FF480500121A6085B
-:1021FC00FEF78AFCFEF706FB31462846FEF70EFB7F
-:10220C0004F0030105EB860000F0F4FE0021044607
-:10221C004FF48050FEF778FC214800F0A8FF4046B0
-:10222C0000F0B4FF1F4800F0A2FF204600F0AEFF04
-:10223C0000F095FF444504D01B4800F0A1FF02209C
-:10224C0000E000201C37BD46BDE8F08FDB390008EC
-:10225C00E4390008EE390008F5390008143A000892
-:10226C00313A0008543A0008673A00080040000868
-:10227C00FF3F0008D83200087F3A0008973A000860
-:10228C000000010844000020AA3A0008C33A0008E4
-:10229C00CE3A0008DC3A0008E33A0008083B000894
-:1022AC002D3B0008403B0008463B000870B54FF43E
-:1022BC0080500121FEF740FCFFF774FD0520164C01
-:1022CC00FFF75EFE002C04F1FF341FDCFFF740FD2E
-:1022DC00FFF768FD9F20FFF753FEA920FFF750FE84
-:1022EC000546A920FFF74CFE0646A920FFF748FE3D
-:1022FC003602044646EA0545FFF72AFD4FF48050A6
-:10230C000021FEF719FC45EA040070BDA920FFF777
-:10231C0037FEC307D6D4D9E70090D00308B50446DE
-:10232C00114800F024FF204600F030FF00F017FFAA
-:10233C002046FFF7F5FB00F004FF0C4B20F00400E7
-:10234C0018701D4600F0FDFE2B7800F0FB00834258
-:10235C0001D10B2401E000F0C0FE013CF2D04FF49F
-:10236C007A7000F07FFEF8E7F13B00084400012092
-:10237C0080B5464B4FF4C06290B01A6001214FF00B
-:10238C008050FEF7CDFB0120FEF714FB4048FFF711
-:10239C002DFB4FF480200121FEF7C2FB3C480A21A3
-:1023AC000722FEF7C6FE072239480B21FEF7C1FEB5
-:1023BC0010AF4FF4806347F8383D00244FF001080C
-:1023CC000225334839468DF80E408DF80F808DF874
-:1023DC000C508DF80D50FEF754FE4FF400632C4852
-:1023EC00394602938DF80C5004AEFEF74AFE4FF4BA
-:1023FC006133049327480C233146ADF81A30ADF8FD
-:10240C001440ADF81640ADF81840ADF81C40FEF77E
-:10241C00CFFD41461F48FEF7FDFE1D48FFF7CAFAE7
-:10242C001D4800F0A4FE1D4B586F00F0AFFE00F0ED
-:10243C0096FE7920FEF7C8FB404502D1184800F003
-:10244C009FFE012000F014FE10B90121FEF71CFDC7
-:10245C004120FEF7B9FB58BB124800F091FE012059
-:10246C00FEF7E0FA47F230544120FEF7ADFBF8B925
-:10247C004FF47A7000F0F6FD013CF5D10A4800F0FB
-:10248C007FFEFFF7D1FB094837E100BF003C02405B
-:10249C000008024000480040FD3B000800380240A4
-:1024AC000D3C00081D3C0008353C0008114550FE51
-:1024BC004FF48070FEF70AFB0120FEF71FFBFEF7BE
-:1024CC00E1FB0020FEF77CFA01214FF48040FEF77F
-:1024DC0033FBBB48FFF78AFA3046FEF712FE0024A6
-:1024EC000125B74831468DF815408DF816408DF80A
-:1024FC00174004958DF81450FEF7C3FD2246B048E2
-:10250C002946FEF711FEAE48FFF754FAAD4C04F124
-:10251C00300954F8040CFFF769FA3046FEF7F1FD68
-:10252C00236854F8040C4FF000083146022504933C
-:10253C008DF814808DF815508DF817800C34FEF73B
-:10254C00A0FD54F8100CFFF735FA4C45E1D14FF4CF
-:10255C0080404146FEF7F0FA4FF4807000F088FDA1
-:10256C00002800F0CC804FF4807000F08BFDFFF75A
-:10257C0029FC954800F004FE0220FEF795FC9349D7
-:10258C00884202D00220FEF77FFC914800F0EFFD5C
-:10259C000220FEF789FC00F0F9FD00F0E0FD4FF49D
-:1025AC00804000F065FD90B18A4800F0E9FD4FF4E1
-:1025BC00804000F067FD082000F064FD102000F062
-:1025CC0061FD202000F05EFD402000F05BFDFFF778
-:1025DC002BFBFFF70DFB01214FF48050FEF7ACFAFB
-:1025EC007748FFF703FA01200146FEF78DFA052123
-:1025FC000A467348FEF79DFD714806210522FEF739
-:10260C0098FD05226E480721FEF793FD0024022554
-:10261C00C0236B4839468DF80C508DF80D50029341
-:10262C008DF80E408DF80F40FEF72BFD20236448EB
-:10263C0039468DF80F5002930125FEF722FD102329
-:10264C0039465F4802938DF80C508DF80F50FEF709
-:10265C0018FD6148FEF77EFC4FF48273ADF8123022
-:10266C004FF40073ADF81A305B4807233146ADF8D0
-:10267C002030ADF81040ADF81440ADF81640ADF870
-:10268C001840ADF81C40ADF81E40FEF78DFD2946F4
-:10269C005148FEF7A8FD4A48FFF78CF9FFF782FB7B
-:1026AC00AB20FFF76DFCFFF753FB642000F0DAFC66
-:1026BC0021464FF48050FEF73FFAFFF7F7FD28460E
-:1026CC00FEF7F2FB25460490E8B2FFF753FB98BBEC
-:1026DC0070550135042DF7D1049D3DB13F4800F0F4
-:1026EC0046FD284600F052FD00F039FD0120294638
-:1026FC00FEF7CAFB002C3DD03948FFF70FFE2846E9
-:10270C00FEF764F9012814D12846FEF769F94FF455
-:10271C000060FEF703FC18B1324800F031FDB9E05F
-:10272C00314C00F00EFD002800F00481013CF8D182
-:10273C00B0E000F0BDFC1CE7735D042B0ADD2B48F8
-:10274C0000F01EFD049800F021FD01200021FEF791
-:10275C009BFB0FE00133DBB2042B7355B9DD24482E
-:10276C0000F005FD284600F011FD224800F008FDA0
-:10277C000124AEE7FFF79AFD1F4B0344012B01D94F
-:10278C001E48BAE71E4800F0F2FC0020FEF78CFB56
-:10279C0000F0FCFC00F0E3FC802000F069FC18B1B8
-:1027AC00802000F06FFC73E04FF4003000F060FC10
-:1027BC00044638B34FF4003000F064FC04E100BF71
-:1027CC0000000240A83200086D3C0008708641569B
-:1027DC00A93C0008BE3C0008003001402C3D00081C
-:1027EC00014550FE523C0008A0860100EB3C00085D
-:1027FC00173D0008223D0008EA44DFFF024550FE69
-:10280C00583D00080120FFF7B5FAD8B12046FFF774
-:10281C00B1FAB8B1B74800F0B3FC41F288340120EA
-:10282C00FFF7A8FA002800F08B800020FFF7A2FA2F
-:10283C00002800F085804FF47A7000F013FC013C06
-:10284C00EDD1C1E00020FFF78FF808B1AA4B00E0F2
-:10285C00AA4B0CCB013301D0013271D1A84800F046
-:10286C008FFCB1E0A74800F08BFC082000F00AFCBC
-:10287C00102000F007FC202000F004FC402000F0A9
-:10288C0001FC0024042000F0FDFB002C40F008812A
-:10289C009D4832E7FFF77CF8002847D0002001A9BB
-:1028AC009A4DFEF759FA344600203946FEF7B8FA2D
-:1028BC000FCD0FC40FCD0FC495E80F0084E80F00A7
-:1028CC009DF8092010A901EB82039DF80BE053F849
-:1028DC00343C40F26D1101FB0E3303EB9E030EF101
-:1028EC00010E1EF0030F02D1022A88BF01339DF89E
-:1028FC000A409DF80410013C2344182404FB0314E3
-:10290C009DF805103C2202FB04149DF806100320D0
-:10291C0002FB0414FEF7C8FA01190320FEF7B4FAFF
-:10292C0004200021FEF7B0FA00F0C2FB784800F05A
-:10293C0027FC1EE6774800F023FCFFF743FAF5E787
-:10294C007D20FEF741F970B94FF4007000F090FB58
-:10295C0048B9714800F014FC082000F093FB1020DB
-:10296C0000F090FB85E07D20FEF72EF910B16B484E
-:10297C0000F006FC4FF4007000F07AFB10B16848D0
-:10298C0000F0FEFB4FF4007000F07CFB102000F018
-:10299C006FFB48B1634800F0F3FB082000F072FBBA
-:1029AC00102000F06FFB12E0082000F061FB20B15A
-:1029BC005D4800F0E5FB102003E05C4800F0E0FB14
-:1029CC00082000F06AFB54E0594800F0D9FB594844
-:1029DC0000F0D6FB4FF40010FFF7ECFA10B1022810
-:1029EC0028D809E0202000F04DFB402000F04AFBE5
-:1029FC00802000F052FB1DE0082000F04EFB102060
-:102A0C0000F04BFB202000F033FB20B94A4800F0CB
-:102A1C00B7FB202009E0402000F02AFB00287FF4BF
-:102A2C0021AF464800F0ACFB402000F036FB4FF4E1
-:102A3C0000701AE0012425E7414800F0A1FB0820B2
-:102A4C0000F020FB102000F01DFB202000F01AFBF2
-:102A5C00402000F017FB2046FFF7ACFA022840F0AC
-:102A6C00F480082000F019FB102000F016FB00F099
-:102A7C0034FB022000F0FCFA90B1042000F0F8FACC
-:102A8C0004460028D8D02F4800F07AFB042000F030
-:102A9C00F9FA022000F0F6FA4FF4004000F0F2FAD6
-:102AAC004FF4005000F0E4FA04464FF4805000F06C
-:102ABC00DFFA400040EA84044FF4006000F0D8FADA
-:102ACC00E4B22043431C03F0FF03013B4FF40060CE
-:102ADC00062B5CD8DFE803F03C383C043C383C0067
-:102AEC0000F0D0FA4FF4805000F0CCFA4FF40050C4
-:102AFC002EE000BF643D0008004000080000010803
-:102B0C00963D0008C03E0008034550FE50320008B8
-:102B1C005D3C00085F3F0008A93D0008BA3D000875
-:102B2C00D23D0008F23D0008083E00081E3E000899
-:102B3C00743F0008343E00084E3E0008873E0008F3
-:102B4C00303F0008FA3E000800F09CFA4FF4805029
-:102B5C0000F0A3FA45F25550FDF70AFF0420FDF7EB
-:102B6C000DFF40F6FF70FDF70FFF0020FDF700FF93
-:102B7C004FF480500121FDF765FEFDF713FFFDF7C3
-:102B8C0009FF0020FEF7F0FE68B9354B0CE000F0B1
-:102B9C0079FA4FF4805000F075FA4FF4005000F0C1
-:102BAC0071FA3048A9E5304B5D6830481E6800F07A
-:102BBC00DEFA284600F0EAFA00F0D1FA00F0CFFA7B
-:102BCC0000239A0002F16042013302F561424FF09A
-:102BDC00FF31082BC2F88010C2F88011F1D1244BC0
-:102BEC0000241C635C639C631C645C64FDF700FF45
-:102BFC0020480121FDF7ACFF21461E48FDF7A8FF38
-:102C0C00F1200121FDF7B0FF2146F120FDF7ACFFCB
-:102C1C0001200146FDF7B4FF21460120FDF7B0FF6E
-:102C2C0015480121FDF7B8FF21461348FDF7B4FF05
-:102C3C0012480121FDF7BCFF10482146FDF7B8FFF3
-:102C4C0063B64FF0FF3EB5462847042000F01AFA51
-:102C5C00022000F017FA4FF4004000F01EFA1FE7B4
-:102C6C0000000108044550FE004000084B3F0008DE
-:102C7C000038024000106022FFC9FE3633590700AD
-:102C8C000748084A08B50849121AFDF7D7F907484A
-:102C9C00074A0021121AFDF7DAF9FFF769FB00BFAA
-:102CAC000000002020000020E03F00082000002051
-:102CBC00480001202DE9F04FDDE909AB0E469C469A
-:102CCC0003783B490746C95C01300D07F8D42B2B20
-:102CDC0005D02D2B04D107464FF0FF3301E00746FA
-:102CEC000123397830290ED17978782905D132F041
-:102CFC00100103D10237102207E00AB1082A04D1CF
-:102D0C000137082201E002B90A2200200021B8464E
-:102D1C0017F8015BA5F13004E4B2092C0DD9A5F12B
-:102D2C004104192C02D8A5F1370405E0A5F1610482
-:102D3C00192C30D8A5F15704E4B294422BDA4FEA9F
-:102D4C00E27900FB09F502FB0155A0FB0201E4B29C
-:102D5C00294400194FF0000541EB0501BCF1000FAF
-:102D6C00D5D0012B06D182457BEB0104CFDA50463E
-:102D7C005946CCE75C1CCAD1DDE90B89444261EBB6
-:102D8C004105444575EB0909C1DADDE90B01404207
-:102D9C0061EB4101BBE70EB1C6F80080DD1700FB0B
-:102DAC0005F203FB0122A0FB03011144BDE8F08FE7
-:102DBC004C1200082DE9F04F91B01F9E0C463106C5
-:102DCC0091468046DDE91A231E9D04D5CDE90223E8
-:102DDC004FF0000C1BE0002A73F100071046194657
-:102DEC0002DA504263EB4301002A73F1000ACDE989
-:102DFC00020107DBB70708D416F0040C07D04FF01C
-:102E0C00200C04E04FF02D0C01E04FF02B0C16F0D1
-:102E1C004007089714BF704F704FDDE902AB07975E
-:102E2C0000271C980137C117CDE90401DDE9042303
-:102E3C000AA93944099150465946CDF804C0FEF709
-:102E4C007FFA07980999835C504601F8013C594672
-:102E5C00DDE90423FEF774FA82468B465AEA0B022C
-:102E6C00DDF804C001D0162FDBD116F0080239466C
-:102E7C001DD01C9B082B02D0102B0ED01CE0DDE9C2
-:102E8C0002AB1DB95AEA0B0B13D004E05AEA0B0B38
-:102E9C0012D0BD4210DC7B1C0FE0DDE902AB5AEA1C
-:102EAC000B0B09D008982B4648B1582208E02B464A
-:102EBC0006E02A46012303E02B46002200E078229C
-:102ECC001CF1000B1D98C7EB030A18BF4FF0010B48
-:102EDC00BB42A8BF1F46C01B2AEAEA7ACBEB000014
-:102EEC000AB1022700E01746C71B16F0010027EABB
-:102EFC00E77701D07F4205E0F60603D5013504BF24
-:102F0C00BA4407463D46002D0BDD2068013D461CAA
-:102F1C004E453CBF202608F8006020680130206038
-:102F2C00F1E727EAE7703F1ABBF1000F08D02068E1
-:102F3C00451C4D4538BF08F800C0206801302060A2
-:102F4C008AB12068451C4D453CBF302508F800501F
-:102F5C002568681C02354D45206038BF08F80020F4
-:102F6C00226801322260BAF1000F0CD022680AF1FB
-:102F7C00FF3A501C48453CBF302008F8020022683C
-:102F8C0001322260EFE7DDE902AB5AEA0B0B10D1FC
-:102F9C007BB919460DE0236801395A1C4A4505D204
-:102FAC0001F1280568462A5C08F8032023680133E0
-:102FBC0023600029EFD15FB1236801375A1C4A45C1
-:102FCC003CBF202208F80320236801332360F2E77A
-:102FDC0011B0BDE8F08F00BFA73F0008B83F000854
-:102FEC001EF0040F0CBFEFF30880EFF30980FEF71F
-:102FFC00BFBF7047032970B505460C4606D98E082D
-:10300C003146FDF70BFCB6003544A41B14B9FDF793
-:10301C0013FC70BD00231846EA5C0133A34242EA5C
-:10302C000020F9D1FDF7F4FB70BD2DE9F041073319
-:10303C00DE08079B4FF0120808FB02320731069F8F
-:10304C00054602EBD1080024BC4209D0122000FB3B
-:10305C00048029463246FCF7F1FF01343544F3E78E
-:10306C00BDE8F0810623584301387FF4FDAF70476B
-:10307C0010B504460020FDF717FF20420CBF0020BE
-:10308C00012010BD10B504460020FDF70DFF20EA0D
-:10309C0004010020FDF7F8FE10BD10B50446002019
-:1030AC00FDF702FF40EA04010020FDF7EDFE10BD24
-:1030BC001FB501A8FEF765F80723029301A80323A7
-:1030CC000393FDF7BDFD6846FEF761F869460020E5
-:1030DC00FDF7FAFD05B05DF804FB08B5FEF7BCFC86
-:1030EC000020FEF733FC0020FEF730FC0020FEF73A
-:1030FC002DFCFEF795FCFDF73BFBFEF701FC70B5D4
-:10310C000646FEF7A9FC8020FEF720FCA82420BA76
-:10311C0090FAA0F0C0B2FEF719FC1125705DFEF715
-:10312C0015FC15F1FF35F9D20020FEF70FFC013C20
-:10313C0006F11206EBD12046FEF708FCFEF770FCF8
-:10314C0070BD38B500242546E0B2FEF713FEA04052
-:10315C0001340543042CEDB2F6D1284638BD08B530
-:10316C000D20FEF7DDFB0A20FEF7DAFB08BD10B5DB
-:10317C00441E14F8010F10B1FEF7D2FBF9E710BD95
-:10318C0008B5FFF7F4FFFFF7EAFF08BD1FB53023C2
-:10319C008DF8043078238DF80530072399000F2221
-:1031AC008A400240CA40092A01D8303202E00F2A74
-:1031BC0002D85732D2B200E0202201A9CC1A13F166
-:1031CC00FF336272EAD2002308468DF80E30FFF707
-:1031DC00CEFF04B010BD70B504460D464FF48050C0
-:1031EC0001211646FDF7A8FCFEF7DCFD0520FEF7D5
-:1031FC00C7FEA920FEF7C4FEC307FAD4FEF7A8FD4C
-:10320C00FEF7D0FD0320FEF7BBFEC5F30740FEF72B
-:10321C00B7FEC5F30720FEF7B3FEE8B2FEF7B0FE2B
-:10322C002644B44205D0A920FEF7AAFE04F8010BEF
-:10323C00F7E7FEF78DFD4FF480500021FDF77CFC85
-:10324C0070BD0000000000001F0000003B000000EB
-:10325C005A0000007800000097000000B500000044
-:10326C00D4000000F3000000110100003001000048
-:10327C004E0100000000000800400008008000081B
-:10328C0000C000080000010800000208000004084B
-:10329C0000000608933F00080008024008000000E8
-:1032AC00983F000800000240040000009B3F00080B
-:1032BC000008024040000000A23F0008000002404D
-:1032CC0002000000000002400100000000000800A5
-:1032DC001000180020002800300038007C00FE0090
-:1032EC00FF01C701C701C701C701C701C701C7015A
-:1032FC00C701C701C701C701C701FF01FE007C0060
-:10330C0038003C003E003E003800380038003800E1
-:10331C003800380038003800380038003800FE001B
-:10332C00FE00FE007C00FE00FF01C701C701C001CA
-:10333C00C001E000F00078003C001E000E000F0001
-:10334C000700FF01FF01FF017C00FE00FF01C70128
-:10335C00C701C001C001F8007800F800C001C0012D
-:10336C00C001C701C701FF01FE007C00E000E000C6
-:10337C00F000F000F800F800F800FC00EC00EE00A3
-:10338C00E600FF01FF01FF01E000E000E000E000CB
-:10339C00FF00FF00FF000700070007007F00FF0091
-:1033AC00FF01C701C001C001C701C701C701FF016F
-:1033BC00FE007C007C00FE00FF01C701C701070076
-:1033CC0007007700FF00FF01C701C701C701C70154
-:1033DC00C701FF01FE007C00FF01FF01FF01E000BF
-:1033EC00E0007000700070003800380038003800C1
-:1033FC001C001C001C001C001C001C007C00FE009F
-:10340C00FF01C701C701C701C701FE007C00FE0018
-:10341C00C701C701C701C701C701FF01FE007C003E
-:10342C007C00FE00FF01C701C701C701C701C7012E
-:10343C00FF01FE01DC01C001C001C701C701FF0192
-:10344C00FE007C0000000000000000007C00FE007C
-:10345C00FF01C701C701F001FC01CE01C701C70183
-:10346C00E701FF01DF01CE0107000700070007009D
-:10347C00E700F701FF01CF01C701C701C701C70171
-:10348C00C701C701CF01FF01F701E70000000000F1
-:10349C00000000007C00FE00FF01C701C70107000F
-:1034AC00070007000700C701C701FF01FE007C00F1
-:1034BC00C001C001C001C001CE01DF01FF01E70165
-:1034CC00C701C701C701C701C701C701E701FF0158
-:1034DC00DF01CE0100000000000000007C00FE00B7
-:1034EC00FF01C701C701C701FF01FF010700C701A9
-:1034FC00C701FF01FE007C00E000F000F80038007E
-:10350C00FE00FE00FE00380038003800380038009D
-:10351C0038003800380038003800380000000683C6
-:10352C000100000000000000000000000683010004
-:10353C000000000C000000000000068301000000E9
-:10354C00000C00000000D878369B79C0E3D90C8CB5
-:10355C0067DB3C1BF8FD7EBFFDE0F7FB1FC6EFFBF6
-:10356C007E1F98CD66B3CD60369B19C66C1866036A
-:10357C0098FD66B3FD60309B19C66F18660398FD05
-:10358C0066B3FD60309B19C36F186603980D66B364
-:10359C000D60369B19C360186603F8FD7EBFFDEC09
-:1035AC00F79B19C36F187E03D878369B79CCE399B7
-:1035BC00998167183C03180000000000000080018E
-:1035CC0000000000180000000000000000000000D7
-:1035DC0000001800000000000000000000000000C7
-:1035EC00000C000600000000600030000018000312
-:1035FC0000000000C0001800003080010000000036
-:10360C0080010C000060C0000000000000030600F8
-:10361C0000C06000000000000006030000803100C4
-:10362C0000000000008C010000001B0000000000E6
-:10363C0000D8000000000E00000000000070000028
-:10364C0000000E00000000000070000000001B00D5
-:10365C000000000000D800000080310000000000D5
-:10366C00008C010000C06000000000000006030098
-:10367C000060C00000000000000306000030800164
-:10368C000000000080010C00001800030000000086
-:10369C00C0001800000C00060000000060003000A4
-:1036AC00000000000000000000000000000000000E
-:1036BC0000000000000000000000000000000000FE
-:1036CC0000000000000000000000000000000000EE
-:1036DC0000000000000000000000000000000000DE
-:1036EC0000000000000000000000000000000000CE
-:1036FC0000000000000000000000000000000000BE
-:10370C000000000080FFFF0100000000000000002E
-:10371C00FEFFFF7F00000000000000E07F0000FEC5
-:10372C0007000000000000FE010000807F00000088
-:10373C000000801F00000000F80100000000F001F4
-:10374C0000000000800F000000007C000000000062
-:10375C00003E000000000F000000000000F0000020
-:10376C00008003000000000000C0010000E0000029
-:10377C0000000000000007000070000000000000C6
-:10378C0000000E00001800000000000000001800EF
-:10379C00000C0000000000000000300000060000DB
-:1037AC0000000000000060000003000000000000AA
-:1037BC000000C0008001000000000000000080013B
-:1037CC00C0000000000000000000000360000000CA
-:1037DC0000000000000000063000000000000000A7
-:1037EC000000000C100000000000000000000008A9
-:1037FC000000000000600000030018000000000042
-:10380C000000006000000300180000000000000031
-:10381C0000600000030018000000000000000060C1
-:10382C000000030018000000000000000060000011
-:10383C0003001800000000E003001F60F800C3073D
-:10384C0018C0070000F80FC07F60FE03F31F18F0CC
-:10385C001F00000C1860C06003061B3018183000E5
-:10386C000006303080E1010C0F60180C6000000382
-:10387C00601800E3001807C01806C0008001400C57
-:10388C00006200100380180380008001C00C0066E9
-:10389C0000300380190380018001C0FCFF670030F9
-:1038AC00038019FFFF018001C0FCFF63003003801F
-:1038BC0019FFFF008001C00C006000300380190369
-:1038CC0000008001C00C0060003003801903000070
-:1038DC008001400C006200100380180380008003FC
-:1038EC00601800C3001806C01806C00080073030EE
-:1038FC008081010C0C60180C6000800D1860C000F9
-:10390C00030618303818300080F90FC07F00FE0312
-:10391C00F01F70F01F0080E103001F00F800C007CB
-:10392C0060C00700800100000000000000000000E3
-:10393C0000008001000000000000000000000000FA
-:10394C008001000000000000000000000000800169
-:10395C0000000000000000000000000080010000DA
-:10396C00000000000000000000004E6F20485720AF
-:10397C0056657273696F6E20696E204F5450004209
-:10398C0042322E30007573622077616B6575702042
-:10399C00737570706F7274656400456E74657269CE
-:1039AC006E67207374616E64627900206973206F96
-:1039BC007574736964652073797374656D20666CB6
-:1039CC006173680048415244204641554C540044B0
-:1039DC006573636C656E20000A4669726D6C656E6A
-:1039EC0020000A5873756D20000A496E76616C6967
-:1039FC0064206669726D77617265206465736372A9
-:103A0C00697074696F6E2100436865636B73756DC3
-:103A1C006D696E67206669726D776172652075706D
-:103A2C006461746500496E76616C696420666972C4
-:103A3C006D776172652043524320696E2053504963
-:103A4C0020666C617368210065726173655F6F6CD1
-:103A5C00645F6669726D77617265004F6C642057A4
-:103A6C006F726C64206669726D7761726520626139
-:103A7C007365006661696C656420746F20657261A2
-:103A8C00736520736563746F722000777269746557
-:103A9C005F6E65775F6669726D77617265006661EE
-:103AAC00696C656420746F20777269746520616439
-:103ABC0064726573732000576527726520646561B5
-:103ACC006400436865636B73756D6D696E67200088
-:103ADC00206279746573004E657720576F726C6441
-:103AEC00206669726D776172652073797374656D88
-:103AFC005F666C6173685F62617365004F6C642014
-:103B0C00576F726C64206669726D77617265207391
-:103B1C00797374656D5F666C6173685F6261736500
-:103B2C0000436865636B73756D202D2077616E742F
-:103B3C006564200020676F7420004F757220696ED9
-:103B4C007465726E616C20666C61736820636F6E55
-:103B5C0074656E74732061726520626164202863E1
-:103B6C006865636B73756D206661696C656429218A
-:103B7C002054686973206973207265616C6C7920BC
-:103B8C006261642100FFFFFFFFFFFFFFFFFFFFFFEC
-:103B9C00FF01000000000000000000008001000098
-:103BAC000000000000000000800100000000000088
-:103BBC000000000080010000000000000000000078
-:103BCC0080010000000000000000000080010000E7
-:103BDC00000000000000000080FFFFFFFFFFFFFF60
-:103BEC00FFFFFFFFFF5341442057415443483A2005
-:103BFC000052657365742052656769737465722031
-:103C0C000042726F776E206F7574207265736574E5
-:103C1C00005374617274696E67204C5345206F7346
-:103C2C0063696C6C61746F72004C5345206F7363E5
-:103C3C00696C6C61746F7220646964206E6F74209F
-:103C4C007374617274005553422077616B657570A3
-:103C5C00006C656176696E67207374616E6462795D
-:103C6C0000205F5F5F5F5F5F202020205F5F0D0A99
-:103C7C002F5F20205F5F2F205F5F2F202F0D0A20EA
-:103C8C002F202F2020202F5F20205F5F2F0D0A2F49
-:103C9C005F2F20202020202F5F2F0D0A00426F6FF6
-:103CAC00746C6F616465722076657273696F6E3ABD
-:103CBC0020004C617374206669726D7761726520A7
-:103CCC00626F6F742077617320737461626C653BF3
-:103CDC0020636C65617220737472696B6573005339
-:103CEC007475636B20627574746F6E20726567698E
-:103CFC007374657220697320696E76616C69642CCB
-:103D0C0020636C656172696E672E00427574746F06
-:103D1C006E2069642000697320737475636B2100D5
-:103D2C00427574746F6E207761732070757368655B
-:103D3C0064206F6E20626F6F742E20427574746FE6
-:103D4C006E20636F756E7465723A2000426F6F74EB
-:103D5C0020626974733A2000486F6C6420646F773A
-:103D6C006E205550202B204241434B20666F722011
-:103D7C003520736563732E20746F20666F726365D4
-:103D8C002D626F6F7420505246004669726D7761D8
-:103D9C0072652069732065726173656400426F6F90
-:103DAC0074696E67206E6F726D616C6C790057610F
-:103DBC00746368646F672063617573656420612048
-:103DCC00726573657400536F6674776172652066F3
-:103DDC0061696C757265206361757365642061201F
-:103DEC00726573657400426F6F74206661696C65EF
-:103DFC00642C20737472696B65203300426F6F748E
-:103E0C00206661696C65642C20737472696B652023
-:103E1C003200426F6F74206661696C65642C20738C
-:103E2C007472696B652031004C6F6164696E672038
-:103E3C007265636F76657279206669726D776172EF
-:103E4C0065004661696C656420746F206C6F6164F9
-:103E5C00207265636F76657279206669726D776121
-:103E6C0072652C20737472696B65206F6E652E20E1
-:103E7C0054727920616761696E2E004661696C65C8
-:103E8C006420746F206C6F6164207265636F76655B
-:103E9C007279206669726D776172652C2073747209
-:103EAC00696B652074776F2E20547279206167617D
-:103EBC00696E2E004661696C656420746F206C6FAE
-:103ECC006164207265636F76657279206669726DC4
-:103EDC00776172652C20737472696B6520746872DB
-:103EEC0065652E20534144205741544348004F757B
-:103EFC00722070726576696F7573206669726D7762
-:103F0C0061726520757064617465206661696C65A9
-:103F1C00642C2061626F7274696E672075706461C5
-:103F2C0074652E004E6577206669726D77617265D7
-:103F3C0020697320617661696C61626C6521004255
-:103F4C006F6F74696E67206669726D776172652038
-:103F5C0040200072657475726E696E6720746F20F4
-:103F6C007374616E64627900466F7263652D626F63
-:103F7C006F74696E67207265636F76657279206DF8
-:103F8C006F64652E2E2E004261636B0055700053DA
-:103F9C00656C65637400446F776E00303132333476
-:103FAC003536373839414243444546003031323397
-:103FBC0034353637383961626364656600286E754E
-:103FCC006C6C2900000000000102030401020304D0
-:043FDC0006070809C3
-:103FE000FFFFFFFF00A000000202000000C004016C
-:103FF00000000000000000021000000007000000A8
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/boot_ev2_4@1447134832.bin b/bin/boot/boot_ev2_4@1447134832.bin
deleted file mode 100755
index c6f9844f43..0000000000
Binary files a/bin/boot/boot_ev2_4@1447134832.bin and /dev/null differ
diff --git a/bin/boot/boot_ev2_4@1447134832.hex b/bin/boot/boot_ev2_4@1447134832.hex
deleted file mode 100644
index 5b291e4887..0000000000
--- a/bin/boot/boot_ev2_4@1447134832.hex
+++ /dev/null
@@ -1,1053 +0,0 @@
-:020000040800F2
-:1000000048200120392C0008992F0008992F00085A
-:10001000992F0008992F0008992F00080000000070
-:10002000000000000000000000000000992F000800
-:10003000992F000800000000992F0008992F000850
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F098FD64
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:0801600085FD05B05DF804FB0C
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:0801880071FD05B05DF804FBF8
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F042FCDDF820C050
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F0E3FB089B9CE0BA4293
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00453F00084B45F7DBEDE70D99079107983F
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D014C3F000855
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C00BFF34F8F044A054BD16801F4E0610B43E0
-:10191C00D360BFF34F8FFEE700ED00E00400FA0543
-:10192C0010B5044608484021FFF784FC0028F9D084
-:10193C0005482146FFF77AFC03484021FFF77AFC63
-:10194C000028F9D010BD00BF00480040014608B582
-:10195C000448FFF757FC03480221FFF755FC002809
-:10196C00F9D008BD0038004000B9074803680133BE
-:10197C0008D04368013305D0C069044BC31A5842E0
-:10198C005841704700207047004000086F57654E63
-:10199C00074B1A69C2F306427F2A07D11869C0F3B4
-:1019AC000C00B0F1FF0358425841704700207047BB
-:1019BC000028004000F13F4000F57E00800A082816
-:1019CC000FD8084A52F820305BB1013B42F8203066
-:1019DC003BB9012101FA00F0034B1A6B22EA00001B
-:1019EC0018637047200000200038024000F13F408F
-:1019FC0000F57E00800A08280DD8074A52F82030DE
-:101A0C00591C42F8201033B9012101FA00F0034BA4
-:101A1C001A6B1043186370472000002000380240F6
-:101A2C0010B50C4C2046FFF7E1FF072001F0F0FA4F
-:101A3C004FF4805100222046FFF776FB042001F082
-:101A4C00E7FA2046FFF7B6FF4FF480400021FFF77E
-:101A5C0067F810BD0004024010B50B4C01214FF487
-:101A6C008040FFF75DF82046FFF7C0FF20464FF49B
-:101A7C0080510122FFF758FB072001F0C9FA2046DC
-:101A8C00FFF798FF10BD00BF00040240F0B55E25C3
-:101A9C006843204BB0FBF1F51A68ADF6DC3D95427E
-:101AAC0034D002AC00214FF43D6220461D60FEF79D
-:101ABC00CEFA1B238DE81800174810214022692309
-:101ACC0001F089FA08238DE81800144860231821C6
-:101ADC006A2201F080FA0DF2FA760DF28E73002272
-:101AEC00AA420DD002F11900C0B2C108012700F0C2
-:101AFC00070007FA00F05F5C013238435854EFE7F7
-:101B0C001233B342EBD1204601F0CFFA0DF6DC3D97
-:101B1C00F0BD00BF00000020943200080E34000815
-:101B2C002DE9F043ADF6DC3D02AC00214FF43D62F3
-:101B3C0080462046FEF78BFA2C238DE818002022D5
-:101B4C00284818215C2301F046FA1C2215460F2761
-:101B5C00974007EA0807D740234B242101FB07379E
-:101B6C000DF50366002117F801C00023082B07D0E0
-:101B7C000120984010EA0C0F0CBF0020012003E05C
-:101B8C007818407800F0010078B15819C0B24FEACB
-:101B9C00D00E4FF0010900F0070009FA00F016F81A
-:101BAC000E9040EA090006F80E000133092BDDD136
-:101BBC000231242906F11206D5D10B35742DA2F170
-:101BCC000402C4D10E238DE81800102190226D233D
-:101BDC00064801F000FA204601F067FA0DF6DC3DEC
-:101BEC00BDE8F0835D3900086E34000899380008B0
-:101BFC0010B5ADF6D83D02AC204600214FF43D6245
-:101C0C00FEF725FA1B238DE81800102140226923CA
-:101C1C00044801F0E0F9204601F047FA0DF6D83DF2
-:101C2C0010BD00BF943200082DE9F74F434E444FCE
-:101C3C0001214FF48040FEF773FF3046FFF7D6FECC
-:101C4C003846404CFFF7D2FE30460D210522FFF7F7
-:101C5C0070FA052230460F21FFF76BFA3046214609
-:101C6C000125FFF70EFA2023384621462360257103
-:101C7C00A5714FF0000A01934FF4805BFFF701FA56
-:101C8C00304621464FF002084FF48049257184F804
-:101C9C0006A0C4F800B0FFF7F4F93046214684F8EA
-:101CAC000480C4F80080FFF7ECF921462571A5717A
-:101CBC00C4F80090244C3046FFF7E3F92046FFF7B8
-:101CCC0049F920462149FFF76FFA20462946FFF7CC
-:101CDC008AFA019B384619465246FFF725FA2A46DE
-:101CEC0030464946FFF720FA40462946FEF718FFD2
-:101CFC00A4F5505480232380F92323854FF4F0421C
-:101D0C004FF6FF13E3623046A28329462364424612
-:101D1C00A4F820B0FFF70DFA29462046A582FEF75D
-:101D2C002FFD3846FFF746FE3046FFF743FE484688
-:101D3C005146FEF7F5FE03B0BDE8F08F00040240FB
-:101D4C000008024004000020003800400C00002075
-:101D5C0010B5074C2046FFF749FE20461021FFF72F
-:101D6C00DFF92046FFF726FE012001F051F910BDE6
-:101D7C000000024038B50A4B0C2404FB00346068A8
-:101D8C00FFF734FE21896068FFF7C4F905466068E7
-:101D9C00FFF710FED5F1010038BF002038BD00BFA1
-:101DAC004C32000810B5064C2046FFF71FFE2046AB
-:101DBC001021FFF7B7F92046FFF7FCFD10BD00BF5F
-:101DCC0000000240F0B587B0FFF7E2FD002841D1DA
-:101DDC000320FFF769F807460420FFF765F8374B37
-:101DEC000A241A68C2F30545C2F30626C2F302138D
-:101DFC0002F00F0204FB0322330906F00F0604FB6A
-:101E0C0003662B0905F00F0504FB03533C2505FB6A
-:101E1C00036305FB0323191A44BF01F5A83101F52F
-:101E2C00C07107EB91210320FFF72EF803A8FFF7F1
-:101E3C00A8F903A8FEF704FF01A8FFF7A8F901A968
-:101E4C000020FEF741FF02A8FFF7A7F9002002A926
-:101E5C00FEF7A4FF0A2442F2107501F048F910B9FC
-:101E6C00013DFAD107E0164D01F041F908B1013DF1
-:101E7C00FAD1013CEFD10020FEF7A2FD114C00215C
-:101E8C004FF20400FFF72CF84FF43C50FFF754F8D6
-:101E9C002368012043F004032360FEF791FD0A48F8
-:101EAC0001F044F9236843F002032360074B1A69DD
-:101EBC0042F004021A6130BF07B0F0BD00280040A8
-:101ECC00A086010000700040AE36000800ED00E076
-:101EDC00B0F1006F10B504460BD20D4801F01DF99E
-:101EEC00204601F029F90B4801F020F94FF0FF30A2
-:101EFC0010BD094A002352F8041FA14202D85168B0
-:101F0C008C4202D30133072BF5D1184610BD00BF0C
-:101F1C00C2370008BF3600082832000808B502484E
-:101F2C0001F004F9FFF7ECFCD836000810B50446B4
-:101F3C000A480221FFF768F90028F9D00748214622
-:101F4C00FFF760F905480121FFF75EF90028F9D089
-:101F5C000248FFF754F9C0B210BD00BF0030014079
-:101F6C002DE9F04F87B00121814600AF0020FFF72B
-:101F7C008DFD042001F067F807F10C0049460C2296
-:101F8C0001F0FFF8FD683C690C2DD7F814B013D0A4
-:101F9C00994801F0C2F8284601F0CEF8974801F0B4
-:101FAC00BCF8204601F0C8F8954801F0B6F8584640
-:101FBC0001F0C2F8934833E0934801F0B7F84FF4BE
-:101FCC0080500121FEF7A0FD09F10C09EA46FEF74D
-:101FDC0019FCA0B06E462546C846802D0CD941464A
-:101FEC003046802201F0CDF830462021FEF716FC59
-:101FFC00803D08F18008F0E725B1304641462A467D
-:10200C0001F0BFF82946304600F0CAFF0021804697
-:10201C004FF48050FEF778FDD845D54604D07B4868
-:10202C0001F084F80120E3E088B06846494620229C
-:10203C0001F0A7F86846FFF797FC78607448D5461E
-:10204C0001F074F87B682BB9724801F06FF804F555
-:10205C00404600E02646002E3BD06F48FFF738FF85
-:10206C0005466E483044FFF733FF002D824630DBC7
-:10207C0000282EDB431B01334FEA430B002059464B
-:10208C00FFF704FDFEF7EAFB654B002603EB450367
-:10209C003B6055451BDCF320FEF7F6FB3B6800214B
-:1020AC0033F81600FEF710FC082806F1010608D0DC
-:1020BC005C4801F032F8284601F03EF801F025F8B2
-:1020CC0005E030465946FFF7E1FC0135E1E7FEF744
-:1020DC00D3FB554801F02AF87B680BB14E4B00E05E
-:1020EC00524B7B6063083B600025A5423CD2661BCB
-:1020FC00B6F5803F28BF4FF480362EB14C4805EB27
-:10210C000901324601F03DF8D7F804A0FEF7A6FB12
-:10211C00F320FEF7B9FBAA444FF0000BB34519D0DE
-:10212C0043490BEB0A0011F80B10FEF705FC0828CD
-:10213C000DD0404800F0F1FF504600F0FDFF00F0DC
-:10214C00E4FFFEF799FB3C4800F0F0FF0CE00BF1CC
-:10215C00010BE3E7FEF790FB3B68214603EB5500D0
-:10216C00FFF794FC5D44C0E7344800F0D6FF2046EE
-:10217C0000F0E2FF324800F0D9FF0020FFF7F4FB3B
-:10218C0020B1304800F0D2FF234D03E02E4800F080
-:10219C00CDFF264D4FF480500121A608FEF7B4FC6C
-:1021AC00FEF730FB31462846FEF738FB04F00301FE
-:1021BC0005EB860000F0F4FE002104464FF480503D
-:1021CC00FEF7A2FC214800F0A8FF404600F0B4FF47
-:1021DC001F4800F0A2FF204600F0AEFF00F095FF74
-:1021EC00444504D01B4800F0A1FF022000E0002071
-:1021FC001C37BD46BDE8F08FE3360008EC3600080E
-:10220C00F6360008FD3600081C3700083937000880
-:10221C005C3700086F37000800400008FF3F0008DB
-:10222C0084320008873700089F3700080000010837
-:10223C0044000020B2370008CB370008D63700081E
-:10224C00E4370008EB370008103800083538000870
-:10225C00483800084E38000870B54FF48050012102
-:10226C00FEF76AFCFFF79EFD0520164CFFF75EFE9D
-:10227C00002C04F1FF341FDCFFF76AFDFFF792FD21
-:10228C009F20FFF753FEA920FFF750FE0546A9201B
-:10229C00FFF74CFE0646A920FFF748FE360204461F
-:1022AC0046EA0545FFF754FD4FF480500021FEF738
-:1022BC0043FC45EA040070BDA920FFF737FEC307B5
-:1022CC00D6D4D9E70090D00308B50446114800F0E5
-:1022DC0024FF204600F030FF00F017FF2046FFF7E8
-:1022EC001FFC00F004FF0C4B20F0040018701D467E
-:1022FC0000F0FDFE2B7800F0FB00834201D10B2493
-:10230C0001E000F0C0FE013CF2D04FF47A7000F016
-:10231C007FFEF8E76D3B00084400012080B5464B7A
-:10232C004FF4C06290B01A6001214FF08050FEF75C
-:10233C00F7FB0120FEF73EFB4048FFF757FB4FF43D
-:10234C0080200121FEF7ECFB3C480A210722FEF716
-:10235C00F0FE072239480B21FEF7EBFE10AF4FF4CD
-:10236C00806347F8383D00244FF0010802253348BC
-:10237C0039468DF80E408DF80F808DF80C508DF885
-:10238C000D50FEF77EFE4FF400632C483946029345
-:10239C008DF80C5004AEFEF774FE4FF461330493C9
-:1023AC0027480C233146ADF81A30ADF81440ADF87F
-:1023BC001640ADF81840ADF81C40FEF7F9FD41464B
-:1023CC001F48FEF727FF1D48FFF7F4FA1D4800F0E1
-:1023DC00A4FE1D4B586F00F0AFFE00F096FE792066
-:1023EC00FEF7F2FB404502D1184800F09FFE012099
-:1023FC0000F014FE10B90121FEF746FD4120FEF756
-:10240C00E3FB58BB124800F091FE0120FEF70AFBDB
-:10241C0047F230544120FEF7D7FBF8B94FF47A70ED
-:10242C0000F0F6FD013CF5D10A4800F07FFEFFF705
-:10243C00FBFB094837E100BF003C024000080240AA
-:10244C0000480040793B000800380240893B0008F6
-:10245C00993B0008B13B0008114550FE4FF48070C9
-:10246C00FEF734FB0120FEF749FBFEF70BFC0020C6
-:10247C00FEF7A6FA01214FF48040FEF75DFBBB4846
-:10248C00FFF7B4FA3046FEF73CFE00240125B748AE
-:10249C0031468DF815408DF816408DF8174004958F
-:1024AC008DF81450FEF7EDFD2246B0482946FEF794
-:1024BC003BFEAE48FFF77EFAAD4C04F1300954F800
-:1024CC00040CFFF793FA3046FEF71BFE236854F812
-:1024DC00040C4FF000083146022504938DF814804B
-:1024EC008DF815508DF817800C34FEF7CAFD54F892
-:1024FC00100CFFF75FFA4C45E1D14FF48040414698
-:10250C00FEF71AFB4FF4807000F088FD002800F0F5
-:10251C00CC804FF4807000F08BFDFFF753FC954896
-:10252C0000F004FE0220FEF7BFFC9349884202D063
-:10253C000220FEF7A9FC914800F0EFFD0220FEF707
-:10254C00B3FC00F0F9FD00F0E0FD4FF4804000F02A
-:10255C0065FD90B18A4800F0E9FD4FF4804000F031
-:10256C0067FD082000F064FD102000F061FD2020C4
-:10257C0000F05EFD402000F05BFDFFF755FBFFF720
-:10258C0037FB01214FF48050FEF7D6FA7748FFF75E
-:10259C002DFA01200146FEF7B7FA05210A467348C9
-:1025AC00FEF7C7FD714806210522FEF7C2FD052284
-:1025BC006E480721FEF7BDFD00240225C0236B48A1
-:1025CC0039468DF80C508DF80D5002938DF80E4055
-:1025DC008DF80F40FEF755FD2023644839468DF8E1
-:1025EC000F5002930125FEF74CFD102339465F482E
-:1025FC0002938DF80C508DF80F50FEF742FD614898
-:10260C00FEF7A8FC4FF48273ADF812304FF4007350
-:10261C00ADF81A305B4807233146ADF82030ADF8E1
-:10262C001040ADF81440ADF81640ADF81840ADF8B8
-:10263C001C40ADF81E40FEF7B7FD29465148FEF789
-:10264C00D2FD4A48FFF7B6F9FFF7ACFBAB20FFF71A
-:10265C006DFCFFF77DFB642000F0DAFC21464FF4A3
-:10266C008050FEF769FAFFF7F7FD2846FEF71CFCD1
-:10267C0025460490E8B2FFF77DFB98BB70550135F9
-:10268C00042DF7D1049D3DB13F4800F046FD28468E
-:10269C0000F052FD00F039FD01202946FEF7F4FB55
-:1026AC00002C3DD03948FFF70FFE2846FEF78EF977
-:1026BC00012814D12846FEF793F94FF40060FEF779
-:1026CC002DFC18B1324800F031FDB9E0314C00F06E
-:1026DC000EFD002800F00481013CF8D1B0E000F0C0
-:1026EC00BDFC1CE7735D042B0ADD2B4800F01EFDBE
-:1026FC00049800F021FD01200021FEF7C5FB0FE03E
-:10270C000133DBB2042B7355B9DD244800F005FD11
-:10271C00284600F011FD224800F008FD0124AEE728
-:10272C00FFF79AFD1F4B0344012B01D91E48BAE752
-:10273C001E4800F0F2FC0020FEF7B6FB00F0FCFC9B
-:10274C0000F0E3FC802000F069FC18B1802000F060
-:10275C006FFC73E04FF4003000F060FC044638B3BB
-:10276C004FF4003000F064FC04E100BF00000240B4
-:10277C0054320008E93B000870864156253C00089D
-:10278C003A3C000800300140A83C0008014550FECE
-:10279C00CE3B0008A0860100673C0008933C000873
-:1027AC009E3C0008EA44DFFF024550FED43C000882
-:1027BC000120FFF7DFFAD8B12046FFF7DBFAB8B1FA
-:1027CC00B74800F0B3FC41F288340120FFF7D2FA8D
-:1027DC00002800F08B800020FFF7CCFA002800F0D6
-:1027EC0085804FF47A7000F013FC013CEDD1C1E010
-:1027FC000020FFF7B9F808B1AA4B00E0AA4B0CCBAC
-:10280C00013301D0013271D1A84800F08FFCB1E046
-:10281C00A74800F08BFC082000F00AFC102000F008
-:10282C0007FC202000F004FC402000F001FC0024F8
-:10283C00042000F0FDFB002C40F008819D4832E79D
-:10284C00FFF7A6F8002847D0002001A99A4DFEF703
-:10285C0083FA344600203946FEF7E2FA0FCD0FC456
-:10286C000FCD0FC495E80F0084E80F009DF80920E8
-:10287C0010A901EB82039DF80BE053F8343C40F2B5
-:10288C006D1101FB0E3303EB9E030EF1010E1EF0D6
-:10289C00030F02D1022A88BF01339DF80A409DF82C
-:1028AC000410013C2344182404FB03149DF8051068
-:1028BC003C2202FB04149DF80610032002FB0414B6
-:1028CC00FEF7F2FA01190320FEF7DEFA04200021CC
-:1028DC00FEF7DAFA00F0C2FB784800F027FC1EE69F
-:1028EC00774800F023FCFFF76DFAF5E77D20FEF743
-:1028FC006BF970B94FF4007000F090FB48B9714857
-:10290C0000F014FC082000F093FB102000F090FB6A
-:10291C0085E07D20FEF758F910B16B4800F006FCFD
-:10292C004FF4007000F07AFB10B1684800F0FEFB29
-:10293C004FF4007000F07CFB102000F06FFB48B1EE
-:10294C00634800F0F3FB082000F072FB102000F04D
-:10295C006FFB12E0082000F061FB20B15D4800F035
-:10296C00E5FB102003E05C4800F0E0FB082000F0E1
-:10297C006AFB54E0594800F0D9FB594800F0D6FBEB
-:10298C004FF40010FFF7ECFA10B1022828D809E038
-:10299C00202000F04DFB402000F04AFB802000F08E
-:1029AC0052FB1DE0082000F04EFB102000F04BFB0A
-:1029BC00202000F033FB20B94A4800F0B7FB202060
-:1029CC0009E0402000F02AFB00287FF421AF4648A4
-:1029DC0000F0ACFB402000F036FB4FF400701AE026
-:1029EC00012425E7414800F0A1FB082000F020FB62
-:1029FC00102000F01DFB202000F01AFB402000F0FE
-:102A0C0017FB2046FFF7ACFA022840F0F4800820B0
-:102A1C0000F019FB102000F016FB00F034FB022034
-:102A2C0000F0FCFA90B1042000F0F8FA04460028FB
-:102A3C00D8D02F4800F07AFB042000F0F9FA0220DD
-:102A4C0000F0F6FA4FF4004000F0F2FA4FF40050A8
-:102A5C0000F0E4FA04464FF4805000F0DFFA400036
-:102A6C0040EA84044FF4006000F0D8FAE4B220434A
-:102A7C00431C03F0FF03013B4FF40060062B5CD8B2
-:102A8C00DFE803F03C383C043C383C0000F0D0FA62
-:102A9C004FF4805000F0CCFA4FF400502EE000BF01
-:102AAC00E03C00080040000800000108123D00084E
-:102ABC003C3E0008034550FEFC310008D93B0008A1
-:102ACC00DB3E0008253D0008363D00084E3D000861
-:102ADC006E3D0008843D00089A3D0008F03E000859
-:102AEC00B03D0008CA3D0008033E0008AC3E00089B
-:102AFC00763E000800F09CFA4FF4805000F0A3FAE8
-:102B0C0045F25550FDF734FF0420FDF737FF40F632
-:102B1C00FF70FDF739FF0020FDF72AFF4FF48050BE
-:102B2C000121FDF78FFEFDF73DFFFDF733FF002080
-:102B3C00FEF71AFF68B9354B0CE000F079FA4FF448
-:102B4C00805000F075FA4FF4005000F071FA3048E4
-:102B5C00A9E5304B5D6830481E6800F0DEFA284667
-:102B6C0000F0EAFA00F0D1FA00F0CFFA00239A0054
-:102B7C0002F16042013302F561424FF0FF31082B44
-:102B8C00C2F88010C2F88011F1D1244B00241C63D0
-:102B9C005C639C631C645C64FDF72AFF2048012184
-:102BAC00FDF7D6FF21461E48FDF7D2FFF12001218B
-:102BBC00FDF7DAFF2146F120FDF7D6FF0120014693
-:102BCC00FDF7DEFF21460120FDF7DAFF1548012154
-:102BDC00FDF7E2FF21461348FDF7DEFF1248012105
-:102BEC00FDF7E6FF10482146FDF7E2FF63B64FF014
-:102BFC00FF3EB5462847042000F01AFA022000F0E8
-:102C0C0017FA4FF4004000F01EFA1FE7000001080D
-:102C1C00044550FE00400008C73E00080038024042
-:102C2C0000106022FFC9FE36335907000748084AD6
-:102C3C0008B50849121AFDF701FA0748074A00219E
-:102C4C00121AFDF704FAFFF769FB00BF0000002021
-:102C5C00200000205C3F00082000002048000120DC
-:102C6C002DE9F04FDDE909AB0E469C4603783B4954
-:102C7C000746C95C01300D07F8D42B2B05D02D2B42
-:102C8C0004D107464FF0FF3301E0074601233978A2
-:102C9C0030290ED17978782905D132F0100103D181
-:102CAC000237102207E00AB1082A04D101370822A2
-:102CBC0001E002B90A2200200021B84617F8015B96
-:102CCC00A5F13004E4B2092C0DD9A5F14104192C5D
-:102CDC0002D8A5F1370405E0A5F16104192C30D810
-:102CEC00A5F15704E4B294422BDA4FEAE27900FBE7
-:102CFC0009F502FB0155A0FB0201E4B229440019BD
-:102D0C004FF0000541EB0501BCF1000FD5D0012BB4
-:102D1C0006D182457BEB0104CFDA50465946CCE70D
-:102D2C005C1CCAD1DDE90B89444261EB4105444589
-:102D3C0075EB0909C1DADDE90B01404261EB410198
-:102D4C00BBE70EB1C6F80080DD1700FB05F203FBF4
-:102D5C000122A0FB03011144BDE8F08F4C120008C6
-:102D6C002DE9F04F91B01F9E0C46310691468046DE
-:102D7C00DDE91A231E9D04D5CDE902234FF0000C8A
-:102D8C001BE0002A73F100071046194602DA504284
-:102D9C0063EB4301002A73F1000ACDE9020107DB62
-:102DAC00B70708D416F0040C07D04FF0200C04E041
-:102DBC004FF02D0C01E04FF02B0C16F0400708974C
-:102DCC0014BF704F704FDDE902AB079700271C98BA
-:102DDC000137C117CDE90401DDE904230AA93944FF
-:102DEC00099150465946CDF804C0FEF7A9FA079848
-:102DFC000999835C504601F8013C5946DDE90423EE
-:102E0C00FEF79EFA82468B465AEA0B02DDF804C0A6
-:102E1C0001D0162FDBD116F0080239461DD01C9BB1
-:102E2C00082B02D0102B0ED01CE0DDE902AB1DB933
-:102E3C005AEA0B0B13D004E05AEA0B0B12D0BD422A
-:102E4C0010DC7B1C0FE0DDE902AB5AEA0B0B09D05E
-:102E5C0008982B4648B1582208E02B4606E02A4633
-:102E6C00012303E02B46002200E078221CF1000B2A
-:102E7C001D98C7EB030A18BF4FF0010BBB42A8BF4C
-:102E8C001F46C01B2AEAEA7ACBEB00000AB10227E4
-:102E9C0000E01746C71B16F0010027EAE77701D0C0
-:102EAC007F4205E0F60603D5013504BFBA44074658
-:102EBC003D46002D0BDD2068013D461C4E453CBFB8
-:102ECC00202608F80060206801302060F1E727EA2E
-:102EDC00E7703F1ABBF1000F08D02068451C4D4528
-:102EEC0038BF08F800C02068013020608AB1206823
-:102EFC00451C4D453CBF302508F800502568681C22
-:102F0C0002354D45206038BF08F800202268013298
-:102F1C002260BAF1000F0CD022680AF1FF3A501C63
-:102F2C0048453CBF302008F802002268013222607C
-:102F3C00EFE7DDE902AB5AEA0B0B10D17BB919466E
-:102F4C000DE0236801395A1C4A4505D201F12805C8
-:102F5C0068462A5C08F803202368013323600029A3
-:102F6C00EFD15FB1236801375A1C4A453CBF202280
-:102F7C0008F80320236801332360F2E711B0BDE8A1
-:102F8C00F08F00BF233F0008343F00081EF0040FF1
-:102F9C000CBFEFF30880EFF30980FEF7BFBF70475B
-:102FAC00032970B505460C4606D98E083146FDF747
-:102FBC0035FCB6003544A41B14B9FDF73DFC70BDBF
-:102FCC0000231846EA5C0133A34242EA0020F9D1FF
-:102FDC00FDF71EFC70BD2DE9F0410733DE08079BA1
-:102FEC004FF0120808FB02320731069F054602EB30
-:102FFC00D1080024BC4209D0122000FB04802946D1
-:10300C003246FDF71BF801343544F3E7BDE8F08197
-:10301C000623584301387FF4FDAF704710B50446C2
-:10302C000020FDF741FF20420CBF0020012010BD05
-:10303C0010B504460020FDF737FF20EA04010020FC
-:10304C00FDF722FF10BD10B504460020FDF72CFF44
-:10305C0040EA04010020FDF717FF10BD1FB501A8C1
-:10306C00FEF78FF80723029301A803230393FDF7C0
-:10307C00E7FD6846FEF78BF869460020FDF724FE55
-:10308C0005B05DF804FB08B5FEF7E6FC0020FEF782
-:10309C005DFC0020FEF75AFC0020FEF757FCFEF703
-:1030AC00BFFCFDF765FBFEF72BFC70B50646FEF783
-:1030BC00D3FC8020FEF74AFCA82420BA90FAA0F09A
-:1030CC00C0B2FEF743FC1125705DFEF73FFC15F115
-:1030DC00FF35F9D20020FEF739FC013C06F112064F
-:1030EC00EBD12046FEF732FCFEF79AFC70BD38B5EA
-:1030FC0000242546E0B2FEF73DFEA0400134054316
-:10310C00042CEDB2F6D1284638BD08B50D20FEF7DB
-:10311C0007FC0A20FEF704FC08BD10B5441E14F889
-:10312C00010F10B1FEF7FCFBF9E710BD08B5FFF776
-:10313C00F4FFFFF7EAFF08BD1FB530238DF804300C
-:10314C0078238DF80530072399000F228A4002401E
-:10315C00CA40092A01D8303202E00F2A02D857326D
-:10316C00D2B200E0202201A9CC1A13F1FF33627213
-:10317C00EAD2002308468DF80E30FFF7CEFF04B0DC
-:10318C0010BD70B504460D464FF480500121164613
-:10319C00FDF7D2FCFEF706FE0520FEF7C7FEA920C0
-:1031AC00FEF7C4FEC307FAD4FEF7D2FDFEF7FAFD14
-:1031BC000320FEF7BBFEC5F30740FEF7B7FEC5F3D1
-:1031CC000720FEF7B3FEE8B2FEF7B0FE2644B44289
-:1031DC0005D0A920FEF7AAFE04F8010BF7E7FEF7CD
-:1031EC00B7FD4FF480500021FDF7A6FC70BD000028
-:1031FC00000000001F0000003B0000005A0000000F
-:10320C007800000097000000B5000000D40000001A
-:10321C00F300000011010000300100004E0100001D
-:10322C0000000008004000080080000800C00008F2
-:10323C000000010800000208000004080000060855
-:10324C000F3F00080008024008000000143F00086F
-:10325C000000024004000000173F00080008024074
-:10326C00400000001E3F0008000002400200000069
-:10327C0000000240010000000000080010001800CF
-:10328C002000280030003800000000000060000022
-:10329C0003001800000000000000006000000300A4
-:1032AC00180000000000000000600000030018007F
-:1032BC000000000000000060000003001800000087
-:1032CC00000000000060000003001800000000E097
-:1032DC0003001F60F800C30718C0070000F80FC0F8
-:1032EC007F60FE03F31F18F01F00000C1860C06015
-:1032FC0003061B30181830000006303080E1010C3A
-:10330C000F60180C60000003601800E3001807C081
-:10331C001806C0008001400C0062001003801803E6
-:10332C0080008001C00C006600300380190380010E
-:10333C008001C0FCFF670030038019FFFF01800192
-:10334C00C0FCFF630030038019FFFF008001C00C3C
-:10335C00006000300380190300008001C00C006085
-:10336C0000300380190300008001400C0062001043
-:10337C000380180380008003601800C3001806C087
-:10338C001806C000800730308081010C0C60180CCE
-:10339C006000800D1860C00003061830381830002B
-:1033AC0080F90FC07F00FE03F01F70F01F0080E15A
-:1033BC0003001F00F800C00760C007008001000078
-:1033CC000000000000000000000080010000000070
-:1033DC000000000000000000800100000000000060
-:1033EC000000000000008001000000000000000050
-:1033FC000000000080010000000000000000000040
-:10340C000000FFFFFFFFFFFFFFFFFFFFFFFF0100BB
-:10341C00000000000000000000800100000000001F
-:10342C00000000000080010000000000000000000F
-:10343C00008001000000000000000000008001007E
-:10344C0000000000000000000080010000000000EF
-:10345C00000000000080FFFFFFFFFFFFFFFFFFFFEA
-:10346C00FFFF7C00FE00FF01C701C701C701C701B8
-:10347C00C701C701C701C701C701C701C701C70100
-:10348C00FF01FE007C0038003C003E003E0038008E
-:10349C003800380038003800380038003800380060
-:1034AC0038003800FE00FE00FE007C00FE00FF012C
-:1034BC00C701C701C001C001E000F00078003C006A
-:1034CC001E000E000F000700FF01FF01FF017C0032
-:1034DC00FE00FF01C701C701C001C001F800780060
-:1034EC00F800C001C001C001C701C701FF01FE0007
-:1034FC007C00E000E000F000F000F800F800F800BC
-:10350C00FC00EC00EE00E600FF01FF01FF01E00013
-:10351C00E000E000E000FF00FF00FF0007000700F4
-:10352C0007007F00FF00FF01C701C001C001C701F8
-:10353C00C701C701FF01FE007C007C00FE00FF01FB
-:10354C00C701C701070007007700FF00FF01C70193
-:10355C00C701C701C701C701FF01FE007C00FF01C5
-:10356C00FF01FF01E000E000700070007000380007
-:10357C003800380038001C001C001C001C001C000B
-:10358C001C007C00FE00FF01C701C701C701C70179
-:10359C00FE007C00FE00C701C701C701C701C701BF
-:1035AC00FF01FE007C007C00FE00FF01C701C7018B
-:1035BC00C701C701C701FF01FE01DC01C001C00149
-:1035CC00C701C701FF01FE007C00000000000000E5
-:1035DC0000007C00FE00FF01C701C701F001FC01E7
-:1035EC00CE01C701C701E701FF01DF01CE010700D2
-:1035FC00070007000700E700F701FF01CF01C70133
-:10360C00C701C701C701C701C701CF01FF01F701FE
-:10361C00E70000000000000000007C00FE00FF013D
-:10362C00C701C7010700070007000700C701C70152
-:10363C00FF01FE007C00C001C001C001C001CE0131
-:10364C00DF01FF01E701C701C701C701C701C701BE
-:10365C00C701E701FF01DF01CE01000000000000FF
-:10366C0000007C00FE00FF01C701C701C701FF017C
-:10367C00FF010700C701C701FF01FE007C00E0004D
-:10368C00F000F8003800FE00FE00FE0038003800A4
-:10369C00380038003800380038003800380038005E
-:1036AC003800456E746572696E67207374616E6460
-:1036BC00627900206973206F757473696465207377
-:1036CC00797374656D20666C61736800484152446F
-:1036DC00204641554C5400446573636C656E200064
-:1036EC000A4669726D6C656E20000A5873756D2000
-:1036FC00000A496E76616C6964206669726D776147
-:10370C007265206465736372697074696F6E2100F1
-:10371C00436865636B73756D6D696E67206669725E
-:10372C006D776172652075706461746500496E76A1
-:10373C00616C6964206669726D77617265204352B1
-:10374C004320696E2053504920666C6173682100D8
-:10375C0065726173655F6F6C645F6669726D7761CA
-:10376C007265004F6C6420576F726C6420666972CE
-:10377C006D776172652062617365006661696C6565
-:10378C006420746F20657261736520736563746F58
-:10379C0072200077726974655F6E65775F66697217
-:1037AC006D77617265006661696C656420746F2069
-:1037BC007772697465206164647265737320005755
-:1037CC0065277265206465616400436865636B738B
-:1037DC00756D6D696E672000206279746573004E9B
-:1037EC00657720576F726C64206669726D776172B1
-:1037FC00652073797374656D5F666C6173685F6265
-:10380C00617365004F6C6420576F726C642066693D
-:10381C00726D776172652073797374656D5F666C18
-:10382C006173685F6261736500436865636B737590
-:10383C006D202D2077616E746564200020676F7495
-:10384C0020004F757220696E7465726E616C206613
-:10385C006C61736820636F6E74656E747320617233
-:10386C0065206261642028636865636B73756D20E5
-:10387C006661696C656429212054686973206973D9
-:10388C00207265616C6C7920626164210000000615
-:10389C00830100000000000000000000000683010E
-:1038AC00000000000C000000000000068301000076
-:1038BC0000000C00000000D878369B79C0E3D90CCE
-:1038CC008C67DB3C1BF8FD7EBFFDE0F7FB1FC6EFF2
-:1038DC00FB7E1F98CD66B3CD60369B19C66C1866FF
-:1038EC000398FD66B3FD60309B19C66F186603988C
-:1038FC00FD66B3FD60309B19C36F186603980D66A7
-:10390C00B30D60369B19C360186603F8FD7EBFFDCE
-:10391C00ECF79B19C36F187E03D878369B79CCE3F0
-:10392C0099998167183C0318000000000000008082
-:10393C000100000000180000000000000000000062
-:10394C000000001800000000000000000000000053
-:10395C0000000C00060000000060003000001800A1
-:10396C000300000000C000180000308001000000BF
-:10397C000080010C000060C0000000000000030685
-:10398C000000C06000000000000006030000803151
-:10399C000000000000008C010000001B0000000073
-:1039AC000000D8000000000E0000000000007000B5
-:1039BC000000000E00000000000070000000001B62
-:1039CC00000000000000D800000080310000000062
-:1039DC0000008C010000C060000000000000060325
-:1039EC00000060C0000000000000030600003080F2
-:1039FC00010000000080010C000018000300000012
-:103A0C0000C0001800000C00060000000060003030
-:103A1C00000000000000000000000000000000009A
-:103A2C00000000000000000000000000000000008A
-:103A3C00000000000000000000000000000000007A
-:103A4C00000000000000000000000000000000006A
-:103A5C00000000000000000000000000000000005A
-:103A6C00000000000000000000000000000000004A
-:103A7C00000000000080FFFF0100000000000000BB
-:103A8C0000FEFFFF7F00000000000000E07F000050
-:103A9C00FE07000000000000FE010000807F000017
-:103AAC00000000801F00000000F80100000000F082
-:103ABC000100000000800F000000007C00000000EE
-:103ACC0000003E000000000F000000000000F000AD
-:103ADC0000008003000000000000C0010000E000B6
-:103AEC000000000000000007000070000000000053
-:103AFC000000000E0000180000000000000000187C
-:103B0C0000000C0000000000000000300000060067
-:103B1C000000000000000060000003000000000036
-:103B2C00000000C0008001000000000000000080C8
-:103B3C0001C0000000000000000000000360000055
-:103B4C000000000000000000063000000000000033
-:103B5C00000000000C10000000000000000000003D
-:103B6C00085341442057415443483A20005265734E
-:103B7C006574205265676973746572200042726FB8
-:103B8C00776E206F75742072657365740053746161
-:103B9C007274696E67204C5345206F7363696C6C4B
-:103BAC0061746F72004C5345206F7363696C6C6168
-:103BBC00746F7220646964206E6F74207374617208
-:103BCC0074005553422077616B657570006C6561AC
-:103BDC0076696E67207374616E64627900205F5F32
-:103BEC005F5F5F5F202020205F5F0D0A2F5F20202A
-:103BFC005F5F2F205F5F2F202F0D0A202F202F209B
-:103C0C0020202F5F20205F5F2F0D0A2F5F2F202099
-:103C1C002020202F5F2F0D0A00426F6F746C6F6194
-:103C2C006465722076657273696F6E3A20004C6120
-:103C3C007374206669726D7761726520626F6F7440
-:103C4C002077617320737461626C653B20636C65D3
-:103C5C00617220737472696B657300537475636B56
-:103C6C0020627574746F6E20726567697374657207
-:103C7C0020697320696E76616C69642C20636C65B5
-:103C8C006172696E672E00427574746F6E20696480
-:103C9C002000697320737475636B21004275747412
-:103CAC006F6E2077617320707573686564206F6E1A
-:103CBC0020626F6F742E20427574746F6E20636F68
-:103CCC00756E7465723A2000426F6F74206269746D
-:103CDC00733A2000486F6C6420646F776E205550E7
-:103CEC00202B204241434B20666F72203520736598
-:103CFC0063732E20746F20666F7263652D626F6F15
-:103D0C007420505246004669726D77617265206965
-:103D1C00732065726173656400426F6F74696E67BE
-:103D2C00206E6F726D616C6C79005761746368649E
-:103D3C006F672063617573656420612072657365BC
-:103D4C007400536F667477617265206661696C7577
-:103D5C00726520636175736564206120726573659B
-:103D6C007400426F6F74206661696C65642C2073FB
-:103D7C007472696B65203300426F6F7420666169E1
-:103D8C006C65642C20737472696B65203200426F11
-:103D9C006F74206661696C65642C20737472696B36
-:103DAC00652031004C6F6164696E67207265636FCA
-:103DBC0076657279206669726D776172650046610D
-:103DCC00696C656420746F206C6F6164207265632C
-:103DDC006F76657279206669726D776172652C20D9
-:103DEC00737472696B65206F6E652E205472792026
-:103DFC00616761696E2E004661696C656420746F41
-:103E0C00206C6F6164207265636F766572792066D1
-:103E1C0069726D776172652C20737472696B6520A1
-:103E2C0074776F2E2054727920616761696E2E0051
-:103E3C004661696C656420746F206C6F61642072DC
-:103E4C0065636F76657279206669726D77617265EC
-:103E5C002C20737472696B652074687265652E20F2
-:103E6C00534144205741544348004F75722070729F
-:103E7C006576696F7573206669726D7761726520FE
-:103E8C00757064617465206661696C65642C206171
-:103E9C00626F7274696E67207570646174652E0050
-:103EAC004E6577206669726D776172652069732043
-:103EBC00617661696C61626C652100426F6F746937
-:103ECC006E67206669726D776172652040200072A2
-:103EDC00657475726E696E6720746F207374616E91
-:103EEC0064627900466F7263652D626F6F74696EE0
-:103EFC0067207265636F76657279206D6F64652ECD
-:103F0C002E2E004261636B0055700053656C656327
-:103F1C007400446F776E00303132333435363738B5
-:103F2C00394142434445460030313233343536371B
-:103F3C00383961626364656600286E756C6C2900A3
-:103F4C000000000001020304010203040607080933
-:103F5C00FFFFFFFF00A000000202000000C00401F0
-:103F6C00000000000000000210000000070000002C
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/boot_robert_bb2@1478015115.bin b/bin/boot/boot_robert_bb2@1478015115.bin
deleted file mode 100755
index ad5cb98e67..0000000000
Binary files a/bin/boot/boot_robert_bb2@1478015115.bin and /dev/null differ
diff --git a/bin/boot/boot_robert_bb2@1478015115.hex b/bin/boot/boot_robert_bb2@1478015115.hex
deleted file mode 100644
index b548adf66e..0000000000
--- a/bin/boot/boot_robert_bb2@1478015115.hex
+++ /dev/null
@@ -1,1798 +0,0 @@
-:020000040800F2
-:1000000000AA0120E1250008DD2500081D1E0008CA
-:10001000DD250008DD250008DD25000800000000C2
-:10002000000000000000000000000000DD250008C6
-:10003000DD25000800000000DD250008DD250008A2
-:10004000DD250008DD250008DD250008DD25000888
-:10005000DD250008DD250008DD250008DD25000878
-:10006000DD250008DD250008DD250008DD25000868
-:10007000DD250008DD250008DD250008DD25000858
-:10008000DD250008DD250008DD250008DD25000848
-:10009000DD250008DD250008DD250008DD25000838
-:1000A000DD250008DD250008DD250008DD25000828
-:1000B000DD250008DD250008DD250008DD25000818
-:1000C000DD250008DD250008DD250008DD25000808
-:1000D000DD250008DD250008DD250008DD250008F8
-:1000E000DD250008DD250008DD250008DD250008E8
-:1000F000DD250008DD250008DD250008DD250008D8
-:10010000DD250008DD250008DD250008DD250008C7
-:10011000DD250008DD250008DD250008DD250008B7
-:10012000DD250008DD250008DD250008DD250008A7
-:10013000DD250008DD250008DD250008DD25000897
-:10014000DD250008DD250008DD250008DD25000887
-:10015000DD250008DD250008DD250008DD25000877
-:10016000DD250008DD250008DD250008DD25000867
-:10017000DD250008DD250008DD250008DD25000857
-:10018000DD250008DD250008DD250008DD25000847
-:10019000DD250008DD250008DD250008DD25000837
-:1001A000DD250008DD250008DD250008DD25000827
-:1001B000DD250008DD250008DD25000861070008B1
-:1001C0006D070008DD25000800000000DD2500089F
-:1001D000DD250008DD250008DD250008DD250008F7
-:1001E000DD250008DD250008DD250008DD250008E7
-:0801F000DD250008DD250008F3
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0D6BF00BFE42B0008014801F0AB
-:1007700038B800BFE42B0008014800F0F9BD00BF05
-:10078000E42B000837B50024012002F007FA01909D
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F0E1F9002020E001339E
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F0BFF92846C9
-:1008000003B030BDC1650008ED650008F86500085B
-:100810000266000808B500F077FB80F00100C0B266
-:1008200008BD000008B50C22044B02FB003000F0AC
-:100830008DFC80F00100C0B208BD00BF842C000810
-:1008400010B5002401F094F8054820440C34017AD6
-:1008500000F062FC302CF7D1BDE8104001F089B8FF
-:10086000842C0008044BDA691106FBD59862DA691A
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F075F828464FF48021EC
-:100890001E4C01F06FF82B68642623F0010394E8E6
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F013FC03AB94E8070083E8070045
-:1008C00000211846022200240B4600F007FC06A86F
-:1008D00002F07AF8089821460D4A70430023FFF78A
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240B42C00083D
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F01FF931468A
-:100980004A46002001F070FD07F1080304F5927457
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F030FD044655206C44FFF752
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F08338000020CC2C000809
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F044FD01A8FFF709
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F010FDF1E7012010BD00BF92
-:100A90002E66000810B5074C43F2CD71064848F6A3
-:100AA000B803224601F056FD01462046BDE810403D
-:100AB00000F0E4B83C010020E92C000810B500F07B
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B2000516600086C660008876600089166000838
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F065BC00BF1A
-:100BE000342C0008024B1868403000F0AFBA00BF48
-:100BF000342C000838B5204B012200211C6804F178
-:100C00002005284600F03CFA0021284600F052FA60
-:100C100004F1380000F094FA04F1400000F090FA7A
-:100C2000012104F12C000A4600F02AFA002104F107
-:100C3000080001220B4600F051FA0021012204F1C4
-:100C400014000B4600F04AFA6068012101F06EFFC3
-:100C50006068002101F06AFF94E8030000F08AFE5A
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD342C00082B4B2DE99D
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F009FC384604
-:100CA000012100F007FA0021304600F003FA01208C
-:100CB00001F0FEFB684600F049FA054620B11C48E9
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000F1F9012001F0ECFB204600F037FA06465E
-:100CE00008B114481BE0684600F030FA054608B920
-:100CF000114814E0012001F0DBFB48464146FFF7B4
-:100D000055FF3846314600F0D5F90C480921FFF768
-:100D10004DFF204600F01AFA054610B90848FFF7C3
-:100D200081FE284603B0BDE8F08300BF342C0008E4
-:100D3000B0660008CC660008E6660008B6640008E5
-:100D40000267000808B5022001F0B2FB0A4B1B68DD
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D3FD022001F0A4FB0548FFF75BFE012044
-:100D7000BDE8084000F0C2BD342C0008236700081D
-:100D80003F6700080F4BF7B51C6802AD0F46012105
-:100D9000203405F8010D1646204600F08BF964203A
-:100DA00001F082FB28460121FFF700FF1EB1384603
-:100DB0003146FFF7FBFE2046002100F07BF903B02F
-:100DC000F0BD00BF342C0008F0B50746ADF2044D6D
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0CCF8C2
-:100DF000284669464FF4806201F036FB0546EAE773
-:100E0000224600F0C1F869462246284601F02CFB34
-:100E10000DF2044DF0BD08B5202001F09FFD002823
-:100E2000FAD108BD08B5022001F098FD0028FAD0DB
-:100E30000220BDE8084001F09BBD00B58DB06846BA
-:100E400001F015FD0023684600934FF480730A9368
-:100E500035230B9301F03CFDFFF7E4FFFFF7DBFFC9
-:100E60000DB05DF804FB000030B5002495B02448B7
-:100E7000022100F07FFD23480021032220440C348E
-:100E80000B4600F02BF9482CF5D101A8002401F005
-:100E9000E5FC102301A802940193172303944FF457
-:100EA0004075059304940694079401F0EFFC01202B
-:100EB00001F032FDFFF7C1FF08A801F0D8FC66235E
-:100EC00008A808941393129501F002FDFFF7AAFFFA
-:100ED00008A801F0CCFC992308A808941393129554
-:100EE00001F0F6FCFFF79EFF4CF2503001F0DCFA07
-:100EF000FFF7A3FF0248022100F046FD15B030BD08
-:100F0000001000A0C064000830B502218DB01C485C
-:100F100000F030FD022001F013FD684601F0A7FC4F
-:100F20004FF08063684600934FF0407304934FF492
-:100F300040730A93AF230B9301F0CAFCFFF772FFD3
-:100F400001F006FD054601F003FD044601F000FD39
-:100F5000240244EA004040EA0504FFF75CFF094B25
-:100F60009C4204D020460024FFF763FD00E00124EA
-:100F70000348022100F008FD20460DB030BD00BF3F
-:100F8000001000A020BB190070B515468CB00446B7
-:100F90000E461B48022100F0EDFC681E01F0D0FC5B
-:100FA000684601F064FC4FF0806368462544009376
-:100FB0004FF0407304930A2305934FF44063099361
-:100FC0004FF440730A934FF4005308930B230B9391
-:100FD00001F07EFC304601F0ABFCAC4204D001F0E5
-:100FE000B7FC04F8010BF8E7022001F0C1FCFFF7A1
-:100FF00012FF0348022100F0C7FC0CB070BD00BF17
-:10100000001000A0034A136B23F4FF6323F00703CF
-:10101000136370470038024000F13F4000F57E0046
-:10102000C0F387200A280AD8054A135C591C1154BA
-:101030002BB9044901230A6B834013430B637047A8
-:10104000F48900200038024000F13F4000F57E00A6
-:10105000C0F387200A280DD8074A135C53B1013B1F
-:10106000DBB2135433B9054901230A6B834022EAEA
-:1010700003030B63704700BFF4890020003802406F
-:10108000436813B500930123044600688DF80430CB
-:1010900000238DF805208DF807308DF80610FFF736
-:1010A000BBFF2068694601F063FB2068FFF7CCFFB7
-:1010B00002B010BD38B5037A04460D460BB981F075
-:1010C00001052068FFF7A8FF2068A1882A4601F0E3
-:1010D0008DFB2068BDE83840FFF7B6BF13B5044666
-:1010E00040688DF80730009002208DF805208DF8BB
-:1010F000040020688DF80610FFF78EFFA27A2068A2
-:10110000218901F077FB2068694601F031FB2068F6
-:10111000FFF79AFF02B010BD002313B504460193F8
-:101120004368006800938DF80710FFF775FF20688B
-:10113000694601F01DFB2068FFF786FF02B010BD75
-:10114000036813B10021FFF7E7BF704738B50446C5
-:101150000068FFF761FFA188206801F041FB0546A8
-:101160002068FFF771FF281C18BF012038BD1FB58C
-:10117000836804460093C36868460193FFF7E0FF65
-:10118000636902A80293A3690393FFF7D9FF04B030
-:1011900010BD10B504460121083002220023FFF7DC
-:1011A0009DFF04F11400012102220023BDE810403C
-:1011B000FFF794BF0368DB6910B5044673B9C36ACF
-:1011C00063B10A2001F074F92046FFF7D0FF2046F2
-:1011D000E36A01219847142001F06AF92046FFF7DD
-:1011E000D8FF2046BDE8104000F0E0B910B5044635
-:1011F00000F04FFA48B10A2001F05AF9204600F0F9
-:1012000048FA80F00100C0B210BD012010BD30B519
-:10121000044687B0C36A00219847A36800210125CE
-:1012200000936846E3680A468DF808500193FFF77B
-:1012300027FF68460021FFF73DFF6369002103A8EF
-:101240000393A3690A468DF814500493FFF718FF1F
-:1012500003A80021FFF72EFF07B030BD10B50446EC
-:1012600000F00AFA2368DB6933B9E36A4BB1204620
-:10127000BDE81040FFF7CBBF2046BDE81040FFF7A8
-:1012800076BF10BD10B50446FFF7E8FF2046BDE865
-:101290001040FFF78FBF00002DE9F3419846036827
-:1012A00004460E46DB6917460BB900205BE000F0F0
-:1012B000F0F9B8B9256814220021284601F089FC0C
-:1012C0009DF828306F8020466B71089B2E71AB60B3
-:1012D000099B85F806802B6100F0ECF92368002259
-:1012E0009A6111E02046FFF7CDFF2046FFF77EFF11
-:1012F0000028DFD1D9E79A69B2F57A7F23DA013283
-:1013000002209A6101F0D4F8204600F0DFF90122B2
-:10131000236883F82020154A0192019A511E0191F9
-:101320001AB193F82020002AF7D1002283F8202058
-:10133000019A42B11D7D05F0FD02012ADBD16B1E31
-:101340005D425D4103E00025204600F0A8F92368D6
-:101350000022204683F82020FFF748FF10B92046DE
-:10136000FFF790FF284602B0BDE8F08180841E00A0
-:1013700010B5044618B90E48A92101F015F800214E
-:101380002422006801F025FC204600F0CBF8236AF7
-:101390002BB1002104F120000A46FFF771FEE36A39
-:1013A00023B12046BDE81040FFF731BF10BD00BF9C
-:1013B0009567000810B5044618B90848B62100F032
-:1013C000F3FF00680368DB690BB9FFF7F3FE2368DE
-:1013D0001A68D3690133D36110BD00BF9567000857
-:1013E00008B518B90748BF2100F0DEFF00680268A1
-:1013F000D36933B1013BD3611BB9BDE80840FFF7A6
-:101400002DBF08BD956700081FB50C46114618B9D9
-:101410000A4840F28D1103E023B908484FF4C77120
-:1014200000F0C2FF82888DE80A0000212346029165
-:101430000068FFF731FF04B010BD00BF95670008DA
-:1014400013460122FFF7E0BF1FB50C46114618B93D
-:101450000A484FF4D77103E023B9084840F2AF11AE
-:1014600000F0A2FF82888DE80A0000230121029388
-:1014700023460068FFF710FF04B010BD9567000811
-:1014800007B502AB03F8012D0122FFF7DDFF03B022
-:101490005DF804FB03680022197583F8202070476B
-:1014A00010B5046863882279C3F3090322B922784E
-:1014B000012A18BF43F48063A268E468121BFF2A64
-:1014C00095BF120443F0FF7302F47F0243F48033AC
-:1014D00098BF134309B143F4005342681268536044
-:1014E00010BD43681B681A6822F0D60210B51A6056
-:1014F0005A6842F480425A6008220368BDE81040EE
-:101500001A70FFF7C7BF0368012110B50446586879
-:1015100001F000FB00212368BDE81040586801F08D
-:10152000F9BA000043685A7B53B2002B30B506DA93
-:1015300002F00F021B4B1344C0221A7606E003F19F
-:101540006043C02203F5614383F8002343689A7B1C
-:1015500053B2002B06DA02F00F02124B1344C022E2
-:101560001A7606E003F16043C02203F5614383F875
-:10157000002350F8045F0C4C6B7B59B203F01F0240
-:101580000123490903FA02F244F82120AA7B51B24F
-:1015900002F01F024909934044F82130BDE8304071
-:1015A000FFF7B1BFFCEC00E000E100E043682C492C
-:1015B0009A688A42F0B5074687B004D92948512174
-:1015C000294A00F0E5FE29498A4205D91C7B34B13D
-:1015D000012C07D000F0F2FE0124254603E0092487
-:1015E000102500E0022502A801F0EEF979686019E3
-:1015F000049A8B684343B2FBF3F603FB162303B94B
-:10160000013E0F2E03D91748702100F0CDFE03C90B
-:1016100000F0B0F97B684FF0000100221B68013D2B
-:1016200066F307110192013C8DF804508DF8071004
-:1016300019688DF8054021F0010119600C491868FE
-:1016400001401960019919619A60DA601A6842F0E4
-:1016500001021A60074A59680A405A6007B0F0BD93
-:10166000801A0600AE670008CB670008A08601005C
-:10167000001F30FF008000F810B5044654F8043F06
-:1016800093E8030000F080F92046BDE81040FFF722
-:101690003ABF43681B689869C0F3C030704743681D
-:1016A0001B681A6822F0D6021A605A6842F4804217
-:1016B0005A60704703685A790AB9012204E01A791E
-:1016C0000AB9052200E006221A70704743681B68B9
-:1016D0001A6842F0D20210B51A60026814791CB977
-:1016E000196841F004011960117801290CD1528860
-:1016F000012CC2F309020CBF4FF08071002142F4AB
-:1017000090320A435A6010BD0121BDE81040FFF736
-:10171000C7BE38B5436805461C6803681A78013AA5
-:10172000072A5BD8DFE802F0045A5A5A223B5A577C
-:10173000A269910701D59A79A2621A793AB9A26988
-:1017400052060FD50522284601211A7008E0012A09
-:1017500008D1A269100605D50622284600211A7074
-:10176000FFF79EFEA369D9063AD525E0A269520784
-:1017700005D5DA681969501CD860636A8B54A3696F
-:101780001B0603D528460021FFF78AFEA3695806E9
-:1017900026D528460121BDE83840FFF7A2BEA26940
-:1017A000910705D5DA681969501CD8608B5CA36273
-:1017B000A16911F0100109D0E3692846022143F024
-:1017C0001003E361BDE83840FFF764BEA3691A0661
-:1017D000DCD52846D8E7A369DB0701D400F0EEFD8D
-:1017E00038BD43681B689A69D20503D5DA6942F4AB
-:1017F0008072DA619A69510503D5DA6942F4806230
-:10180000DA619A69920503D5DA6942F40072DA6105
-:101810000321FFF766BE0000094B70B51C680D463A
-:1018200006462046FFF7C6FD2A4631462046FFF70A
-:1018300007FE05462046FFF7D3FD284670BD00BFD2
-:10184000182C0008094B70B51C680D46064620464A
-:10185000FFF7B0FD2A4631462046FFF711FE054648
-:101860002046FFF7BDFD284670BD00BF182C0008BC
-:1018700037B500F07DF81D4801210222FFF700FC7A
-:101880001B4801210222FFF7FBFB1A48012102221B
-:10189000FFF7F6FB00F06DF800200DF10701FFF7F0
-:1018A000BBFF9DF80750012D1DD114200DF107013C
-:1018B000FFF7B2FFA8B1104C237813B101332370A6
-:1018C0000FE09DF80710142021F0060141F00201FD
-:1018D0008DF80710FFF7B6FF18B10320257000F050
-:1018E000E7FD012000E0002003B030BD08650008DE
-:1018F0001465000820650008FF89002001460148A2
-:10190000FFF7D8BB0865000801460148FFF7D2BBC6
-:1019100014650008B0F1804F08B503D20D4830219E
-:1019200000F042FD0C4B98420ED903F580339842EB
-:101930000CD9B0F1A04F0BD3084A094BB0F1204F9E
-:1019400034BF1846104608BD064808BD064808BD05
-:10195000064808BDEC670008FFFF0040852A000824
-:101960006D2A00089D2A0008B52A0008552A00089B
-:101970007047704710B50C46FFF7CCFF01210346B6
-:101980002046BDE81040184710B50C46FFF7C2FFCF
-:10199000002103462046BDE81040184738B5104CDA
-:1019A00005464FF080512046FFF7E4FF45B154E86B
-:1019B000003F43F4807344E80032002A08D0F6E781
-:1019C00054E8003F23F4807344E80032002AF7D142
-:1019D00003484FF08051BDE83840FFF7D5BF00BF46
-:1019E00000700040024B5868C0F34000704700BFD1
-:1019F00000700040024A136843F008031360704708
-:101A000000700040B0F1006F10B504460BD20C48D6
-:101A1000FEF7F0FF2046FFF70CF80A48FFF702F840
-:101A20004FF0FF3010BD084B002053F8042BA242AA
-:101A300002D81A68944202D301300B28F5D110BDA8
-:101A40000B680008146800082C6500082DE9F843AD
-:101A50000446174699460E46C1B3FFF7D3FF054625
-:101A6000601E3044FFF7CEFF002D804631DB00289A
-:101A70002FDB461B01361FB1002031464A46B847CE
-:101A80002C4600F0D3FD44451EDCF32000F0E4FDBD
-:101A9000114B002133F8140000F016FE09280AD07B
-:101AA0000E48FEF7A7FF2046FEF7C3FFFEF732FF02
-:101AB00000F0CAFD0DE02FB1C5F1010031464A46E4
-:101AC0002044B8470134DEE700F0BEFD0120BDE848
-:101AD000F8830020BDE8F8835C6500082D680008E5
-:101AE0002DE9F0410F461646804600F09FFD3E442A
-:101AF0003C46F32000F0B0FDB44216D0C7EB080519
-:101B0000254414F8011B284600F014FE0928F3D0E0
-:101B10000848FEF76FFF2846FEF78BFFFEF7FAFE38
-:101B200000F092FD0020BDE8F08100F08DFD012065
-:101B3000BDE8F0814568000808B545F2555000F051
-:101B40006BFE042000F06EFE40F6FF7000F070FEA9
-:101B5000002000F061FE4FF480500121BDE80840F4
-:101B600000F058BD08B500F071FEBDE8084000F077
-:101B700065BE08B57D2000F0E5FF003018BF0120EC
-:101B800008BD4900FEF7E4BF2DE9F043012185B00F
-:101B900005460020FEF7DCFF042000F051FB01A801
-:101BA000294600F0A7FB01A800F0B3FB08B93B48A9
-:101BB00014E00C353A48FEF735FF02992846FFF746
-:101BC00003F904463748FEF715FF2046FEF731FFBC
-:101BD000FEF7A0FE039B9C4204D03348FEF722FF91
-:101BE000012057E0029CDFF8E0803048FEF71AFF42
-:101BF00021462F4A002340460024FFF727FF029F7B
-:101C00002C484FEA5709FEF70DFFBC421CD23E1B81
-:101C100029486119B6F5803F28BF4FF48036324617
-:101C2000FFF7B2F908EB040023493246FFF758FFEB
-:101C300018B92248FEF7F6FE06E009EB54003946D3
-:101C4000FEF786FF3444E0E71D48FEF7D3FE029816
-:101C5000FEF7EFFE1B48FEF7CDFE1B49029A00205F
-:101C600000F002FC04461948FEF7C4FE0398FEF794
-:101C7000E0FE1748FEF7BEFE2046FEF7DAFEFEF74E
-:101C800049FE039B9C4204D01248FEF7CBFE022083
-:101C900000E0002005B0BDE8F08300BF56680008F2
-:101CA0007468000891680008A7680008CA680008FE
-:101CB000831B0008E1680008008A0020F86800081B
-:101CC0000369000811690008008000081A6900080B
-:101CD0002D6900083369000810B5022000F0C8FA29
-:101CE000D8B3042000F0C4FA044670B11B48FEF7D4
-:101CF00099FE042000F0B0FA022000F0ADFA4FF493
-:101D00000040BDE8104000F0A7BA1548FEF78AFE73
-:101D1000082000F0A1FA102000F09EFA202000F028
-:101D20009BFA402000F098FA2046FFF72DFF02288A
-:101D300007D1082000F084FA102000F081FA00F0AA
-:101D400061FB042000F088FA022000F085FA4FF4CD
-:101D50000040BDE8104000F073BA10BD7E69000875
-:101D6000B469000810B52548FEF75CFE4FF480000A
-:101D7000FFF70AFF10B102283AD809E0202000F04E
-:101D80006BFA402000F068FA802000F059FA2FE04A
-:101D9000082000F055FA102000F052FA202000F040
-:101DA00067FA20B91648FEF73DFE202007E04020E4
-:101DB00000F05EFA58B91348FEF734FE402000F0F8
-:101DC0003FFA4FF4007000F03BFA00F01BFB0E48A6
-:101DD0000024FEF727FE082000F03EFA102000F055
-:101DE0003BFA202000F038FA402000F035FA00E0FD
-:101DF0000124042000F030FA204610BDCF6900080D
-:101E0000E9690008226A00085B6A000808B5024810
-:101E1000FEF708FE00F0FDFA956A00081EF0040FB8
-:101E20000CBFEFF30880EFF30980FFF7EFBF7047B7
-:101E300008B50120FEF7F6FC08B900200FE00020ED
-:101E4000FEF7F0FC0028F8D00220FEF7EBFC00289B
-:101E5000F3D00320FEF7E6FC80F00100C0B200F0F2
-:101E6000010008BD1FB504460E48FEF7DBFD01A9C1
-:101E70000C22204600F026FB01A8FEF7D3FD2046E9
-:101E8000FEF784FE0220FEF7CDFC04460220FEF79A
-:101E9000C9FCA04201D000F0B5FA0A2000F008FB0E
-:101EA000F4E700BF8B6A00087FB5BF484FF0805150
-:101EB000FFF760FDFFF796FD044630B1FFF79AFD8E
-:101EC000BA48FEF7AFFD00F0A4FA4FF08051B648D3
-:101ED000FFF75AFDFEF750FCFEF7D0FCB448FEF7C2
-:101EE000A1FDB448FEF79EFDB348FEF79BFDB34845
-:101EF000FEF798FDB248FEF795FDB248FEF792FD59
-:101F0000B148FEF78FFDFFF7B3FC00F0BBF900F01E
-:101F1000DBF921460C2201A800F05BFE00F0D0F9AD
-:101F200001A90C2200F0CEFA01A8FEF77BFDA7481C
-:101F3000FEF778FDA548FEF775FD4FF4804000F0F0
-:101F400097F990B1A248FEF76DFD4FF4804000F084
-:101F500083F9082000F080F9102000F07DF920209E
-:101F600000F07AF9402000F077F9FEF77DFFFEF7E8
-:101F700067FCFFF77DFCFEF7A1FDFEF7D9FDFEF73C
-:101F800001FC08B1934803E0FEF744FC10B192480D
-:101F9000FFF768FF00F084F9802000F069F918B1BC
-:101FA000802000F059F94BE04FF4003000F060F968
-:101FB00020B14FF4003000F04FF943E0FFF738FF55
-:101FC00068B141F288348548FEF72CFDFFF730FFF9
-:101FD00078B1012000F06CFA013CF7D132E0804B7F
-:101FE0000CCB013301D0013203D17E48FEF71AFD3C
-:101FF00028E0FFF7BEFD48B3FFF7BBFD10B17A48FC
-:10200000FEF710FD4FF4007000F032F910B1774880
-:10201000FEF708FD4FF4007000F01EF9102000F0EC
-:1020200027F9002800F0F8807148FEF7FBFC082033
-:1020300000F012F9102000F00FF9FFF793FE98B9A5
-:102040006C48A5E76C48FEF7EDFCF6E74FF400702E
-:1020500000F00EF90028CFD1082000F0FDF8102084
-:1020600000F0FAF8FFF738FE4FF4005000F000F9E6
-:1020700004464FF4805000F0FBF8400040EA840032
-:10208000C4B24FF4006000F0F3F82043C0B2072858
-:10209000C3B20DD14FF4006000F0DEF84FF4805071
-:1020A00000F0DAF84FF4005000F0D6F853486FE72C
-:1020B00001334FF40060DBB2023B052B11D8DFE89F
-:1020C00003F00C1003100C1000F0C6F84FF4805011
-:1020D00000F0C2F84FF4005003E000F0BDF84FF4F8
-:1020E000805000F0ADF84648FEF79CFCFFF724FD59
-:1020F000FFF738FDFEF786FF394B42485D681E68E2
-:10210000FEF778FC2846FEF794FC3F48FEF772FC89
-:102110000022930001324FF0FF3103F16043082A9F
-:1021200003F56143C3F88010C3F88011F1D1374B38
-:102130004FF4801200241A634FF480625C639C6346
-:102140001A645C6400F01AFC3148012100F0BEFC06
-:1021500021462F4800F0BAFCF320012100F0C2FC18
-:102160002146F32000F0BEFC0320012100F0C6FC54
-:102170002146032000F0C2FC6FF4A050012100F0C2
-:10218000C9FC21466FF4A05000F0C4FC2148012195
-:1021900000F0CCFC1F48214600F0C8FC63B64FF0AD
-:1021A000FF3EB546284700BF00700040A06A000807
-:1021B000AD6A0008B46A0008416B0008D86B0008DB
-:1021C000596C0008DA6C00085D6D0008B36A0008FD
-:1021D000DA6D0008014550FE024550FE076E00080A
-:1021E00000800008426E0008556E00086D6E000801
-:1021F0008D6E0008034550FE016F0008044550FE37
-:10220000206F0008326F0008466F00080038024057
-:102210000010E022B379F764082000F029F820B11B
-:102220000548FEF7FFFB102003E00448FEF7FAFB29
-:10223000082000F005F815E7B56E0008DB6E000811
-:1022400010B50446002000F0A9FC40EA040100207B
-:10225000BDE8104000F092BC10B50446002000F02C
-:102260009DFC20EA04010020BDE8104000F086BC7F
-:1022700010B50446002000F091FC204214BF01205C
-:10228000002010BD08B50120FFF788FB0120FFF7F3
-:10229000EFFF20B90121BDE8084000F06FBC08BD88
-:1022A00008B50648FEF7A6FB002000F077FCFEF715
-:1022B000C0FBBDE80840FEF72DBB00BF4E6F000815
-:1022C000022000F06BBC000008B5FFF7F9FF0449DD
-:1022D000884204D00220BDE8084000F04FBC08BD91
-:1022E0008BB8185808B50248FEF79CFB00F08AF836
-:1022F0005A6F00081FB504460C2201A8FEF744FEE1
-:1023000001AB03CB206018686160A060204604B078
-:1023100010BD0068A0F10C035842584170470000FE
-:1023200080B51746064610480D461C46FEF762FB70
-:102330003846FEF75FFB0D48FEF75CFB3046FEF7C4
-:1023400059FB0B48FEF756FB2846FEF772FB2CB1F3
-:102350000848FEF74FFB2046FEF74CFB0648FEF709
-:1023600061FBFFF7BFFF00BF776F00085A6D0008E1
-:10237000806F00085B6D0008B36A00081FB506AAED
-:1023800052F8044B039200921A462346FFF7C8FF07
-:102390000CB41FB506AA52F8043B03920092014AFE
-:1023A000FFF7BEFF826F0008002307B57246009357
-:1023B000014BFFF7E3FF00BF896F00087446064832
-:1023C00008B5FEF717FB2046FEF733FB0348FEF780
-:1023D00029FBFFF787FF00BF916F0008B36A000871
-:1023E000BFF34F8F0549064BCA6802F4E0621343FE
-:1023F000CB60BFF34F8F00BFFDE700BF00ED00E0F3
-:102400000400FA0508B5FEF7CFFB00F0AFFBFFF7BD
-:10241000E7FF08B5FFF7E4FFF0B50646002401200A
-:102420002546034694421DD011F804C000F1010E68
-:10243000BCF1000F03D17355774605460DE001331B
-:10244000774606F800C0DBB2FF2B07D102F1FF3C54
-:10245000644506D07355871C754601230134384600
-:10246000E0E770467355F0BD30B5C9B1C0430A44CA
-:10247000914213D011F8013B0A4D83EA000404F0A5
-:102480000F0455F8244084EA101080EA131303F077
-:102490000F0355F8233083EA1010E9E7C04330BD3D
-:1024A000084630BD7465000800010138FDD1704751
-:1024B00010B504462CB14FF47A70013CFFF7F4FFDD
-:1024C000F8E710BD0A2A10B504DC1148BDE8104039
-:1024D000FEF7A8BA30230C461C2204F8023B7823EE
-:1024E0004B700F2393400340D340092B01D8303366
-:1024F00002E00F2B02D85733DBB200E02023043A6E
-:1025000004F8013B131DECD100238B7210BD00BFFA
-:10251000CB6F000808B582684368934203D3044830
-:102520001421FFF741FF0268591C4160D05C08BDCF
-:10253000E16F000843688268934210B503D30448F2
-:102540001921FFF731FF02685C1C4460D15410BDB3
-:10255000E16F0008F0B587B00E460746154600212A
-:102560000C2268461C4600F034FB00210C2203A814
-:102570000296009700F02DFB684603950594FFF73F
-:10258000C9FF06466846FFF7C5FFB042014601D0C5
-:1025900003A808E06846FFF7BDFF0446D8B101284C
-:1025A00004D103A83146FFF7C5FFEBE7030608D5C2
-:1025B00004F07F046846FFF7ADFF40EA042000F115
-:1025C0008004A4B20025A542DCDA03A80021FFF7AD
-:1025D000B1FF0135F7E7049807B0F0BDFEE7000052
-:1025E0000748084A0849121A08B500F0E7FA0748F0
-:1025F000074A0021121A00F0ECFAFFF755FC00BF61
-:102600000000002014000020F46F000814000020D7
-:10261000008A0120044B9A6809B1104301E022EAC4
-:1026200000009860704700BF002004E0044B1A6966
-:10263000002A04DA034A5A6002F188325A6070476D
-:10264000003C024023016745024A136943F00043FE
-:1026500013617047003C0240014BD860704700BFD7
-:10266000003C02400E4BDA68D20310D4DA68D1067F
-:102670000FD4DA68D2050ED4DA6812F0E00F0CD16C
-:10268000DB6813F0020F14BF0820092070470120F7
-:10269000704706207047022070470720704700BF30
-:1026A000003C0240092307B58DF80730FFF7DAFF39
-:1026B0008DF807009DF80730012BF7D09DF8070033
-:1026C00003B05DF804FB000070B5064641B1012976
-:1026D00008D002290CBF4FF400754FF4407503E099
-:1026E0000D4601E04FF48075FFF7DCFF09281ED18D
-:1026F0000F4C236923F4407323612169294321612D
-:10270000236923F0F8032361236943F002031E4386
-:102710002661236943F480332361FFF7C3FF2369F4
-:1027200023F002032361236923F0F803236170BDC2
-:10273000003C024070B505460E46FFF7B3FF09287E
-:1027400013D10A4C236923F4407323612369236165
-:10275000236943F0010323612E70BFF34F8FFFF70E
-:10276000A1FF236923F00103236170BD003C0240F7
-:10277000F0B500220E680123934003EA060E9E4541
-:102780002AD1550003230468AB40DB431C4004609E
-:102790000C79076804FA05FC013C4CEA0707012C98
-:1027A000076011D884684F791C40AF40846084680A
-:1027B00027438760446824EA0E0444608C794768A4
-:1027C0009440A4B23C434460C4682340C360CB79C6
-:1027D000C468AB402343C3600132102ACBD1F0BDA3
-:1027E0000369194214BF01200020704702B909048F
-:1027F0008161704701F00703C9089B0000EB81006D
-:102800000F219A40994010B5046A24EA010101623F
-:10281000016A1143016210BD014B1860704700BF8F
-:1028200000300040014B5860704700BF003000404E
-:10283000014B9860704700BF003000404AF6AA2262
-:10284000014B1A60704700BF003000404CF6CC428C
-:10285000014B1A60704700BF003000400023036046
-:1028600043608360C36003614361836170470023F9
-:1028700043608360C3600360036143618361C3613C
-:10288000036243628362C362704700000E490368BB
-:102890000A6810B544691C4383691C4322F07F43D6
-:1028A000426823F03003234343EA02630B60C368AA
-:1028B00082684C681A43054B23401343026943EA7C
-:1028C00002434B6010BD00BF001000A0FEF7E0FF08
-:1028D00090E80C000E491A4383681A43C3681A43F0
-:1028E00003691A4383691A43C3691A43036A1A4383
-:1028F000436A1A43836A1A43C36A10B51A434C6980
-:10290000044B23401343426943EA82434B6110BDA9
-:10291000001000A000008090044B1A6810B142F033
-:10292000010201E022F001021A607047001000A0CD
-:10293000024B9A68920600D498617047001000A07C
-:10294000024B9A68920600D418617047001000A0EC
-:10295000014B1878704700BF201000A0034B9B6804
-:10296000184214BF01200020704700BF001000A0D3
-:10297000014BD860704700BF001000A00F4B002132
-:102980001A6842F001021A6099601A6822F0A8528F
-:1029900022F410221A600A4A5A600A4AC3F88420B4
-:1029A00002F18062C3F888201A6822F480221A603B
-:1029B000D960C3F88C10C3F89010704700380240FB
-:1029C00010300024003000201E4A936803F00C03EE
-:1029D000042B10B503D0082B03D01B4B19E01B4B65
-:1029E00017E05168536811F4800F516803F03F03FA
-:1029F00018BF164AC1F3881108BF134AB2FBF3F39C
-:102A0000104A4B435268C2F3014201325200B3FBF9
-:102A1000F2F30C4A036093680D49C3F30313CC5CD3
-:102A20000368E34043609468C4F382240C5D23FA96
-:102A300004F484609268C2F342328A5CD340C3607B
-:102A400010BD00BF003802400024F40040787D0132
-:102A500001000020044B1A6B09B1104301E022EA87
-:102A600000001863704700BF00380240044B5A6BE7
-:102A700009B1104301E022EA00005863704700BF2B
-:102A800000380240044B9A6B09B1104301E022EA7E
-:102A900000009863704700BF00380240044B1A6C76
-:102AA00009B1104301E022EA00001864704700BF3A
-:102AB00000380240044B5A6C09B1104301E022EA8D
-:102AC00000005864704700BF00380240044B1A6988
-:102AD00009B1104301E022EA00001861704700BF0D
-:102AE00000380240044B5A6909B1104301E022EA60
-:102AF00000005861704700BF00380240044B9A69DB
-:102B000009B1104301E022EA00009861704700BF5C
-:102B100000380240044B1A6A09B1104301E022EA6E
-:102B200000001862704700BF00380240044B5A6A28
-:102B300009B1104301E022EA00005862704700BF6B
-:102B4000003802404209084B012A01D11B6804E009
-:102B5000022A01D11B6F00E05B6F00F01F0023FA17
-:102B600000F000F00100704700380240024A536F45
-:102B700043F08073536770470038024082B00023EF
-:102B80000193054B0193019B03EB80000190019B96
-:102B9000196002B0704700BF5028004082B0002387
-:102BA0000193054B0193019B03EB80000190019B76
-:102BB000186802B0704700BF50280040431E0A4406
-:102BC00010B5914204D011F8014B03F8014FF8E71A
-:102BD00010BD02440346934202D003F8011BFAE7FA
-:102BE0007047000014000020242C0008001402404C
-:102BF000004000000E0004000014024000800000AD
-:102C00000F000400000000000000000000000000B1
-:102C100000000000B46500081C2C0008E42B00082C
-:102C2000500000000060004000000001801A060013
-:102C3000005F6000382C00080054014000002000B4
-:102C400000000240200000000500080000000240D3
-:102C50008000000007000800000002401000000093
-:102C60000000000000000240080000000100000019
-:102C700000040240040000000004024001000000C3
-:102C800001000000001802404000000001000000A8
-:102C90000018024008000000000000000018024078
-:102CA0002000000001000000001802401000000099
-:102CB00001000000000C02400001000008000700B5
-:102CC000000C0240000200000900070001424F4FC3
-:102CD000544C4F414445520000000000002A2A0095
-:102CE00000000000000000000047FF004C61747409
-:102CF000696365006943456375626532203230312E
-:102D0000362E30322E323738313000506172743AFC
-:102D1000206943453430554C314B2D434D333641BA
-:102D200000446174653A204A756C20323520323097
-:102D300031362030393A35363A33394702FF7EAAE8
-:102D4000997E5100010592002062016F8247027254
-:102D5000007011000101470B104702804705024730
-:102D6000058003470801470208471120470C024726
-:102D70000B02471740470501470540470C040090E8
-:102D8000470F1047064047050147054047050147E3
-:102D900004800004471080470502002000080080DE
-:102DA000470201470908471701470434000C47044C
-:102DB00003470D30475970470E801047040200400A
-:102DC000470408014702070200404704080147057D
-:102DD0002004474103470B03470D1C471080470958
-:102DE000010080470203470908470324472B78471F
-:102DF000124007470A40470C040008470E404705A9
-:102E0000014706044704014706044706104711809E
-:102E10000747061C470380470C08470A0C30204729
-:102E20000F30E8470C63C1470C0C30470F400105D9
-:102E3000470C03C0470C0C3020470D184702E047F1
-:102E400004020CB10018003847064047080C304710
-:102E50001001074702010001CD72470398470F0C8C
-:102E60003020470D3000F9A04708100001C0470589
-:102E7000038047070C30470E3000710547083000CB
-:102E800001470F0C3020470F5808470401DCA00011
-:102E900080470363C1470203C020AF5247050C308F
-:102EA00047100803470402E0F5470503C047020244
-:102EB000E0050FA01047040C3020471240002020EE
-:102EC000470AC001E007A547060C3047110D47032C
-:102ED00014470B4047030547031447020C302047B3
-:102EE0000F900004470220470E17CFA24702084761
-:102EF000020C30471030092447022C470D02CD0F39
-:102F0000F047050C3020470F108004470368470343
-:102F1000010547100C30471011073047190C3020BD
-:102F2000470D300010470A0147100C30470E30475C
-:102F300002052047023447050247100C302047079E
-:102F4000044706404704203404ED80000247091C72
-:102F5000000847050C30470F4047050422FC470294
-:102F6000014707A00002C047060C3020470903EACA
-:102F7000F52000404706035CA500184708401C8F59
-:102F80000847050C30470A03D05047024047060166
-:102F9000F0554703104706200200F047050C30208B
-:102FA0004709284703110001E047032038FC80024D
-:102FB000470A1E8F0847050C3047080800404703A2
-:102FC0003029470402BC03D0470AC04703F0470535
-:102FD0000C3020470A1C0F10470829DCA500304799
-:102FE000090E8F0847050C30470C0F470941505513
-:102FF000002047090200F047050C3020470D044728
-:10300000065C76EC80024707084702068047060CFC
-:103010003047080247050447030147033CF0470ACD
-:1030200001400C00F047050C3020470820470B1CDE
-:1030300021FAE732004047100C3047090C470B24B7
-:1030400064F0F7084709028047070C302047141C3A
-:1030500031CCE720804703383D44470202804707D0
-:103060000C30470F404705027668FB47024000C01E
-:10307000403D4703028047070C302047080C4705B6
-:103080000147053C63DE800010470C0447040C3008
-:10309000470A2047040247052402E8470210470672
-:1030A00001014047020147050C302000A100123CFD
-:1030B00020000447021EF060470720001EF0404732
-:1030C000030D72BD400003428EEF47060C304705EA
-:1030D00003C0C04704F047024000974703042000A4
-:1030E000F0470401403C470201429C47070C302056
-:1030F00047033A3C200647030CF06018021080009A
-:10310000060140024AA500188000077815006047B4
-:10311000020CC96047050C30470503C0104704F096
-:10312000470205090747038001D055470390004037
-:103130001620000142C1096047050C3020470332C8
-:103140003C202C47031CF04030470280000447021B
-:10315000204705018839414702020025ACC02047BD
-:10316000040C30470503C0044704F001300801098E
-:10317000000C4702404705F00F4282010020402525
-:1031800047070C30204703323C20470280001EF0E6
-:1031900040470280E847037C470705781547044409
-:1031A00088002047040C3047040803C80001470288
-:1031B00010F0470371094703964708C01640000303
-:1031C00042150020470202001C0C30200001017A49
-:1031D0003C2047040EF0600008704703A00601DAA7
-:1031E000A047090A007E8800300002C0000C30476A
-:1031F000038D0003C04000243000F0470308FB4764
-:103200000240000340F54709014287002047040CB3
-:103210000C30202000013A3C20201004470708040D
-:10322000001000045AA102004000A04705603EEFD4
-:10323000A547050C300010070D0803C047020247E0
-:10324000070520470334E001470B1C05A047020295
-:1032500047020C3020040500723C20001047060491
-:1032600050800447022021EEE2020040181047047B
-:1032700003601FAAF5470202C0000C300004054796
-:103280000203C0001004470542D8BD2C00103C7654
-:103290007042470240008047030102C02C00F04703
-:1032A000050C3020000800723C2000A02078470365
-:1032B000300010470501DCA302304702804703C0FD
-:1032C00001C047080C3000040B470203C000521431
-:1032D0004704300008033C4702343830A300204044
-:1032E0000147048101C2C0470C0A723C204702A07A
-:1032F0003BF9014001404705202C0CF040470307F3
-:103300008402470306DEF5E0470A100803C1000106
-:10331000547D69A7004040470402046000F0470262
-:103320008050003C470402BCF1D0104706018047A2
-:1033300002723C20060024017F74400140470306CE
-:1033400047034EA50018470215A3C2806002002C57
-:1033500091A0470B0803C047023C2E78A010024002
-:103360004707D055470490003C470201401DF3F049
-:103370004707034703121540040036687B6440305A
-:1033800047040CA047020DD1000147020723C247A2
-:1033900002034614ABC420470A08154004023C004F
-:1033A0004A58007047040C470203DFE24705803C9F
-:1033B00047020266C20BC208470A03BC1047023C20
-:1033C000294B7440002847042000281EF0400002CA
-:1033D0001801A3C20004016060AB470C043C470322
-:1033E000164268A0004047074010F0470205080059
-:1033F000803C47021403B4C70010470A03BC100CFA
-:103400004702035D7A014706A00E60FEA047023026
-:1034100001A7A3C2000803469E81A020470A043CDE
-:103420000004470202C85A0847071E03C0F54705B3
-:10343000803C470201601D03F0470C295047021EE3
-:1034400001D95B10404705800423CCA1024703113A
-:1034500023C247041D95E0470B90168047021C319C
-:103460004CA547080202C002470480003C47043EC6
-:10347000E1D0470A1B47051F470601C04703062046
-:10348000E8A3024703B325ED0004016640ABC42066
-:1034900047090A4705024706014705267003470406
-:1034A000AFB694010A0242B507C004471064F85051
-:1034B000104708701AA302B10001D04703C00003EF
-:1034C000DDB5E0471164005047083443D053002273
-:1034D0008051A0470380D6C76EE1D04709081E5B24
-:1034E000C8104703040AF0404709FE00404702198C
-:1034F0008F304002000166A5E0470A0B00121E80D3
-:103500006000142800F04702400007470403F0A0C1
-:103510004080020007B0470301C24E944708018073
-:10352000470506470308F040184702100006200030
-:10353000020C0A001947020B3A81816002E68405F9
-:10354000A020470801470810F04704B7470240048D
-:103550003CC0050002801087400101000260140297
-:10356000400447060300080036C9580C0034001A0E
-:10357000F04030470218000CA14000FE504A0247BC
-:10358000020120288047030480D0A04706010003E1
-:103590000A7A05424702144702F000304702FB0056
-:1035A00004408003F080404704402880000340012D
-:1035B00000D080470603000500DE11D84702366CB4
-:1035C0001AF060470308000D8000020C0A40300822
-:1035D000000B3801010002000D85E02047060100C4
-:1035E0000F0052E0404702142800F04703B00700E4
-:1035F00009024702C0054820040007414104470270
-:10360000401602E0470A08F680D2100E47021AF070
-:10361000404703184703200400A54000805011755F
-:10362000D04703C067A0140447080B091B28C0201B
-:10363000470310F04704C900400E3C38C05A480107
-:1036400000D887B5F8470303AEE8008047080801B3
-:103650009F141447041AF040470280180400201EEB
-:103660002200A54130005C037B08084702E021CA24
-:10367000470A050C56788240470310F04703F0E5EF
-:103680003C470340C05A40104702A7C30C04000245
-:1036900062DC05470A0D81D6C9504705A54047029F
-:1036A00098984702A004301C0540800018E04705A8
-:1036B000600685014709050A32054A4704405A4712
-:1036C0000399933400400201C00A40470210B047FA
-:1036D000030847020105470A0581FE51D047040A45
-:1036E000F0403000901000040004027E5F401000A3
-:1036F00050E1B8280400E0400FF812470A0B53E0ED
-:103700004A4705F000300070FD3C04000220E00F45
-:1037100048100079098168040002600CC447111444
-:10372000004EA0400240470607C850C047039047DC
-:1037300005407EC70008470F020010A040804047A8
-:10374000063BC00542470210D04705235DAF014745
-:103750000E06470744470306470203C850C0180037
-:1037600018033E01006000063DC0471104470542B2
-:1037700047050402C005404702188FBC01204703DB
-:103780000E824716100001C000044702674850C06F
-:10379000100001E130104703604718300001470274
-:1037A00004470223E005401047020DE047160C478E
-:1037B000070547030C0006674850C0F0001017B219
-:1037C000012847020780471008470B08470222E0FC
-:1037D0000540204702E7C00147234003E850C147A6
-:1037E00003F0470402662F90471B10470203C005F1
-:1037F000404703D0470401442FB040471D73685031
-:10380000C010470219F56C47020366EED0471E420E
-:10381000C00540304702ADE11C47020142AEF080D6
-:10382000470240470E0447090226036850C00007BC
-:10383000101DFB08084702068DE800204710384796
-:103840000A0403E0054040003085830C4705084723
-:103850000F04470B040020736850C11047028047D3
-:1038600003C00060208E5420470D04470B04000461
-:1038700042E00540100051E04703804142650DA041
-:10388000470372009011010101470B1047064047A2
-:1038900005014705400002470608471120470680FA
-:1038A0004705024712084722010002470404471156
-:1038B00010470640470501470540470316000147EA
-:1038C0000604472202002000084702084703104769
-:1038D000243C000C47063047688010470402004033
-:1038E0004704080147030200404704080147043029
-:1038F0002004474D01470604472103008047050285
-:1039000047030C471F1E472D024703404705014749
-:1039100017404705014706044703030147060447CC
-:103920000610471D8047050247110C30472C0C300C
-:1039300020472B0C30472C0C3020472B0C30470EE7
-:1039400001470C1047100C3020470D02471D0C306A
-:10395000472C0C3020472B0C30472C0C3020472BA9
-:103960000C30472C0C3020472B0C30472C0C3020CF
-:10397000472B0C30472C0C3020472B0C30471308BA
-:103980000004002055470880004247080C302047BB
-:10399000120C0020016855404707400200404707CD
-:1039A0000C3047150400200F470B02055004470454
-:1039B0000C30204714260168F0C04709661E855464
-:1039C00047050C3047180F470DF08047040C302096
-:1039D00047150168F0C0470A168F0C47050C3047A1
-:1039E000150C47020F470DF08047040C3020471597
-:1039F00001E8F0C0470A1E8F0C47050C3047150C34
-:103A000020200F470B0200F047050C3020471426FA
-:103A10006548F0C04709601C8F0C47050C304716FD
-:103A200020200F470A460200F047050C30204715BA
-:103A30006548F0C047080207548F0C000147030C8B
-:103A40003047180F470DF047050C30204712064746
-:103A50000201C8F0C047076047021C8F0C47050CE5
-:103A60003047170C0F470503C01247020401B0F09E
-:103A700047050C3020471501DAF0C0470423C04742
-:103A80000307148F0C47050C304718F04703D9B0D3
-:103A9000A4470280470A0C30204714060008F0476C
-:103AA0000350A780020040470A0C30471620300F11
-:103AB0004703D900A047040247080C3020471505EA
-:103AC000780F80470250A780024703404047070C09
-:103AD00030471524201B0F470528470D0C30204781
-:103AE0001501F80F804703078002470C0C30471779
-:103AF0000D0F4704B020470D0C30204714066179A4
-:103B00000F804703078402470C0C30471504200D33
-:103B10000F47035000A8470D0C302047142004F82D
-:103B20000F804703070002470C0C30471506203C66
-:103B30000F47035000B4470440050A088047040CAF
-:103B4000302047143501C90F8047030100024702A6
-:103B5000026000E50447050C304715366C1C0F4722
-:103B6000035000284707588047040C30204714149E
-:103B700028E80F8047030704020060470214E0545E
-:103B800047050C3047166D4CA547035000204704ED
-:103B9000C0040A088047040C3020471529415A8088
-:103BA00047038700024702024702A504471B10048F
-:103BB0004000F0470301A9A00004800042471F20F5
-:103BC0007808F047020800BFA021404002004047AB
-:103BD0001D10042060A54702404702A047020100D3
-:103BE00040020550471C2007605A804703078002A7
-:103BF000470202601E8556471D0340A547035190AA
-:103C0000B04702014704F0471D01605A804702D9BE
-:103C1000A3840247020800168F0E470E01470D1CB1
-:103C2000004FA54704A0703C4706F0470E01470D22
-:103C30002601E15A80470219B5F43E47041E8F0E53
-:103C4000471C1C20390F47031900B44704028200A7
-:103C5000F1471C2605580F804702F9E3800247030D
-:103C600060148F0C471C1C3C2F0F47031000344777
-:103C70000320020200F1471C2061DB0F8047028015
-:103C8000030002470306548F0C471C3C381C0F47A7
-:103C900002180090F03C4703028000F1471D04C861
-:103CA0000F8018003DA5E03E006047021C8F0C47C6
-:103CB0001C3C380C0F47031000283C47040190F1CE
-:103CC000471D25CA0F8047029005643E47041DBF6B
-:103CD0000C470E04470222CF4A6047050400042027
-:103CE00047031000188F62E1004100421C05A04705
-:103CF0000E04000467FB40404705040036044703F8
-:103D00001000981D6CF1024002002C470210014780
-:103D10000604470208284702100025F03C600042D4
-:103D20004704100232DAC3400040018541410005DA
-:103D3000000381005004470A16A804470206067AC9
-:103D40007C424047060402DFD348000459F07281E8
-:103D500047041EE0504710023FE8F24707801C7AF4
-:103D6000E0A5470220080F3001400001C25C05A019
-:103D70000401470D100E62DFFA4707102026FC50A1
-:103D80000100C018E13A01000147026E4713214FBC
-:103D9000F54707014221D90740007D000F28110097
-:103DA0000101C026020414471006EBF64707011C68
-:103DB00005FD036100021987F69D000247021F807E
-:103DC0000420470809470408000628E01820404757
-:103DD0000408470202DFE3402000D80B656100942D
-:103DE0000142B501470A0847040C002E07FA0402F5
-:103DF00047050C00042BCCC36070009187BA890082
-:103E0000CA020021C20020470F3C0010A047020850
-:103E1000470601F0D3410147029FF9510004000217
-:103E2000B680404711014EA0470902E8C342020094
-:103E300070153EC1470306D5A0A047100642D0B971
-:103E4000404707042830A047031805732147036043
-:103E500037A1470F06000E3BDCB16247050647035A
-:103E6000DAA00018007C0FBB09006001E035D047E4
-:103E7000020A470810470602CFE0470D0400190F59
-:103E800021194702014247040447080E47040E4720
-:103E9000021BD0470930470304059981720D470280
-:103EA00002470B03000980920447047F60C2470663
-:103EB000040142034005001008018047034003400D
-:103EC000470A03000F80174705386CC302470504F3
-:103ED000009E000E0A20100058F0470340471018BB
-:103EE00014470403F00347081E3C30A00847029023
-:103EF000E77F21470306EED4A447090100DE80478F
-:103F0000030402DA430247073E056EA04703B819CF
-:103F1000FF4147024002B689144709090894104737
-:103F2000034040F0024707802C3F5ECB470308A9BF
-:103F3000836101470202020F470A0801F747028026
-:103F4000470260C80A0247060E20060CC710470247
-:103F5000781BEB0108084702468F0847094B0016FB
-:103F60004047020146387B0201000247053C3C10F5
-:103F70000A47033009807447020363C00F470A20D1
-:103F80000012204703BC7AF947030D47052005DAE4
-:103F90000A200247020772B4080009405E8F081029
-:103FA00047080B0D941A4247033C00A00847050838
-:103FB000001C294B08002020D00541470280000248
-:103FC000C20F470A080B06A590470369CAA02047FD
-:103FD000050C0020020C042032801809200008C0C3
-:103FE00047025C8F084709200E1000084703243061
-:103FF0000401470504470220CCA141470218B0C084
-:10400000284704020F470C17900080001429EA0487
-:104010000247050447020378D1408000D005782884
-:1040200047041C8F0847090700D04703401472D982
-:1040300047030147050401CA5B4703110567B84000
-:10404000470242800F47080180000A760080808086
-:1040500000767B802000024703060E14000DA7089F
-:10406000180159C573BC006047024C8F0847090509
-:104070000EDF00804703237B470A26CEFF0940005E
-:10408000D9E3384147072047080518DA47053CE9D6
-:1040900080200038470603DBF7470338A138014783
-:1040A000040C000800404702350050134703040386
-:1040B000C04702266D7040084047040400047C702D
-:1040C00005470308ABA39C20470203010F040040EF
-:1040D000014020E0A00147030683D047022428DAEC
-:1040E0005012470504002423EC4702800071B17E82
-:1040F000BD40404702418F044703467E0D344702CE
-:10410000014706046410A04707020036DAF048476A
-:1041100002500743000147040F04470201639CEC6F
-:10412000342000098047052065DEA0470901FFF41F
-:10413000404000D9A720000A47020700CF044702E9
-:1041400002403401A0470802266650014709437027
-:10415000A04703500FA40020470204010F044704A6
-:104160002FE00220470826760E022247070621ECA0
-:104170004704980FF420470303808F06470201404D
-:10418000010A4706154001800C62CC4705C0470470
-:104190003D40E740C10050A7030020470202410F05
-:1041A000044702020284AA47055A1550010020263E
-:1041B000FE0847041000804702077CD34A020081B2
-:1041C000D772000C0801E001CF04008000424705CF
-:1041D00001800803C047020C41DD20470608002E7D
-:1041E00039D00A47030800C02820470220010F04E5
-:1041F00000C002004047040D98523C300240002AA3
-:10420000CF47070C0006036C470430073028010035
-:1042100001C000EF044703029E4705080803C0479A
-:10422000021401E024001047061C207000414703DF
-:10423000A0C14702404702010F04470437AA010406
-:10424000470219523C30470302DA10023002470697
-:1042500004EE8063470315310028C0470201EF04D4
-:1042600047034035040010470403C0470303F047E9
-:104270000340470506034A1047030803240020476C
-:104280000202400F04006047038801218047027248
-:104290003C30470368EE4022004047030600060218
-:1042A0001E2000180031EF32002160470201AF04E8
-:1042B00010470223CDE0470603C14704EF47034000
-:1042C00047051401E04705A5FBE0470306010F047D
-:1042D00047036004C0804704723C304703027D807E
-:1042E0004702404706036A0A4703019B2FF48347AE
-:1042F0000203808F048047060100010E0803C004FA
-:104300004702404BF1493000080F280447101405BC
-:1043100000044706030008187A3C300447023BCDEE
-:10432000F04070001047020447061047028047051E
-:1043300003A18A4704028047060803C447050A40D0
-:10434000800070FD24470280470D028047050280EF
-:10435000470401805A3C3040000600FA0A404703F7
-:1043600080470201470D0142C04704014047040352
-:104370008F470203C010470238ED0BC10002008DC9
-:1043800028470A010141840001C0278247040680B2
-:1043900047065A3C30400006027A054900054702AC
-:1043A00004000E47092A81A047031F938047095044
-:1043B000470203C010002401505F40470270030011
-:1043C000404702304703044706400002800F0008C0
-:1043D000470820007A3C30000E00637AA54047026F
-:1043E000804705044705184704C00060008F00049B
-:1043F0004709180803C05800042C70E34047029096
-:104400009D0008470E01C00300F04709018B523C94
-:10441000300C002C03FCC34200380008000C470E8F
-:10442000020014E0F847043FC04704080803C050E6
-:10443000470201700500300031F1000C00044047D4
-:104440000B40022ECA5047041DD080470319523C2E
-:104450003020470202DA470230008090000400203A
-:10446000704705784706065415A847080347030315
-:10447000C04702042C6A814000020007470304473A
-:10448000052800F3C2BF800003D280C0F0470701B7
-:10449000804702723C3006010C026F504018014701
-:1044A0000306470618180007E2954703400EE0F898
-:1044B000470950000AC0470401DA3C47024010CBCC
-:1044C000470402C00544428008470604024702220E
-:1044D000470820007840204703016D3447041847FF
-:1044E00004014850400100704706071C00084703BC
-:1044F00072007011020101470802470608470402D2
-:10450000470A04470220470680470C014706044734
-:104510000401470802C0470310471702470608472F
-:104520000B084716024706084704024706084706D5
-:1045300020470680471F0300070004470B7C471DE8
-:1045400003470F6C470CA84705024727204708047C
-:1045500047220240C04704080147030200404704C5
-:1045600008014705200447058010474C03470D709C
-:10457000471F014703044709D0470340473A024712
-:104580001208470D80470A80000247030247058052
-:10459000470502470608470620472204470D4010FA
-:1045A00030C04718067B38470240626D61404703C0
-:1045B00083DC05470430C0471803DBD0470301AB59
-:1045C0002022C0470203C0008047021030C04716B7
-:1045D0000103F8EC00B0018047020162000600838D
-:1045E000D6000A00180030C0471703F83001F04722
-:1045F0000903C20D1047021030C047160108805A47
-:1046000000B01400AA49A16040030083C447030C12
-:104610000030C0471702002D01800800064B6C02D5
-:1046200080030003C247041030C0470A80470D14BE
-:10463000EC50104702A2EDF540470383CC0547023A
-:10464000800030C047193AD8F04703A1E42047035F
-:1046500003C2008B01001030C04716010A805F8042
-:104660004708030083C60847032030C047172100CE
-:1046700028104708020003C00547031030C0471048
-:1046800002470980470502470483C647025C470288
-:1046900030C0471A10470503C0470303C2470280D2
-:1046A000001030C04717080969470740470383D601
-:1046B0000581470330C04718215D470720470303A2
-:1046C000C0000A47021030C0471708805F18104723
-:1046D00007100083DC4703800030C0470901470E04
-:1046E000227A00804707600003C2470201001030B1
-:1046F000C0471704000A1847024010F12960470616
-:104700000A470330C0471801504703040F00014017
-:1047100047091030C04717043C585010018010F171
-:104720006A06804704014702180030C047183C1051
-:10473000508047020F00414047091030C04717041E
-:104740003C5878A0470210F121404703A906F380A6
-:1047500000480030C047183C105847030F00400283
-:10476000800020193FE547028C1030C04717043CF9
-:104770005C470410F121604047028BACE00A47031C
-:1047800030C047183C1000C047020F0040028000B4
-:104790002002A7B50A47021030C04717043C5C4707
-:1047A0000410F160470490B788470430C047183CB4
-:1047B0001047040F47050222EFF54702201030C0D2
-:1047C000471708024B9980470210F16047048BAEEF
-:1047D000F81B470330C0470901470D0210DA1047A4
-:1047E000030F004047030202A5A50A47021030C08C
-:1047F000471708025A470410F168470320A907D158
-:104800009A020C0030C047170122EB470220000F2C
-:1048100047048000193EA58002081030C0471708E1
-:10482000826B470410F1284704A93CE00A47033093
-:10483000C04718115D47040F0040470280022A2636
-:10484000800002001030C04717183DC04704169979
-:1048500047058001B50A08470230C04712028C00A4
-:104860000800083C20470303096B47053FC1ED9052
-:1048700047021030C04709056047081C47026047DF
-:1048800005018010F1624702060083DE470318002D
-:1048900030C0470940470802803047068000010FBA
-:1048A0000041C0470303C047041030C047130C7CCD
-:1048B00000304703100080800AA13847020300A996
-:1048C000408047020C0030C0471202C278003047D7
-:1048D00003084702C00AA0404704294047030810C4
-:1048E00030DE4710084702404709C060F1804704A6
-:1048F00083C4470530C2470F01140003470A400034
-:10490000F0800008470203C20D0B47021030CE476B
-:10491000090847095C470A2A500447030183C44732
-:104920000240470230C247090847062002024702F8
-:10493000804706200045A0344702800003C2094793
-:10494000031030C00700A0470F804E7847072000B3
-:104950002A50470902470230C04709084708B242B7
-:1049600078470905A03C402847081030C04712800E
-:104970000E470C024702808083D6470530C04709A6
-:104980000847062000F24000084704D000204703F3
-:10499000024000800003C0470202001030C00747F9
-:1049A00003020F78044702204708540500304706E9
-:1049B00080470A1C000C0030C04704020F08024761
-:1049C000082000B3823A80204706804705804704CC
-:1049D00010A20447071041F700280010470380A0E9
-:1049E00047050800080379000447095981A50A40D2
-:1049F000470ADFB44047057147060800608369D065
-:104A0000B04709198D0D904709022483802800447E
-:104A1000090AF900A0018047030800083DC080E0B2
-:104A2000018020F5470306005A64A0470A02E7B355
-:104A3000C0400010222FDA11B047050847023C2081
-:104A400071B04702A0F080038047021A74470B023E
-:104A5000AA77144703014148504702804704304772
-:104A600004A010002A57A86047035A44850A470942
-:104A700002AA0C022C4702014000D8B00080470473
-:104A8000204703F147030F50F5C047031A64009015
-:104A9000470A1892D428000101406A5010470708BD
-:104AA0003DC030470320F5806047035A4488470BD8
-:104AB000341EB46C470223401BD8F0470608203C44
-:104AC0000030470320F08047041A65010B47094076
-:104AD000053EC04704046B804702080020470814C5
-:104AE000470302000347020CC5A8000D4047070812
-:104AF0000807C04704035810470202003C47080853
-:104B00004704404703332CBB0E0080470801128640
-:104B10002800014294DB4703C0470F08470780473E
-:104B20000A1E8040470202003B0090008047102888
-:104B3000470660470850A55EE060000208BBDA80C7
-:104B4000E0470701E94E518047061047023C1C0729
-:104B5000470B85068447042A6EF04706744702AA6D
-:104B600078F847072847023C0207804709025A00A5
-:104B70005470007047038047070108F46A47042017
-:104B8000F18247020240029DE7470280470702A5E3
-:104B900003424000304703F000024707980B4704E8
-:104BA00020F001C047028002830080014708030F04
-:104BB00052A047030C3E6A47090294DE18470A5484
-:104BC00014850A470AF0983C470303C3604709016C
-:104BD000541FD0470990144702904709030F1380D0
-:104BE0004702600C3C4E30000180470614C8470263
-:104BF00001804703E00846005A45E047021847088D
-:104C0000F0470503C0470A02BC1CD047062200201B
-:104C1000001A7400084709030F13A60447020C3C4E
-:104C20004A9810470505000294DD51E000100AF192
-:104C300084470443C48047020C4708F0043C2047E3
-:104C40000203C01010804705020001540909470300
-:104C500005F0A047043C010D0B000C4707030F12A1
-:104C6000806030000C3C4AB180C8470715CA500428
-:104C7000470220F580038003005A65E047020C4795
-:104C800008F004470403C010100014470602BC1CBF
-:104C9000084704F0470302001A54000B00044707BA
-:104CA000030F178047030C3C5E47028047060294BF
-:104CB000CDF9F0470903C4470CF0470503C0470A84
-:104CC00001541F70D0470603470203C0470820471E
-:104CD00002030F168047030C3C5A0001C847071413
-:104CE000FAB8E047080183DE47021C4709F0470590
-:104CF00003C0470314470602BC3CB890470983C071
-:104D0000470B02AA17A06047020C3C5A01804706D5
-:104D10000101E8FF71C047050780470401001080CA
-:104D20004708AA0404470303C010470A542C084745
-:104D30000604470680470C200400200AA85E1814C9
-:104D400000C047040108F54C704704A76000044701
-:104D500005080008470A0420001002A810008A0075
-:104D600040470404006419F8F0000100A0470A0855
-:104D7000470E083D60000447052000083DC0470479
-:104D80008005E000380004C3FCA04711483C00F057
-:104D90004708083C47062BA342D000043C3E470B83
-:104DA000020F78470360083D6010000180470A0544
-:104DB000804019B006000600C3C4E0470218470748
-:104DC000020F084704083C00F8470B700008470230
-:104DD00001EB404702243C471230083CE070470298
-:104DE00080470440083DE0304702802845E0470402
-:104DF000C3C4A981470F22083C20080014C04705FE
-:104E0000083C204703C0242BA002C047023C0101FC
-:104E1000084709020F304704083CE001F047070843
-:104E20003C604703204009B047023000C3C4A99842
-:104E30004709020F4705083C2001E04707083C20CE
-:104E4000470521EB4047033C0101470D2004470281
-:104E5000183C60008008470405470905E2E0284740
-:104E600002C3C5E0470D3C384702083C2001470516
-:104E7000024705B04703808BA06047033C471308F7
-:104E80003C40F84708083CC047042A01A4404702B8
-:104E900001C3C5A04711083C20F04708083C20B0DA
-:104EA00047032050A04703043C471202083CC04778
-:104EB000070100083DE0470501B1404703C3C5A015
-:104EC000184710083C470A083C4702C047033B7C90
-:104ED0002047033C0103470D0E010020083C6047BA
-:104EE00003804705083CE047038400012447020291
-:104EF00000AA85A101000C470B028000083C20009D
-:104F0000044707083C2010E147020200B447042A86
-:104F10008100080004470272009011030101470854
-:104F20000247060847040247080780044702204753
-:104F30000680470C01470604470401470D10472A25
-:104F40000847160247060847040247060847062096
-:104F5000470680471F024703044729034729A04704
-:104F60002D10471E0200404704080147030200407D
-:104F70004704080107804703200447058010474580
-:104F800001470603470D204718024706034703045D
-:104F90004709C0470340472B38472108470B4000CB
-:104FA00080470A80470502470580470502470518E4
-:104FB000084706202C471101470F04470D400030D9
-:104FC000C0472B1030C0472C30C0472B1030C04793
-:104FD0002C30C0471004471801001030C0470F8024
-:104FE000471C30C0472B1030C0472C30C0472B1017
-:104FF00030C0470E10471D30C0470A0200140B474F
-:105000001D1030C0470C28E1471E30C0471B044725
-:105010000F1030C0471B0A471030C0470B20280B29
-:10502000471D1030C0470C14E1471E30C0472B10FD
-:1050300030C0472C30C0472533069047031030C09E
-:1050400047242031A480470430C0472B1030C0478C
-:105050002C30C047253C0247041030C04723048051
-:105060003C14470530C04708804721801030C047B6
-:105070002901400030C047270147031030C0472CAA
-:1050800030C0470A80471D0A47021030C047280138
-:10509000470330C0471D0300F047070547031030A2
-:1050A000C0471FF147070D9A470330C0471702A8B2
-:1050B00009704705404706010800041030C0471139
-:1050C00080470501544147041000796047050801F5
-:1050D00000080030C047150447023C47060B404714
-:1050E00003802A81000847021030C04715020007DC
-:1050F000C05847041008684704AA85E1994703305F
-:10510000C047183C1047050301428047023C470551
-:105110001030C0471707C04A470410086A06C04746
-:1051200002C3C5A0470430C0470F04470530000242
-:105130005A40470503014047033C47051030C0472C
-:105140000F0A4707065848470410086B6680470255
-:10515000C3C5E00080470230C0470FF047083C104D
-:105160000847040B41428047023C0147041030C00D
-:10517000470F10470707C05A38470310002A06C0D8
-:105180004702C3C4E018470330C04711C0470502B7
-:105190005A500147040B41428047023C010147033A
-:1051A0001030C0470E50470280470506585E71C058
-:1051B000470210002B66C04702C3C4AF00A04702DD
-:1051C00030C04717025A504705034704013C4705C2
-:1051D0001030C047100180470506584870E047026C
-:1051E000100028470301C3C4E04702180030C0473D
-:1051F0000B083C47090100014098470401000340A7
-:1052000047023C3647041030C0470B083D60470951
-:1052100004470238E0470210002800404702C3C498
-:10522000E7470E3C47021010D9470D04470506C05A
-:105230004702080247112000034B470D02470502B1
-:10524000800010081CE0470D0200084704020020FF
-:105250004703028047041047041BB842C0470210AE
-:1052600080900902470B1C470C01470A073E470381
-:105270001014979598471301E04707016BCA99905E
-:1052800047093016B500024713F0470701606999D6
-:1052900090470506804702103488470F08470401ED
-:1052A00000204704040002A8100847030A00836492
-:1052B000471580470401E04705020202A85C184731
-:1052C000030A037942804718D9F0470702003C10CF
-:1052D00000E04704704704069E901B47110B4B806B
-:1052E000E0470707C05C001000040807B04703014F
-:1052F000A94F800A470E053203D42008B0024705A3
-:1053000008003C47020A470240A08047042801DD0C
-:1053100080470F3003D56A7880024704300007C009
-:105320005C00044703A37847051C95471E3C4702D1
-:10533000A047090E01AD1A470E01604703784708E0
-:1053400017C05C00104708100617900A001847079E
-:10535000020F4705A0014C470602900147021000CA
-:10536000E04702080B38470534A01B4709920F7825
-:105370004705824D470601470204000C0010470311
-:1053800003BC000447020216950A471103D04702E6
-:105390002047040604003C2047032020F0804704F7
-:1053A00002378009471004001A7881470501041864
-:1053B0003C6047032020F78166800201802CE04793
-:1053C00003023FC04709024703D070002047040290
-:1053D0004706202020F001428080001382990902B4
-:1053E00000443FC04709010004001A8180470B01B7
-:1053F000002020F30366C00012A346054713404770
-:105400000A3C470280003020F047051E81002947F2
-:105410001004021A01E0470604183C60470420F714
-:1054200080E04702101E8CC0470E01470301C009EF
-:10543000E02847097008002060F0804400800008E0
-:105440004E810A0080470B02470204021A79F004D9
-:10545000470B200020F3800700800004B4084712A7
-:1054600002D050A04707603C2047032060F08047EF
-:1054700002500010038D471104000A50A00847068F
-:10548000183C4047032020F7470410001D80470EBA
-:1054900001470203C25010A04707229447048060CE
-:1054A000F080470202003040C79F470D028000078E
-:1054B000C0CAD04707081A9408470201E020F747FE
-:1054C00003031030941F0E471003C06047020447C7
-:1054D000050C02940050A0006060F047052001ED2B
-:1054E00080471007C1EE01E0804705080A9408478D
-:1054F00002010020F7470306100014A547021847D1
-:105500000B01470203C040508447060C01680C5051
-:10551000A0003860F0470502810D1F40470C02478C
-:105520000207C0EA00B84705020A0A940100A04732
-:105530000220F74702084000029EE00A471042A8F6
-:10554000103080004047112047040B47100AA85A2A
-:10555000001000C0471150471543C0100080470895
-:105560003C470401010F34028047020142000E470C
-:10557000100C3C5A01904707083CE04705073140B2
-:105580004702208155E0471123C0003047093C0005
-:10559000080040008000A0000347160C3C5A0001A0
-:1055A0004707083C6071804703512047070E4710AA
-:1055B00023C0470201C047073C20008080000FF055
-:1055C000A14047170C3C5E4709083C400190470248
-:1055D0008FA5200280470401471123C010104709FE
-:1055E0003C204703010103B8001000402042E09036
-:1055F00047100C3C4A99804707083C404704020783
-:1056000047022000100056879E471023C010104705
-:10561000093C00084702C04702014047031C16B17D
-:1056200047110C3C4A984708083CC058470280473D
-:1056300007102DD0471143C0470B3C470280004064
-:1056400047040347160C3C4E470201804705083CBF
-:10565000C0001001470520470718470E43C2E04726
-:105660000A3C2010470501428047050D47100C3FBA
-:10567000EE4709083CE098470602804705011047BD
-:105680000C40471A6300294000100020470B704768
-:10569000088047111200A9408018470D40024704B6
-:1056A00008472720014704384712064706180040DC
-:1056B000472503004003C20010472701470283D655
-:1056C0000018470E30470401470C04470540471BAC
-:1056D00080470B02470402470240470F0F068047EE
-:1056E00003083C000147050285470B0447020402FA
-:1056F00081C047090102007A804703083D400080CD
-:1057000047040102470B074703A804B18A470D2845
-:105710000002083C20014702C0470408403C000842
-:105720008000802A5034024702840281E108470C3D
-:10573000064703083C6001E000C047034000183CF6
-:10574000605010148025A04702404702E804B98148
-:10575000470F50083C470B3C20014702402AA0401D
-:10576000470201000280C0471050083D607A0001E6
-:10577000804705183D4000A001002AA730470204D9
-:1057800005E804F00A2018470C7000483C4707025F
-:10579000700023C000700447022E7B3847030602C6
-:1057A00094E00E4710083CC047090BC140000A476F
-:1057B0000222402800054702E826B00147031006F0
-:1057C000B04704807E80470301541847080800B0A2
-:1057D0001908D04705034047022A81470580BEF1DA
-:1057E000984702020276803847022295EA01E100DA
-:1057F000804704010A75E971F0470401E0400201A5
-:105800002A96E7804705D010470280AF0654300043
-:1058100002017C0B470601470202F43C470480501A
-:10582000BC6047020430E6D047048286B01C4703C0
-:10583000053376684703147D4707800101417918D5
-:1058400008C00040A187E0470391E7B180470320EB
-:1058500004A1470484128228470209680908804786
-:105860000702BC2A7180470401E047033E82091900
-:10587000470380A5E847030200F20E6C47020A9432
-:105880000139E1C0470714FA01C04705E047033E6C
-:1058900094C009470303C14705AF0E4260020209E5
-:1058A00068087047080154087047034000FC47052A
-:1058B00015910F470343C4A0470304053A46280542
-:1058C000000A940080470802955E800800040011D9
-:1058D00064470554A8470403C10100180008550A8D
-:1058E000470420141C470601470202BC3A70804757
-:1058F0000205008002470303C0001E470343C5ADF5
-:105900009A4703A51F86470302BD6950A04705803B
-:10591000470215EC80B04702050121404047028351
-:10592000D6000A470303C0050A4703403604204750
-:1059300002083C20084702804702024703D82F088C
-:10594000F04702A8503C002047023C00D59B47038B
-:1059500043C4880147020220D2A0644702083CE009
-:10596000504702C047040148D47A701000042475DF
-:10597000F847043C15C38A470303C04703100004DB
-:1059800003CC004040083C4708040001C019D84738
-:10599000030500BC0020008028B5918A470343C559
-:1059A000A01E001042205220600050283CE0798068
-:1059B000018047040102E8EBB80001800007A16004
-:1059C0000006001407E947021847023D000D0002D7
-:1059D00000050AC03C47047C10F0470702A809D024
-:1059E000A540002CBD746247022030CE8D47044094
-:1059F00021A01B4703A557542802002040F980B07E
-:105A0000470401470202955D800847022C3DF7607C
-:105A100040200020F4950A470472008011006200C3
-:105A20002F824702010347041000080010100202F1
-:105A3000040022002020000804240447070804472B
-:105A4000032004002020202400082C040C0C470311
-:105A50000410100C00100008470308084703083022
-:105A60000030300400222606040800040400044725
-:105A7000042008000C000828000C0008002808007A
-:105A80001008082808470228282847020C10101080
-:105A900024000224242C2C0400282C2101080011AD
-:105AA0003010200004220222470320202030040866
-:105AB0003010001008000404040400040004470629
-:105AC00008000408080847020847022424040004C8
-:105AD0002C2C282847022101211004083010201006
-:105AE000470220002020080420202000044704044E
-:105AF0000800040404040010101010100006081020
-:105B000008080302470204040802042424240400B1
-:105B10002C2C2820020021012100020A200028004C
-:105B200008022828203004003030102000024702EC
-:105B300004000A02040400140006101010080447B0
-:105B40000208080008020C040C2C02022C2C2C2C3D
-:105B50000006282A2A470208220022000C022002FE
-:105B600020204702202030300202507040000A0EF0
-:105B70000C080C044703040010080810100212045B
-:105B80000002202020080824242400020247040ADE
-:105B90000E47030204470206240608082C2428287E
-:105BA0000202201030100E0A201028084702280098
-:105BB00020200A08203030180400021A0A040A0AB9
-:105BC0000C040C0C470208082808020C08082808D6
-:105BD0000C02280A280200080802200808002028D1
-:105BE0002010000C1010041008020404280C0408F3
-:105BF00028202121080031303020060E22222220C8
-:105C00000E0620470220040C101010000A47020460
-:105C10000404000C040447020A02470208000608B4
-:105C2000080A02080800060406040206082A284793
-:105C30000321213130060A303020200202202020AA
-:105C4000000804002010000600100010000C0400E2
-:105C50000404040616141010100206181008080197
-:105C600047020804040A020404040604082A0C2A51
-:105C7000220A0223232322000822222A200A0228A1
-:105C80002A30100400101000080202000808000862
-:105C9000000C040C0C020618081818040008180858
-:105CA000080A020C0C0C0600080E04220E0A06223A
-:105CB0002A22220008222222220C0222222222024E
-:105CC0000032001010000240504000020C08080C86
-:105CD00004080A04044703081010121204000247C3
-:105CE00002200E04240424200C0E02000202020CE6
-:105CF0000202020204020602060602080A262A0816
-:105D0000080B303030300608202028284702820057
-:105D10008001030002282828000208082818180E0D
-:105D2000091A1A0A080208080C0C0C00020C0022BE
-:105D300008000E020A2202060302022202080802DA
-:105D40000222020808222030100204101404040861
-:105D500000040008080408080001210200113010A6
-:105D600020080E022202000A084705021000101047
-:105D70000247021000040A0C04040006080802008E
-:105D80000A0206000A0A020E0A00060606020004BB
-:105D90000A0A0A02020013011130040A003000202E
-:105DA00002470508061047030647050208100004CD
-:105DB00047031414101000021810181801470208A5
-:105DC00004060200060606020C080A0A0A00080A6F
-:105DD00003010320470202200A020A001A0A1A12CB
-:105DE0000400081A08080002080808080800080C3F
-:105DF0000C0C02040C001810040010180010000213
-:105E0000040606060808060202000A0C0002000248
-:105E100047032000220C020002120002001212129C
-:105E200002470240424047020C08080804000204EE
-:105E3000040447041012120400124703020004066F
-:105E40000602470202020202470202470206040259
-:105E50000406060002000A021A0A000112120032A9
-:105E60000447022008200002080808080200080071
-:105E700008100403121A120847040402020206065C
-:105E80000202000422020200060100020002470290
-:105E90002200020A47023A2A321A020404120404B7
-:105EA000470408080400080001010200111010470F
-:105EB00002040202024708024702101002001010FA
-:105EC0000010000604060602470202020A0006004D
-:105ED000080A04020002040400020004080A0A106E
-:105EE000020013131302044702024706104702067A
-:105EF00047021000060010001047020A470214472C
-:105F000003141410040002180018180001101206DF
-:105F100016020006060200040008080847020201F3
-:105F2000010147041018100200181A1A0A04000A86
-:105F300002080200020008000847040404020404E6
-:105F40000400100400101012100002160606064786
-:105F50000302470202040808084706100402100062
-:105F600010100200100202020400020200020008E7
-:105F7000080808080002040404044704120204008C
-:105F8000121010120200061606024703024706040A
-:105F90000004000404001402001818181A0001126A
-:105FA0000202020400024702080002080800080278
-:105FB00047050401120212104702101206120002D5
-:105FC00006060006000447022000060120002047C4
-:105FD000041018104702383A320A02040606060472
-:105FE0004702110162003F8247020103470802474E
-:105FF00008024706010147062020470620204706E1
-:10600000042047064004470740470E8584470701A0
-:1060100047068047088047060202470602470802F3
-:10602000471E04470804471E0404471E2047072054
-:10603000204706202047060147080147360101474F
-:10604000164247084247060202470E212047062013
-:1060500021470610204706141447065050470610E3
-:1060600010470610104706951147061094470690F2
-:106070009047061010470602104706020247260402
-:1060800004472604470804471E20470720204706E8
-:10609000202047060101472E01470801471E4242C2
-:1060A00047070247063020470630304706111147A0
-:1060B00006141047065014470610504706101047A4
-:1060C0000611104706101147069494470610904792
-:1060D0000610104706121047061212470610104706
-:1060E0000710470E04470804472E0404472E2020BB
-:1060F0004706212047070147260101470882008003
-:106100000103472052024706305247063030470607
-:106110001010470611104706041547064040471661
-:106120000101470E84470804470E12024706121069
-:1061300047061012470610104706101047060414B1
-:10614000473604470804472E202047060121471EF2
-:10615000014708014716104707121047063012473B
-:10616000067272470710470E04470741054707406C
-:10617000470E014708014716040447060247080274
-:10618000470E020247061047071010470610104737
-:1061900006101047071047662120470721471601C0
-:1061A0000147161047071010470612124706203005
-:1061B0004706422047074247164140470701470E1E
-:1061C000010147260202471602470802470E104700
-:1061D00007101047061010470710475E2047072199
-:1061E000214708110262002F824702010347081B62
-:1061F0001B47041F1B4704041F47101B47051B1B9D
-:1062000047041F1B47041F1F47101B1B47041B1B72
-:1062100047041F1F47041F1F47051B470A1B1B4737
-:10622000051B4704040447041F1F47051B470A1B9F
-:106230001B4704E4FB4704E4E447041FFF47051B36
-:10624000470AF9194704E4F94704E4E44704F7F777
-:10625000470513470AF9F94704E4F94704E4E4471A
-:1062600004F7F74705F3470AF9E9470414FD470423
-:106270001E1C4704F7FF4705E1470AE9E947041CEC
-:10628000FD47041E1A4704EFFF4705E1470ADDC931
-:1062900047041EDD47043E3A4704BDBF4705A947F2
-:1062A0000ADDD94704A2FF4704A6A24704BDBD47A3
-:1062B00005B9470AFFDD4704A6FF47048486470463
-:1062C000BDBD470404BD470AFFFD470406FF470460
-:1062D000040447043D3D4704043D470AFFFF4704CB
-:1062E00006FF470404044704FDFD470404FD470A74
-:1062F000FBFB4705FB4704244705FDFD4705F94720
-:106300000AFBFB4704FBFB4704FFFB4704FFFF4777
-:1063100005FB470AFB224704FBFB4704DFFB47045E
-:10632000FFFF470522470A22024704FBFB4704DF21
-:10633000DB470426FF4705224780028200800103D5
-:1063400047022C2C47041F3E47041F1F4704CCDE86
-:106350004705C8470A3E2C47041F3F47049F1F4775
-:1063600004DEDE4705C8470A3F3E47041F3F470497
-:106370009F9F4704DEDE4705DA470A3736470401A8
-:10638000374704898147045ADA470552470A763667
-:106390004704C1F64704A9814704FAFA4705D247E2
-:1063A0000A74744704C1F44704A9E94704F2FA47A0
-:1063B00005F2470A74744704E5F44704EDED470419
-:1063C000F2FE4705F2470A7474470427744704CF66
-:1063D0008F470476FE470570470A747447041F749C
-:1063E00047049F9F470474F6470574470A7464473F
-:1063F000041B7447049B9B470476F6470574470AC1
-:1064000060604704197047048999470476F6470588
-:1064100076470A6060470409604704898947047623
-:10642000F6470576470A64644704096C4704818986
-:10643000470476F6470576470A76764704097E478D
-:10644000048189470476F6470576470A767647043D
-:10645000297E4704C189470476F6470576470A77BF
-:106460007647047F7F4704F7FF470477F7470576B1
-:10647000470A776047045F7F4704B7FF470477F711
-:10648000470560470A612047045F7F4704B79F477D
-:106490000461F7470540478002110362003F8247CD
-:1064A00002010347838282008001034783822244E2
-:1064B000B2010600470000000000000000000000DC
-:1064C00000040240000400000A0009000014024019
-:1064D000000400000A000900000C0240000800004F
-:1064E0000B00090000080240000400000A00090037
-:1064F0000014024080000000070009000000024074
-:106500000200000001000900001C02402000000001
-:1065100001000000001C0240080000000100000013
-:106520000000024000080000010000000000000818
-:106530000080000800000108008001080000020837
-:10654000000004080000080800000C080000100803
-:10655000000014080000180800001C0800000800D3
-:1065600010001800200028003000380040004800CB
-:1065700050005800000000006410B71DC8206E3B9A
-:10658000AC30D9269041DC76F4516B6B5861B24D3A
-:106590003C7105502083B8ED44930FF0E8A3D6D6A4
-:1065A0008CB361CBB0C2649BD4D2D38678E20AA00C
-:1065B0001CF2BDBD4932435F504D49435F4D4147D9
-:1065C00000537475636B20627574746F6E2072650E
-:1065D00067697374657220697320696E76616C698E
-:1065E000642C20636C656172696E672E004275745D
-:1065F000746F6E2069642000697320737475636B17
-:106600002100427574746F6E20776173207075730A
-:10661000686564206F6E20626F6F742E20427574FF
-:10662000746F6E20636F756E7465723A20004469F2
-:1066300073706C617920627573792D77616974204C
-:1066400074696D656F757420657870697265642111
-:10665000004650474120636F6E66696775726174CA
-:10666000696F6E206661696C65642E0044697370A1
-:106670006C617920696E697469616C697A656420FE
-:106680006166746572200020726574726965732E8C
-:1066900000446973706C617920696E697469616C1A
-:1066A000697A6174696F6E206661696C65642E0039
-:1066B000435245534554206E6F74206C6F772064AD
-:1066C0007572696E672072657365740043444F4E3E
-:1066D00045206E6F74206C6F772061667465722040
-:1066E000726573657400435245534554206E6F7450
-:1066F00020686967682061667465722072657365D9
-:10670000740043444F4E45206E6F7420686967687B
-:106710002061667465722070726F6772616D6D6959
-:106720006E6700456E61626C696E67203676362052
-:1067300028446973706C61792056444443290045AC
-:106740006E61626C696E6720347635202844697307
-:10675000706C617920564444502900446973616229
-:106760006C696E67203476352028446973706C61DB
-:10677000792056444450290044697361626C696E03
-:1067800067203676362028446973706C617920560C
-:1067900044444329002E2E2F7372632F647269764E
-:1067A0006572732F6932632F6932632E63002E2E58
-:1067B0002F7372632F647269766572732F69326307
-:1067C0002F6932635F68616C2E63004661737420C9
-:1067D0004D6F646520506C7573206E6F7420796501
-:1067E0007420737570706F72746564002E2E2F7331
-:1067F00072632F647269766572732F706572697047
-:10680000685F636F6E6669672E63006164647265BA
-:1068100073732000206973206F7574736964652039
-:1068200073797374656D20666C6173680066616965
-:106830006C656420746F2065726173652073656395
-:10684000746F72200050726F6772616D20666169AB
-:106850006C6564204000496E76616C6964206669ED
-:10686000726D7761726520646573637269707469B3
-:106870006F6E2100436865636B73756D6D696E673C
-:10688000206669726D7761726520757064617465E8
-:106890000043616C63756C61746564206368656353
-:1068A0006B73756D3A2000496E76616C6964206681
-:1068B00069726D776172652043524320696E20537F
-:1068C000504920666C61736821007072765F657252
-:1068D0006173655F6F6C645F6669726D7761726525
-:1068E000007072765F77726974655F6E65775F6658
-:1068F00069726D77617265005765277265206465FE
-:10690000616400436865636B73756D6D696E6720C4
-:10691000002062797465730D0A00436865636B73C8
-:10692000756D202D2077616E746564200020676F7F
-:106930007420004F757220696E7465726E616C20F0
-:10694000666C61736820636F6E74656E747320612A
-:106950007265206261642028636865636B73756D7E
-:10696000206661696C656429212054686973206917
-:1069700073207265616C6C792062616421004F75CF
-:10698000722070726576696F7573206669726D77B3
-:1069900061726520757064617465206661696C65FB
-:1069A000642C2061626F7274696E67207570646117
-:1069B00074652E004E6577206669726D7761726529
-:1069C00020697320617661696C61626C6521004C9D
-:1069D0006F6164696E67207265636F766572792096
-:1069E0006669726D77617265004661696C656420E5
-:1069F000746F206C6F6164207265636F7665727965
-:106A0000206669726D776172652C20737472696B90
-:106A100065206F6E652E2054727920616761696E02
-:106A20002E004661696C656420746F206C6F616430
-:106A3000207265636F76657279206669726D776121
-:106A400072652C20737472696B652074776F2E20C9
-:106A500054727920616761696E2E004661696C65C8
-:106A60006420746F206C6F6164207265636F76655B
-:106A70007279206669726D776172652C2073747209
-:106A8000696B652074687265652E205341442057F8
-:106A9000415443480048415244204641554C54001B
-:106AA00065786974207374616E646279000D0A0DF3
-:106AB0000A0D0A00E29688E29688E29688E29688B5
-:106AC000E29688E29688E295972020E29688E29600
-:106AD00088E29688E29688E29688E29688E2959720
-:106AE00020E29688E29688E29688E29688E2968886
-:106AF000E29688E2959720E29688E29688E2968868
-:106B0000E29688E29688E29688E29688E29597E295
-:106B10009688E29688E29688E29688E29688E296DF
-:106B200088E2959720E29688E29688E29688E29637
-:106B300088E29688E29688E29688E29688E29597BF
-:106B400000E29688E29688E29594E29590E295902C
-:106B5000E29688E29688E29597E29688E29688E245
-:106B60009594E29590E29590E29590E29688E2966F
-:106B700088E29597E29688E29688E29594E295906D
-:106B8000E29590E29688E29688E29597E29688E20E
-:106B90009688E29594E29590E29590E29590E29540
-:106BA00090E2959DE29688E29688E29594E295902F
-:106BB000E29590E29688E29688E29597E2959AE2CD
-:106BC0009590E29590E29688E29688E29594E29517
-:106BD00090E29590E2959D00E29688E29688E29692
-:106BE00088E29688E29688E29688E29594E2959DFE
-:106BF000E29688E29688E29591202020E29688E24B
-:106C00009688E29591E29688E29688E29688E296E6
-:106C100088E29688E29688E29594E2959DE29688CD
-:106C2000E29688E29688E29688E29688E295972036
-:106C300020E29688E29688E29688E29688E2968834
-:106C4000E29688E29594E2959D202020E29688E2E3
-:106C50009688E2959120202000E29688E29688E2CC
-:106C60009594E29590E29590E29688E29688E29576
-:106C700097E29688E29688E29591202020E2968815
-:106C8000E29688E29591E29688E29688E29594E20F
-:106C90009590E29590E29688E29688E29597E29642
-:106CA00088E29688E29594E29590E29590E2959D2F
-:106CB0002020E29688E29688E29594E29590E2950B
-:106CC00090E29688E29688E29597202020E29688C6
-:106CD000E29688E2959120202000E29688E296884C
-:106CE000E295912020E29688E29688E29591E295DD
-:106CF0009AE29688E29688E29688E29688E29688FA
-:106D0000E29688E29594E2959DE29688E29688E282
-:106D10009688E29688E29688E29688E29594E295D3
-:106D20009DE29688E29688E29688E29688E29688C6
-:106D3000E29688E29688E29597E29688E29688E263
-:106D400095912020E29688E29688E2959120202075
-:106D5000E29688E29688E2959120202000E2959ABA
-:106D6000E29590E2959D2020E2959AE29590E29539
-:106D70009D20E2959AE29590E29590E29590E295B9
-:106D800090E29590E2959D20E2959AE29590E295A9
-:106D900090E29590E29590E29590E2959D20E295A3
-:106DA0009AE29590E29590E29590E29590E2959026
-:106DB000E29590E2959DE2959AE29590E2959D206C
-:106DC00020E2959AE29590E2959D202020E2959A06
-:106DD000E29590E2959D202020004C61737420661E
-:106DE00069726D7761726520626F6F74207761736D
-:106DF00020737461626C653B20636C656172207303
-:106E00007472696B657300486F6C6420646F776E91
-:106E1000205550202B204241434B202B2053454CE2
-:106E200045435420666F72203520736563732E20AE
-:106E3000746F20666F7263652D626F6F742050529D
-:106E400046004669726D77617265206973206572CC
-:106E500061736564005761746368646F6720636180
-:106E600075736564206120726573657400536F6685
-:106E70007477617265206661696C75726520636103
-:106E8000757365642061207265736574004661697D
-:106E90006C656420746F207374617274206669720B
-:106EA0006D776172652C20737472696B65207468EC
-:106EB0007265652E004661696C656420746F20738D
-:106EC00074617274206669726D776172652C2073CB
-:106ED0007472696B652074776F2E004661696C650A
-:106EE0006420746F207374617274206669726D77A8
-:106EF0006172652C20737472696B65206F6E652EEC
-:106F000000466F7263652D626F6F74696E672072E1
-:106F100065636F76657279206D6F64652E2E2E0025
-:106F2000456E61626C696E67207761746368646F37
-:106F30006700426F6F74696E67206669726D776172
-:106F40007265204020002E2E2E0D0A0D0A00426F81
-:106F50006F7420626974733A2000536F66747761AE
-:106F60007265206661696C7572653B207265736538
-:106F70007474696E6721004153534552543A20009E
-:106F80003A00415353455254004153534552544ED5
-:106F9000002A2A2A20575446200053544D333200E9
-:106FA00053544D3332207065726970686572616C3C
-:106FB000206C6962726172792074726970706564A4
-:106FC00020616E206173736572740069746F612053
-:106FD00062756666657220746F6F20736D616C6C8C
-:106FE000002E2E2F7372632F7574696C2F736C656E
-:046FF0002E6300000C
-:106FF400FF00000000010203040102030406070865
-:04700400090000007F
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/boot_robert_bb@1478015115.bin b/bin/boot/boot_robert_bb@1478015115.bin
deleted file mode 100755
index ad5cb98e67..0000000000
Binary files a/bin/boot/boot_robert_bb@1478015115.bin and /dev/null differ
diff --git a/bin/boot/boot_robert_bb@1478015115.hex b/bin/boot/boot_robert_bb@1478015115.hex
deleted file mode 100644
index b548adf66e..0000000000
--- a/bin/boot/boot_robert_bb@1478015115.hex
+++ /dev/null
@@ -1,1798 +0,0 @@
-:020000040800F2
-:1000000000AA0120E1250008DD2500081D1E0008CA
-:10001000DD250008DD250008DD25000800000000C2
-:10002000000000000000000000000000DD250008C6
-:10003000DD25000800000000DD250008DD250008A2
-:10004000DD250008DD250008DD250008DD25000888
-:10005000DD250008DD250008DD250008DD25000878
-:10006000DD250008DD250008DD250008DD25000868
-:10007000DD250008DD250008DD250008DD25000858
-:10008000DD250008DD250008DD250008DD25000848
-:10009000DD250008DD250008DD250008DD25000838
-:1000A000DD250008DD250008DD250008DD25000828
-:1000B000DD250008DD250008DD250008DD25000818
-:1000C000DD250008DD250008DD250008DD25000808
-:1000D000DD250008DD250008DD250008DD250008F8
-:1000E000DD250008DD250008DD250008DD250008E8
-:1000F000DD250008DD250008DD250008DD250008D8
-:10010000DD250008DD250008DD250008DD250008C7
-:10011000DD250008DD250008DD250008DD250008B7
-:10012000DD250008DD250008DD250008DD250008A7
-:10013000DD250008DD250008DD250008DD25000897
-:10014000DD250008DD250008DD250008DD25000887
-:10015000DD250008DD250008DD250008DD25000877
-:10016000DD250008DD250008DD250008DD25000867
-:10017000DD250008DD250008DD250008DD25000857
-:10018000DD250008DD250008DD250008DD25000847
-:10019000DD250008DD250008DD250008DD25000837
-:1001A000DD250008DD250008DD250008DD25000827
-:1001B000DD250008DD250008DD25000861070008B1
-:1001C0006D070008DD25000800000000DD2500089F
-:1001D000DD250008DD250008DD250008DD250008F7
-:1001E000DD250008DD250008DD250008DD250008E7
-:0801F000DD250008DD250008F3
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0D6BF00BFE42B0008014801F0AB
-:1007700038B800BFE42B0008014800F0F9BD00BF05
-:10078000E42B000837B50024012002F007FA01909D
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F0E1F9002020E001339E
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F0BFF92846C9
-:1008000003B030BDC1650008ED650008F86500085B
-:100810000266000808B500F077FB80F00100C0B266
-:1008200008BD000008B50C22044B02FB003000F0AC
-:100830008DFC80F00100C0B208BD00BF842C000810
-:1008400010B5002401F094F8054820440C34017AD6
-:1008500000F062FC302CF7D1BDE8104001F089B8FF
-:10086000842C0008044BDA691106FBD59862DA691A
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F075F828464FF48021EC
-:100890001E4C01F06FF82B68642623F0010394E8E6
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F013FC03AB94E8070083E8070045
-:1008C00000211846022200240B4600F007FC06A86F
-:1008D00002F07AF8089821460D4A70430023FFF78A
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240B42C00083D
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F01FF931468A
-:100980004A46002001F070FD07F1080304F5927457
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F030FD044655206C44FFF752
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F08338000020CC2C000809
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F044FD01A8FFF709
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F010FDF1E7012010BD00BF92
-:100A90002E66000810B5074C43F2CD71064848F6A3
-:100AA000B803224601F056FD01462046BDE810403D
-:100AB00000F0E4B83C010020E92C000810B500F07B
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B2000516600086C660008876600089166000838
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F065BC00BF1A
-:100BE000342C0008024B1868403000F0AFBA00BF48
-:100BF000342C000838B5204B012200211C6804F178
-:100C00002005284600F03CFA0021284600F052FA60
-:100C100004F1380000F094FA04F1400000F090FA7A
-:100C2000012104F12C000A4600F02AFA002104F107
-:100C3000080001220B4600F051FA0021012204F1C4
-:100C400014000B4600F04AFA6068012101F06EFFC3
-:100C50006068002101F06AFF94E8030000F08AFE5A
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD342C00082B4B2DE99D
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F009FC384604
-:100CA000012100F007FA0021304600F003FA01208C
-:100CB00001F0FEFB684600F049FA054620B11C48E9
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000F1F9012001F0ECFB204600F037FA06465E
-:100CE00008B114481BE0684600F030FA054608B920
-:100CF000114814E0012001F0DBFB48464146FFF7B4
-:100D000055FF3846314600F0D5F90C480921FFF768
-:100D10004DFF204600F01AFA054610B90848FFF7C3
-:100D200081FE284603B0BDE8F08300BF342C0008E4
-:100D3000B0660008CC660008E6660008B6640008E5
-:100D40000267000808B5022001F0B2FB0A4B1B68DD
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D3FD022001F0A4FB0548FFF75BFE012044
-:100D7000BDE8084000F0C2BD342C0008236700081D
-:100D80003F6700080F4BF7B51C6802AD0F46012105
-:100D9000203405F8010D1646204600F08BF964203A
-:100DA00001F082FB28460121FFF700FF1EB1384603
-:100DB0003146FFF7FBFE2046002100F07BF903B02F
-:100DC000F0BD00BF342C0008F0B50746ADF2044D6D
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0CCF8C2
-:100DF000284669464FF4806201F036FB0546EAE773
-:100E0000224600F0C1F869462246284601F02CFB34
-:100E10000DF2044DF0BD08B5202001F09FFD002823
-:100E2000FAD108BD08B5022001F098FD0028FAD0DB
-:100E30000220BDE8084001F09BBD00B58DB06846BA
-:100E400001F015FD0023684600934FF480730A9368
-:100E500035230B9301F03CFDFFF7E4FFFFF7DBFFC9
-:100E60000DB05DF804FB000030B5002495B02448B7
-:100E7000022100F07FFD23480021032220440C348E
-:100E80000B4600F02BF9482CF5D101A8002401F005
-:100E9000E5FC102301A802940193172303944FF457
-:100EA0004075059304940694079401F0EFFC01202B
-:100EB00001F032FDFFF7C1FF08A801F0D8FC66235E
-:100EC00008A808941393129501F002FDFFF7AAFFFA
-:100ED00008A801F0CCFC992308A808941393129554
-:100EE00001F0F6FCFFF79EFF4CF2503001F0DCFA07
-:100EF000FFF7A3FF0248022100F046FD15B030BD08
-:100F0000001000A0C064000830B502218DB01C485C
-:100F100000F030FD022001F013FD684601F0A7FC4F
-:100F20004FF08063684600934FF0407304934FF492
-:100F300040730A93AF230B9301F0CAFCFFF772FFD3
-:100F400001F006FD054601F003FD044601F000FD39
-:100F5000240244EA004040EA0504FFF75CFF094B25
-:100F60009C4204D020460024FFF763FD00E00124EA
-:100F70000348022100F008FD20460DB030BD00BF3F
-:100F8000001000A020BB190070B515468CB00446B7
-:100F90000E461B48022100F0EDFC681E01F0D0FC5B
-:100FA000684601F064FC4FF0806368462544009376
-:100FB0004FF0407304930A2305934FF44063099361
-:100FC0004FF440730A934FF4005308930B230B9391
-:100FD00001F07EFC304601F0ABFCAC4204D001F0E5
-:100FE000B7FC04F8010BF8E7022001F0C1FCFFF7A1
-:100FF00012FF0348022100F0C7FC0CB070BD00BF17
-:10100000001000A0034A136B23F4FF6323F00703CF
-:10101000136370470038024000F13F4000F57E0046
-:10102000C0F387200A280AD8054A135C591C1154BA
-:101030002BB9044901230A6B834013430B637047A8
-:10104000F48900200038024000F13F4000F57E00A6
-:10105000C0F387200A280DD8074A135C53B1013B1F
-:10106000DBB2135433B9054901230A6B834022EAEA
-:1010700003030B63704700BFF4890020003802406F
-:10108000436813B500930123044600688DF80430CB
-:1010900000238DF805208DF807308DF80610FFF736
-:1010A000BBFF2068694601F063FB2068FFF7CCFFB7
-:1010B00002B010BD38B5037A04460D460BB981F075
-:1010C00001052068FFF7A8FF2068A1882A4601F0E3
-:1010D0008DFB2068BDE83840FFF7B6BF13B5044666
-:1010E00040688DF80730009002208DF805208DF8BB
-:1010F000040020688DF80610FFF78EFFA27A2068A2
-:10110000218901F077FB2068694601F031FB2068F6
-:10111000FFF79AFF02B010BD002313B504460193F8
-:101120004368006800938DF80710FFF775FF20688B
-:10113000694601F01DFB2068FFF786FF02B010BD75
-:10114000036813B10021FFF7E7BF704738B50446C5
-:101150000068FFF761FFA188206801F041FB0546A8
-:101160002068FFF771FF281C18BF012038BD1FB58C
-:10117000836804460093C36868460193FFF7E0FF65
-:10118000636902A80293A3690393FFF7D9FF04B030
-:1011900010BD10B504460121083002220023FFF7DC
-:1011A0009DFF04F11400012102220023BDE810403C
-:1011B000FFF794BF0368DB6910B5044673B9C36ACF
-:1011C00063B10A2001F074F92046FFF7D0FF2046F2
-:1011D000E36A01219847142001F06AF92046FFF7DD
-:1011E000D8FF2046BDE8104000F0E0B910B5044635
-:1011F00000F04FFA48B10A2001F05AF9204600F0F9
-:1012000048FA80F00100C0B210BD012010BD30B519
-:10121000044687B0C36A00219847A36800210125CE
-:1012200000936846E3680A468DF808500193FFF77B
-:1012300027FF68460021FFF73DFF6369002103A8EF
-:101240000393A3690A468DF814500493FFF718FF1F
-:1012500003A80021FFF72EFF07B030BD10B50446EC
-:1012600000F00AFA2368DB6933B9E36A4BB1204620
-:10127000BDE81040FFF7CBBF2046BDE81040FFF7A8
-:1012800076BF10BD10B50446FFF7E8FF2046BDE865
-:101290001040FFF78FBF00002DE9F3419846036827
-:1012A00004460E46DB6917460BB900205BE000F0F0
-:1012B000F0F9B8B9256814220021284601F089FC0C
-:1012C0009DF828306F8020466B71089B2E71AB60B3
-:1012D000099B85F806802B6100F0ECF92368002259
-:1012E0009A6111E02046FFF7CDFF2046FFF77EFF11
-:1012F0000028DFD1D9E79A69B2F57A7F23DA013283
-:1013000002209A6101F0D4F8204600F0DFF90122B2
-:10131000236883F82020154A0192019A511E0191F9
-:101320001AB193F82020002AF7D1002283F8202058
-:10133000019A42B11D7D05F0FD02012ADBD16B1E31
-:101340005D425D4103E00025204600F0A8F92368D6
-:101350000022204683F82020FFF748FF10B92046DE
-:10136000FFF790FF284602B0BDE8F08180841E00A0
-:1013700010B5044618B90E48A92101F015F800214E
-:101380002422006801F025FC204600F0CBF8236AF7
-:101390002BB1002104F120000A46FFF771FEE36A39
-:1013A00023B12046BDE81040FFF731BF10BD00BF9C
-:1013B0009567000810B5044618B90848B62100F032
-:1013C000F3FF00680368DB690BB9FFF7F3FE2368DE
-:1013D0001A68D3690133D36110BD00BF9567000857
-:1013E00008B518B90748BF2100F0DEFF00680268A1
-:1013F000D36933B1013BD3611BB9BDE80840FFF7A6
-:101400002DBF08BD956700081FB50C46114618B9D9
-:101410000A4840F28D1103E023B908484FF4C77120
-:1014200000F0C2FF82888DE80A0000212346029165
-:101430000068FFF731FF04B010BD00BF95670008DA
-:1014400013460122FFF7E0BF1FB50C46114618B93D
-:101450000A484FF4D77103E023B9084840F2AF11AE
-:1014600000F0A2FF82888DE80A0000230121029388
-:1014700023460068FFF710FF04B010BD9567000811
-:1014800007B502AB03F8012D0122FFF7DDFF03B022
-:101490005DF804FB03680022197583F8202070476B
-:1014A00010B5046863882279C3F3090322B922784E
-:1014B000012A18BF43F48063A268E468121BFF2A64
-:1014C00095BF120443F0FF7302F47F0243F48033AC
-:1014D00098BF134309B143F4005342681268536044
-:1014E00010BD43681B681A6822F0D60210B51A6056
-:1014F0005A6842F480425A6008220368BDE81040EE
-:101500001A70FFF7C7BF0368012110B50446586879
-:1015100001F000FB00212368BDE81040586801F08D
-:10152000F9BA000043685A7B53B2002B30B506DA93
-:1015300002F00F021B4B1344C0221A7606E003F19F
-:101540006043C02203F5614383F8002343689A7B1C
-:1015500053B2002B06DA02F00F02124B1344C022E2
-:101560001A7606E003F16043C02203F5614383F875
-:10157000002350F8045F0C4C6B7B59B203F01F0240
-:101580000123490903FA02F244F82120AA7B51B24F
-:1015900002F01F024909934044F82130BDE8304071
-:1015A000FFF7B1BFFCEC00E000E100E043682C492C
-:1015B0009A688A42F0B5074687B004D92948512174
-:1015C000294A00F0E5FE29498A4205D91C7B34B13D
-:1015D000012C07D000F0F2FE0124254603E0092487
-:1015E000102500E0022502A801F0EEF979686019E3
-:1015F000049A8B684343B2FBF3F603FB162303B94B
-:10160000013E0F2E03D91748702100F0CDFE03C90B
-:1016100000F0B0F97B684FF0000100221B68013D2B
-:1016200066F307110192013C8DF804508DF8071004
-:1016300019688DF8054021F0010119600C491868FE
-:1016400001401960019919619A60DA601A6842F0E4
-:1016500001021A60074A59680A405A6007B0F0BD93
-:10166000801A0600AE670008CB670008A08601005C
-:10167000001F30FF008000F810B5044654F8043F06
-:1016800093E8030000F080F92046BDE81040FFF722
-:101690003ABF43681B689869C0F3C030704743681D
-:1016A0001B681A6822F0D6021A605A6842F4804217
-:1016B0005A60704703685A790AB9012204E01A791E
-:1016C0000AB9052200E006221A70704743681B68B9
-:1016D0001A6842F0D20210B51A60026814791CB977
-:1016E000196841F004011960117801290CD1528860
-:1016F000012CC2F309020CBF4FF08071002142F4AB
-:1017000090320A435A6010BD0121BDE81040FFF736
-:10171000C7BE38B5436805461C6803681A78013AA5
-:10172000072A5BD8DFE802F0045A5A5A223B5A577C
-:10173000A269910701D59A79A2621A793AB9A26988
-:1017400052060FD50522284601211A7008E0012A09
-:1017500008D1A269100605D50622284600211A7074
-:10176000FFF79EFEA369D9063AD525E0A269520784
-:1017700005D5DA681969501CD860636A8B54A3696F
-:101780001B0603D528460021FFF78AFEA3695806E9
-:1017900026D528460121BDE83840FFF7A2BEA26940
-:1017A000910705D5DA681969501CD8608B5CA36273
-:1017B000A16911F0100109D0E3692846022143F024
-:1017C0001003E361BDE83840FFF764BEA3691A0661
-:1017D000DCD52846D8E7A369DB0701D400F0EEFD8D
-:1017E00038BD43681B689A69D20503D5DA6942F4AB
-:1017F0008072DA619A69510503D5DA6942F4806230
-:10180000DA619A69920503D5DA6942F40072DA6105
-:101810000321FFF766BE0000094B70B51C680D463A
-:1018200006462046FFF7C6FD2A4631462046FFF70A
-:1018300007FE05462046FFF7D3FD284670BD00BFD2
-:10184000182C0008094B70B51C680D46064620464A
-:10185000FFF7B0FD2A4631462046FFF711FE054648
-:101860002046FFF7BDFD284670BD00BF182C0008BC
-:1018700037B500F07DF81D4801210222FFF700FC7A
-:101880001B4801210222FFF7FBFB1A48012102221B
-:10189000FFF7F6FB00F06DF800200DF10701FFF7F0
-:1018A000BBFF9DF80750012D1DD114200DF107013C
-:1018B000FFF7B2FFA8B1104C237813B101332370A6
-:1018C0000FE09DF80710142021F0060141F00201FD
-:1018D0008DF80710FFF7B6FF18B10320257000F050
-:1018E000E7FD012000E0002003B030BD08650008DE
-:1018F0001465000820650008FF89002001460148A2
-:10190000FFF7D8BB0865000801460148FFF7D2BBC6
-:1019100014650008B0F1804F08B503D20D4830219E
-:1019200000F042FD0C4B98420ED903F580339842EB
-:101930000CD9B0F1A04F0BD3084A094BB0F1204F9E
-:1019400034BF1846104608BD064808BD064808BD05
-:10195000064808BDEC670008FFFF0040852A000824
-:101960006D2A00089D2A0008B52A0008552A00089B
-:101970007047704710B50C46FFF7CCFF01210346B6
-:101980002046BDE81040184710B50C46FFF7C2FFCF
-:10199000002103462046BDE81040184738B5104CDA
-:1019A00005464FF080512046FFF7E4FF45B154E86B
-:1019B000003F43F4807344E80032002A08D0F6E781
-:1019C00054E8003F23F4807344E80032002AF7D142
-:1019D00003484FF08051BDE83840FFF7D5BF00BF46
-:1019E00000700040024B5868C0F34000704700BFD1
-:1019F00000700040024A136843F008031360704708
-:101A000000700040B0F1006F10B504460BD20C48D6
-:101A1000FEF7F0FF2046FFF70CF80A48FFF702F840
-:101A20004FF0FF3010BD084B002053F8042BA242AA
-:101A300002D81A68944202D301300B28F5D110BDA8
-:101A40000B680008146800082C6500082DE9F843AD
-:101A50000446174699460E46C1B3FFF7D3FF054625
-:101A6000601E3044FFF7CEFF002D804631DB00289A
-:101A70002FDB461B01361FB1002031464A46B847CE
-:101A80002C4600F0D3FD44451EDCF32000F0E4FDBD
-:101A9000114B002133F8140000F016FE09280AD07B
-:101AA0000E48FEF7A7FF2046FEF7C3FFFEF732FF02
-:101AB00000F0CAFD0DE02FB1C5F1010031464A46E4
-:101AC0002044B8470134DEE700F0BEFD0120BDE848
-:101AD000F8830020BDE8F8835C6500082D680008E5
-:101AE0002DE9F0410F461646804600F09FFD3E442A
-:101AF0003C46F32000F0B0FDB44216D0C7EB080519
-:101B0000254414F8011B284600F014FE0928F3D0E0
-:101B10000848FEF76FFF2846FEF78BFFFEF7FAFE38
-:101B200000F092FD0020BDE8F08100F08DFD012065
-:101B3000BDE8F0814568000808B545F2555000F051
-:101B40006BFE042000F06EFE40F6FF7000F070FEA9
-:101B5000002000F061FE4FF480500121BDE80840F4
-:101B600000F058BD08B500F071FEBDE8084000F077
-:101B700065BE08B57D2000F0E5FF003018BF0120EC
-:101B800008BD4900FEF7E4BF2DE9F043012185B00F
-:101B900005460020FEF7DCFF042000F051FB01A801
-:101BA000294600F0A7FB01A800F0B3FB08B93B48A9
-:101BB00014E00C353A48FEF735FF02992846FFF746
-:101BC00003F904463748FEF715FF2046FEF731FFBC
-:101BD000FEF7A0FE039B9C4204D03348FEF722FF91
-:101BE000012057E0029CDFF8E0803048FEF71AFF42
-:101BF00021462F4A002340460024FFF727FF029F7B
-:101C00002C484FEA5709FEF70DFFBC421CD23E1B81
-:101C100029486119B6F5803F28BF4FF48036324617
-:101C2000FFF7B2F908EB040023493246FFF758FFEB
-:101C300018B92248FEF7F6FE06E009EB54003946D3
-:101C4000FEF786FF3444E0E71D48FEF7D3FE029816
-:101C5000FEF7EFFE1B48FEF7CDFE1B49029A00205F
-:101C600000F002FC04461948FEF7C4FE0398FEF794
-:101C7000E0FE1748FEF7BEFE2046FEF7DAFEFEF74E
-:101C800049FE039B9C4204D01248FEF7CBFE022083
-:101C900000E0002005B0BDE8F08300BF56680008F2
-:101CA0007468000891680008A7680008CA680008FE
-:101CB000831B0008E1680008008A0020F86800081B
-:101CC0000369000811690008008000081A6900080B
-:101CD0002D6900083369000810B5022000F0C8FA29
-:101CE000D8B3042000F0C4FA044670B11B48FEF7D4
-:101CF00099FE042000F0B0FA022000F0ADFA4FF493
-:101D00000040BDE8104000F0A7BA1548FEF78AFE73
-:101D1000082000F0A1FA102000F09EFA202000F028
-:101D20009BFA402000F098FA2046FFF72DFF02288A
-:101D300007D1082000F084FA102000F081FA00F0AA
-:101D400061FB042000F088FA022000F085FA4FF4CD
-:101D50000040BDE8104000F073BA10BD7E69000875
-:101D6000B469000810B52548FEF75CFE4FF480000A
-:101D7000FFF70AFF10B102283AD809E0202000F04E
-:101D80006BFA402000F068FA802000F059FA2FE04A
-:101D9000082000F055FA102000F052FA202000F040
-:101DA00067FA20B91648FEF73DFE202007E04020E4
-:101DB00000F05EFA58B91348FEF734FE402000F0F8
-:101DC0003FFA4FF4007000F03BFA00F01BFB0E48A6
-:101DD0000024FEF727FE082000F03EFA102000F055
-:101DE0003BFA202000F038FA402000F035FA00E0FD
-:101DF0000124042000F030FA204610BDCF6900080D
-:101E0000E9690008226A00085B6A000808B5024810
-:101E1000FEF708FE00F0FDFA956A00081EF0040FB8
-:101E20000CBFEFF30880EFF30980FFF7EFBF7047B7
-:101E300008B50120FEF7F6FC08B900200FE00020ED
-:101E4000FEF7F0FC0028F8D00220FEF7EBFC00289B
-:101E5000F3D00320FEF7E6FC80F00100C0B200F0F2
-:101E6000010008BD1FB504460E48FEF7DBFD01A9C1
-:101E70000C22204600F026FB01A8FEF7D3FD2046E9
-:101E8000FEF784FE0220FEF7CDFC04460220FEF79A
-:101E9000C9FCA04201D000F0B5FA0A2000F008FB0E
-:101EA000F4E700BF8B6A00087FB5BF484FF0805150
-:101EB000FFF760FDFFF796FD044630B1FFF79AFD8E
-:101EC000BA48FEF7AFFD00F0A4FA4FF08051B648D3
-:101ED000FFF75AFDFEF750FCFEF7D0FCB448FEF7C2
-:101EE000A1FDB448FEF79EFDB348FEF79BFDB34845
-:101EF000FEF798FDB248FEF795FDB248FEF792FD59
-:101F0000B148FEF78FFDFFF7B3FC00F0BBF900F01E
-:101F1000DBF921460C2201A800F05BFE00F0D0F9AD
-:101F200001A90C2200F0CEFA01A8FEF77BFDA7481C
-:101F3000FEF778FDA548FEF775FD4FF4804000F0F0
-:101F400097F990B1A248FEF76DFD4FF4804000F084
-:101F500083F9082000F080F9102000F07DF920209E
-:101F600000F07AF9402000F077F9FEF77DFFFEF7E8
-:101F700067FCFFF77DFCFEF7A1FDFEF7D9FDFEF73C
-:101F800001FC08B1934803E0FEF744FC10B192480D
-:101F9000FFF768FF00F084F9802000F069F918B1BC
-:101FA000802000F059F94BE04FF4003000F060F968
-:101FB00020B14FF4003000F04FF943E0FFF738FF55
-:101FC00068B141F288348548FEF72CFDFFF730FFF9
-:101FD00078B1012000F06CFA013CF7D132E0804B7F
-:101FE0000CCB013301D0013203D17E48FEF71AFD3C
-:101FF00028E0FFF7BEFD48B3FFF7BBFD10B17A48FC
-:10200000FEF710FD4FF4007000F032F910B1774880
-:10201000FEF708FD4FF4007000F01EF9102000F0EC
-:1020200027F9002800F0F8807148FEF7FBFC082033
-:1020300000F012F9102000F00FF9FFF793FE98B9A5
-:102040006C48A5E76C48FEF7EDFCF6E74FF400702E
-:1020500000F00EF90028CFD1082000F0FDF8102084
-:1020600000F0FAF8FFF738FE4FF4005000F000F9E6
-:1020700004464FF4805000F0FBF8400040EA840032
-:10208000C4B24FF4006000F0F3F82043C0B2072858
-:10209000C3B20DD14FF4006000F0DEF84FF4805071
-:1020A00000F0DAF84FF4005000F0D6F853486FE72C
-:1020B00001334FF40060DBB2023B052B11D8DFE89F
-:1020C00003F00C1003100C1000F0C6F84FF4805011
-:1020D00000F0C2F84FF4005003E000F0BDF84FF4F8
-:1020E000805000F0ADF84648FEF79CFCFFF724FD59
-:1020F000FFF738FDFEF786FF394B42485D681E68E2
-:10210000FEF778FC2846FEF794FC3F48FEF772FC89
-:102110000022930001324FF0FF3103F16043082A9F
-:1021200003F56143C3F88010C3F88011F1D1374B38
-:102130004FF4801200241A634FF480625C639C6346
-:102140001A645C6400F01AFC3148012100F0BEFC06
-:1021500021462F4800F0BAFCF320012100F0C2FC18
-:102160002146F32000F0BEFC0320012100F0C6FC54
-:102170002146032000F0C2FC6FF4A050012100F0C2
-:10218000C9FC21466FF4A05000F0C4FC2148012195
-:1021900000F0CCFC1F48214600F0C8FC63B64FF0AD
-:1021A000FF3EB546284700BF00700040A06A000807
-:1021B000AD6A0008B46A0008416B0008D86B0008DB
-:1021C000596C0008DA6C00085D6D0008B36A0008FD
-:1021D000DA6D0008014550FE024550FE076E00080A
-:1021E00000800008426E0008556E00086D6E000801
-:1021F0008D6E0008034550FE016F0008044550FE37
-:10220000206F0008326F0008466F00080038024057
-:102210000010E022B379F764082000F029F820B11B
-:102220000548FEF7FFFB102003E00448FEF7FAFB29
-:10223000082000F005F815E7B56E0008DB6E000811
-:1022400010B50446002000F0A9FC40EA040100207B
-:10225000BDE8104000F092BC10B50446002000F02C
-:102260009DFC20EA04010020BDE8104000F086BC7F
-:1022700010B50446002000F091FC204214BF01205C
-:10228000002010BD08B50120FFF788FB0120FFF7F3
-:10229000EFFF20B90121BDE8084000F06FBC08BD88
-:1022A00008B50648FEF7A6FB002000F077FCFEF715
-:1022B000C0FBBDE80840FEF72DBB00BF4E6F000815
-:1022C000022000F06BBC000008B5FFF7F9FF0449DD
-:1022D000884204D00220BDE8084000F04FBC08BD91
-:1022E0008BB8185808B50248FEF79CFB00F08AF836
-:1022F0005A6F00081FB504460C2201A8FEF744FEE1
-:1023000001AB03CB206018686160A060204604B078
-:1023100010BD0068A0F10C035842584170470000FE
-:1023200080B51746064610480D461C46FEF762FB70
-:102330003846FEF75FFB0D48FEF75CFB3046FEF7C4
-:1023400059FB0B48FEF756FB2846FEF772FB2CB1F3
-:102350000848FEF74FFB2046FEF74CFB0648FEF709
-:1023600061FBFFF7BFFF00BF776F00085A6D0008E1
-:10237000806F00085B6D0008B36A00081FB506AAED
-:1023800052F8044B039200921A462346FFF7C8FF07
-:102390000CB41FB506AA52F8043B03920092014AFE
-:1023A000FFF7BEFF826F0008002307B57246009357
-:1023B000014BFFF7E3FF00BF896F00087446064832
-:1023C00008B5FEF717FB2046FEF733FB0348FEF780
-:1023D00029FBFFF787FF00BF916F0008B36A000871
-:1023E000BFF34F8F0549064BCA6802F4E0621343FE
-:1023F000CB60BFF34F8F00BFFDE700BF00ED00E0F3
-:102400000400FA0508B5FEF7CFFB00F0AFFBFFF7BD
-:10241000E7FF08B5FFF7E4FFF0B50646002401200A
-:102420002546034694421DD011F804C000F1010E68
-:10243000BCF1000F03D17355774605460DE001331B
-:10244000774606F800C0DBB2FF2B07D102F1FF3C54
-:10245000644506D07355871C754601230134384600
-:10246000E0E770467355F0BD30B5C9B1C0430A44CA
-:10247000914213D011F8013B0A4D83EA000404F0A5
-:102480000F0455F8244084EA101080EA131303F077
-:102490000F0355F8233083EA1010E9E7C04330BD3D
-:1024A000084630BD7465000800010138FDD1704751
-:1024B00010B504462CB14FF47A70013CFFF7F4FFDD
-:1024C000F8E710BD0A2A10B504DC1148BDE8104039
-:1024D000FEF7A8BA30230C461C2204F8023B7823EE
-:1024E0004B700F2393400340D340092B01D8303366
-:1024F00002E00F2B02D85733DBB200E02023043A6E
-:1025000004F8013B131DECD100238B7210BD00BFFA
-:10251000CB6F000808B582684368934203D3044830
-:102520001421FFF741FF0268591C4160D05C08BDCF
-:10253000E16F000843688268934210B503D30448F2
-:102540001921FFF731FF02685C1C4460D15410BDB3
-:10255000E16F0008F0B587B00E460746154600212A
-:102560000C2268461C4600F034FB00210C2203A814
-:102570000296009700F02DFB684603950594FFF73F
-:10258000C9FF06466846FFF7C5FFB042014601D0C5
-:1025900003A808E06846FFF7BDFF0446D8B101284C
-:1025A00004D103A83146FFF7C5FFEBE7030608D5C2
-:1025B00004F07F046846FFF7ADFF40EA042000F115
-:1025C0008004A4B20025A542DCDA03A80021FFF7AD
-:1025D000B1FF0135F7E7049807B0F0BDFEE7000052
-:1025E0000748084A0849121A08B500F0E7FA0748F0
-:1025F000074A0021121A00F0ECFAFFF755FC00BF61
-:102600000000002014000020F46F000814000020D7
-:10261000008A0120044B9A6809B1104301E022EAC4
-:1026200000009860704700BF002004E0044B1A6966
-:10263000002A04DA034A5A6002F188325A6070476D
-:10264000003C024023016745024A136943F00043FE
-:1026500013617047003C0240014BD860704700BFD7
-:10266000003C02400E4BDA68D20310D4DA68D1067F
-:102670000FD4DA68D2050ED4DA6812F0E00F0CD16C
-:10268000DB6813F0020F14BF0820092070470120F7
-:10269000704706207047022070470720704700BF30
-:1026A000003C0240092307B58DF80730FFF7DAFF39
-:1026B0008DF807009DF80730012BF7D09DF8070033
-:1026C00003B05DF804FB000070B5064641B1012976
-:1026D00008D002290CBF4FF400754FF4407503E099
-:1026E0000D4601E04FF48075FFF7DCFF09281ED18D
-:1026F0000F4C236923F4407323612169294321612D
-:10270000236923F0F8032361236943F002031E4386
-:102710002661236943F480332361FFF7C3FF2369F4
-:1027200023F002032361236923F0F803236170BDC2
-:10273000003C024070B505460E46FFF7B3FF09287E
-:1027400013D10A4C236923F4407323612369236165
-:10275000236943F0010323612E70BFF34F8FFFF70E
-:10276000A1FF236923F00103236170BD003C0240F7
-:10277000F0B500220E680123934003EA060E9E4541
-:102780002AD1550003230468AB40DB431C4004609E
-:102790000C79076804FA05FC013C4CEA0707012C98
-:1027A000076011D884684F791C40AF40846084680A
-:1027B00027438760446824EA0E0444608C794768A4
-:1027C0009440A4B23C434460C4682340C360CB79C6
-:1027D000C468AB402343C3600132102ACBD1F0BDA3
-:1027E0000369194214BF01200020704702B909048F
-:1027F0008161704701F00703C9089B0000EB81006D
-:102800000F219A40994010B5046A24EA010101623F
-:10281000016A1143016210BD014B1860704700BF8F
-:1028200000300040014B5860704700BF003000404E
-:10283000014B9860704700BF003000404AF6AA2262
-:10284000014B1A60704700BF003000404CF6CC428C
-:10285000014B1A60704700BF003000400023036046
-:1028600043608360C36003614361836170470023F9
-:1028700043608360C3600360036143618361C3613C
-:10288000036243628362C362704700000E490368BB
-:102890000A6810B544691C4383691C4322F07F43D6
-:1028A000426823F03003234343EA02630B60C368AA
-:1028B00082684C681A43054B23401343026943EA7C
-:1028C00002434B6010BD00BF001000A0FEF7E0FF08
-:1028D00090E80C000E491A4383681A43C3681A43F0
-:1028E00003691A4383691A43C3691A43036A1A4383
-:1028F000436A1A43836A1A43C36A10B51A434C6980
-:10290000044B23401343426943EA82434B6110BDA9
-:10291000001000A000008090044B1A6810B142F033
-:10292000010201E022F001021A607047001000A0CD
-:10293000024B9A68920600D498617047001000A07C
-:10294000024B9A68920600D418617047001000A0EC
-:10295000014B1878704700BF201000A0034B9B6804
-:10296000184214BF01200020704700BF001000A0D3
-:10297000014BD860704700BF001000A00F4B002132
-:102980001A6842F001021A6099601A6822F0A8528F
-:1029900022F410221A600A4A5A600A4AC3F88420B4
-:1029A00002F18062C3F888201A6822F480221A603B
-:1029B000D960C3F88C10C3F89010704700380240FB
-:1029C00010300024003000201E4A936803F00C03EE
-:1029D000042B10B503D0082B03D01B4B19E01B4B65
-:1029E00017E05168536811F4800F516803F03F03FA
-:1029F00018BF164AC1F3881108BF134AB2FBF3F39C
-:102A0000104A4B435268C2F3014201325200B3FBF9
-:102A1000F2F30C4A036093680D49C3F30313CC5CD3
-:102A20000368E34043609468C4F382240C5D23FA96
-:102A300004F484609268C2F342328A5CD340C3607B
-:102A400010BD00BF003802400024F40040787D0132
-:102A500001000020044B1A6B09B1104301E022EA87
-:102A600000001863704700BF00380240044B5A6BE7
-:102A700009B1104301E022EA00005863704700BF2B
-:102A800000380240044B9A6B09B1104301E022EA7E
-:102A900000009863704700BF00380240044B1A6C76
-:102AA00009B1104301E022EA00001864704700BF3A
-:102AB00000380240044B5A6C09B1104301E022EA8D
-:102AC00000005864704700BF00380240044B1A6988
-:102AD00009B1104301E022EA00001861704700BF0D
-:102AE00000380240044B5A6909B1104301E022EA60
-:102AF00000005861704700BF00380240044B9A69DB
-:102B000009B1104301E022EA00009861704700BF5C
-:102B100000380240044B1A6A09B1104301E022EA6E
-:102B200000001862704700BF00380240044B5A6A28
-:102B300009B1104301E022EA00005862704700BF6B
-:102B4000003802404209084B012A01D11B6804E009
-:102B5000022A01D11B6F00E05B6F00F01F0023FA17
-:102B600000F000F00100704700380240024A536F45
-:102B700043F08073536770470038024082B00023EF
-:102B80000193054B0193019B03EB80000190019B96
-:102B9000196002B0704700BF5028004082B0002387
-:102BA0000193054B0193019B03EB80000190019B76
-:102BB000186802B0704700BF50280040431E0A4406
-:102BC00010B5914204D011F8014B03F8014FF8E71A
-:102BD00010BD02440346934202D003F8011BFAE7FA
-:102BE0007047000014000020242C0008001402404C
-:102BF000004000000E0004000014024000800000AD
-:102C00000F000400000000000000000000000000B1
-:102C100000000000B46500081C2C0008E42B00082C
-:102C2000500000000060004000000001801A060013
-:102C3000005F6000382C00080054014000002000B4
-:102C400000000240200000000500080000000240D3
-:102C50008000000007000800000002401000000093
-:102C60000000000000000240080000000100000019
-:102C700000040240040000000004024001000000C3
-:102C800001000000001802404000000001000000A8
-:102C90000018024008000000000000000018024078
-:102CA0002000000001000000001802401000000099
-:102CB00001000000000C02400001000008000700B5
-:102CC000000C0240000200000900070001424F4FC3
-:102CD000544C4F414445520000000000002A2A0095
-:102CE00000000000000000000047FF004C61747409
-:102CF000696365006943456375626532203230312E
-:102D0000362E30322E323738313000506172743AFC
-:102D1000206943453430554C314B2D434D333641BA
-:102D200000446174653A204A756C20323520323097
-:102D300031362030393A35363A33394702FF7EAAE8
-:102D4000997E5100010592002062016F8247027254
-:102D5000007011000101470B104702804705024730
-:102D6000058003470801470208471120470C024726
-:102D70000B02471740470501470540470C040090E8
-:102D8000470F1047064047050147054047050147E3
-:102D900004800004471080470502002000080080DE
-:102DA000470201470908471701470434000C47044C
-:102DB00003470D30475970470E801047040200400A
-:102DC000470408014702070200404704080147057D
-:102DD0002004474103470B03470D1C471080470958
-:102DE000010080470203470908470324472B78471F
-:102DF000124007470A40470C040008470E404705A9
-:102E0000014706044704014706044706104711809E
-:102E10000747061C470380470C08470A0C30204729
-:102E20000F30E8470C63C1470C0C30470F400105D9
-:102E3000470C03C0470C0C3020470D184702E047F1
-:102E400004020CB10018003847064047080C304710
-:102E50001001074702010001CD72470398470F0C8C
-:102E60003020470D3000F9A04708100001C0470589
-:102E7000038047070C30470E3000710547083000CB
-:102E800001470F0C3020470F5808470401DCA00011
-:102E900080470363C1470203C020AF5247050C308F
-:102EA00047100803470402E0F5470503C047020244
-:102EB000E0050FA01047040C3020471240002020EE
-:102EC000470AC001E007A547060C3047110D47032C
-:102ED00014470B4047030547031447020C302047B3
-:102EE0000F900004470220470E17CFA24702084761
-:102EF000020C30471030092447022C470D02CD0F39
-:102F0000F047050C3020470F108004470368470343
-:102F1000010547100C30471011073047190C3020BD
-:102F2000470D300010470A0147100C30470E30475C
-:102F300002052047023447050247100C302047079E
-:102F4000044706404704203404ED80000247091C72
-:102F5000000847050C30470F4047050422FC470294
-:102F6000014707A00002C047060C3020470903EACA
-:102F7000F52000404706035CA500184708401C8F59
-:102F80000847050C30470A03D05047024047060166
-:102F9000F0554703104706200200F047050C30208B
-:102FA0004709284703110001E047032038FC80024D
-:102FB000470A1E8F0847050C3047080800404703A2
-:102FC0003029470402BC03D0470AC04703F0470535
-:102FD0000C3020470A1C0F10470829DCA500304799
-:102FE000090E8F0847050C30470C0F470941505513
-:102FF000002047090200F047050C3020470D044728
-:10300000065C76EC80024707084702068047060CFC
-:103010003047080247050447030147033CF0470ACD
-:1030200001400C00F047050C3020470820470B1CDE
-:1030300021FAE732004047100C3047090C470B24B7
-:1030400064F0F7084709028047070C302047141C3A
-:1030500031CCE720804703383D44470202804707D0
-:103060000C30470F404705027668FB47024000C01E
-:10307000403D4703028047070C302047080C4705B6
-:103080000147053C63DE800010470C0447040C3008
-:10309000470A2047040247052402E8470210470672
-:1030A00001014047020147050C302000A100123CFD
-:1030B00020000447021EF060470720001EF0404732
-:1030C000030D72BD400003428EEF47060C304705EA
-:1030D00003C0C04704F047024000974703042000A4
-:1030E000F0470401403C470201429C47070C302056
-:1030F00047033A3C200647030CF06018021080009A
-:10310000060140024AA500188000077815006047B4
-:10311000020CC96047050C30470503C0104704F096
-:10312000470205090747038001D055470390004037
-:103130001620000142C1096047050C3020470332C8
-:103140003C202C47031CF04030470280000447021B
-:10315000204705018839414702020025ACC02047BD
-:10316000040C30470503C0044704F001300801098E
-:10317000000C4702404705F00F4282010020402525
-:1031800047070C30204703323C20470280001EF0E6
-:1031900040470280E847037C470705781547044409
-:1031A00088002047040C3047040803C80001470288
-:1031B00010F0470371094703964708C01640000303
-:1031C00042150020470202001C0C30200001017A49
-:1031D0003C2047040EF0600008704703A00601DAA7
-:1031E000A047090A007E8800300002C0000C30476A
-:1031F000038D0003C04000243000F0470308FB4764
-:103200000240000340F54709014287002047040CB3
-:103210000C30202000013A3C20201004470708040D
-:10322000001000045AA102004000A04705603EEFD4
-:10323000A547050C300010070D0803C047020247E0
-:10324000070520470334E001470B1C05A047020295
-:1032500047020C3020040500723C20001047060491
-:1032600050800447022021EEE2020040181047047B
-:1032700003601FAAF5470202C0000C300004054796
-:103280000203C0001004470542D8BD2C00103C7654
-:103290007042470240008047030102C02C00F04703
-:1032A000050C3020000800723C2000A02078470365
-:1032B000300010470501DCA302304702804703C0FD
-:1032C00001C047080C3000040B470203C000521431
-:1032D0004704300008033C4702343830A300204044
-:1032E0000147048101C2C0470C0A723C204702A07A
-:1032F0003BF9014001404705202C0CF040470307F3
-:103300008402470306DEF5E0470A100803C1000106
-:10331000547D69A7004040470402046000F0470262
-:103320008050003C470402BCF1D0104706018047A2
-:1033300002723C20060024017F74400140470306CE
-:1033400047034EA50018470215A3C2806002002C57
-:1033500091A0470B0803C047023C2E78A010024002
-:103360004707D055470490003C470201401DF3F049
-:103370004707034703121540040036687B6440305A
-:1033800047040CA047020DD1000147020723C247A2
-:1033900002034614ABC420470A08154004023C004F
-:1033A0004A58007047040C470203DFE24705803C9F
-:1033B00047020266C20BC208470A03BC1047023C20
-:1033C000294B7440002847042000281EF0400002CA
-:1033D0001801A3C20004016060AB470C043C470322
-:1033E000164268A0004047074010F0470205080059
-:1033F000803C47021403B4C70010470A03BC100CFA
-:103400004702035D7A014706A00E60FEA047023026
-:1034100001A7A3C2000803469E81A020470A043CDE
-:103420000004470202C85A0847071E03C0F54705B3
-:10343000803C470201601D03F0470C295047021EE3
-:1034400001D95B10404705800423CCA1024703113A
-:1034500023C247041D95E0470B90168047021C319C
-:103460004CA547080202C002470480003C47043EC6
-:10347000E1D0470A1B47051F470601C04703062046
-:10348000E8A3024703B325ED0004016640ABC42066
-:1034900047090A4705024706014705267003470406
-:1034A000AFB694010A0242B507C004471064F85051
-:1034B000104708701AA302B10001D04703C00003EF
-:1034C000DDB5E0471164005047083443D053002273
-:1034D0008051A0470380D6C76EE1D04709081E5B24
-:1034E000C8104703040AF0404709FE00404702198C
-:1034F0008F304002000166A5E0470A0B00121E80D3
-:103500006000142800F04702400007470403F0A0C1
-:103510004080020007B0470301C24E944708018073
-:10352000470506470308F040184702100006200030
-:10353000020C0A001947020B3A81816002E68405F9
-:10354000A020470801470810F04704B7470240048D
-:103550003CC0050002801087400101000260140297
-:10356000400447060300080036C9580C0034001A0E
-:10357000F04030470218000CA14000FE504A0247BC
-:10358000020120288047030480D0A04706010003E1
-:103590000A7A05424702144702F000304702FB0056
-:1035A00004408003F080404704402880000340012D
-:1035B00000D080470603000500DE11D84702366CB4
-:1035C0001AF060470308000D8000020C0A40300822
-:1035D000000B3801010002000D85E02047060100C4
-:1035E0000F0052E0404702142800F04703B00700E4
-:1035F00009024702C0054820040007414104470270
-:10360000401602E0470A08F680D2100E47021AF070
-:10361000404703184703200400A54000805011755F
-:10362000D04703C067A0140447080B091B28C0201B
-:10363000470310F04704C900400E3C38C05A480107
-:1036400000D887B5F8470303AEE8008047080801B3
-:103650009F141447041AF040470280180400201EEB
-:103660002200A54130005C037B08084702E021CA24
-:10367000470A050C56788240470310F04703F0E5EF
-:103680003C470340C05A40104702A7C30C04000245
-:1036900062DC05470A0D81D6C9504705A54047029F
-:1036A00098984702A004301C0540800018E04705A8
-:1036B000600685014709050A32054A4704405A4712
-:1036C0000399933400400201C00A40470210B047FA
-:1036D000030847020105470A0581FE51D047040A45
-:1036E000F0403000901000040004027E5F401000A3
-:1036F00050E1B8280400E0400FF812470A0B53E0ED
-:103700004A4705F000300070FD3C04000220E00F45
-:1037100048100079098168040002600CC447111444
-:10372000004EA0400240470607C850C047039047DC
-:1037300005407EC70008470F020010A040804047A8
-:10374000063BC00542470210D04705235DAF014745
-:103750000E06470744470306470203C850C0180037
-:1037600018033E01006000063DC0471104470542B2
-:1037700047050402C005404702188FBC01204703DB
-:103780000E824716100001C000044702674850C06F
-:10379000100001E130104703604718300001470274
-:1037A00004470223E005401047020DE047160C478E
-:1037B000070547030C0006674850C0F0001017B219
-:1037C000012847020780471008470B08470222E0FC
-:1037D0000540204702E7C00147234003E850C147A6
-:1037E00003F0470402662F90471B10470203C005F1
-:1037F000404703D0470401442FB040471D73685031
-:10380000C010470219F56C47020366EED0471E420E
-:10381000C00540304702ADE11C47020142AEF080D6
-:10382000470240470E0447090226036850C00007BC
-:10383000101DFB08084702068DE800204710384796
-:103840000A0403E0054040003085830C4705084723
-:103850000F04470B040020736850C11047028047D3
-:1038600003C00060208E5420470D04470B04000461
-:1038700042E00540100051E04703804142650DA041
-:10388000470372009011010101470B1047064047A2
-:1038900005014705400002470608471120470680FA
-:1038A0004705024712084722010002470404471156
-:1038B00010470640470501470540470316000147EA
-:1038C0000604472202002000084702084703104769
-:1038D000243C000C47063047688010470402004033
-:1038E0004704080147030200404704080147043029
-:1038F0002004474D01470604472103008047050285
-:1039000047030C471F1E472D024703404705014749
-:1039100017404705014706044703030147060447CC
-:103920000610471D8047050247110C30472C0C300C
-:1039300020472B0C30472C0C3020472B0C30470EE7
-:1039400001470C1047100C3020470D02471D0C306A
-:10395000472C0C3020472B0C30472C0C3020472BA9
-:103960000C30472C0C3020472B0C30472C0C3020CF
-:10397000472B0C30472C0C3020472B0C30471308BA
-:103980000004002055470880004247080C302047BB
-:10399000120C0020016855404707400200404707CD
-:1039A0000C3047150400200F470B02055004470454
-:1039B0000C30204714260168F0C04709661E855464
-:1039C00047050C3047180F470DF08047040C302096
-:1039D00047150168F0C0470A168F0C47050C3047A1
-:1039E000150C47020F470DF08047040C3020471597
-:1039F00001E8F0C0470A1E8F0C47050C3047150C34
-:103A000020200F470B0200F047050C3020471426FA
-:103A10006548F0C04709601C8F0C47050C304716FD
-:103A200020200F470A460200F047050C30204715BA
-:103A30006548F0C047080207548F0C000147030C8B
-:103A40003047180F470DF047050C30204712064746
-:103A50000201C8F0C047076047021C8F0C47050CE5
-:103A60003047170C0F470503C01247020401B0F09E
-:103A700047050C3020471501DAF0C0470423C04742
-:103A80000307148F0C47050C304718F04703D9B0D3
-:103A9000A4470280470A0C30204714060008F0476C
-:103AA0000350A780020040470A0C30471620300F11
-:103AB0004703D900A047040247080C3020471505EA
-:103AC000780F80470250A780024703404047070C09
-:103AD00030471524201B0F470528470D0C30204781
-:103AE0001501F80F804703078002470C0C30471779
-:103AF0000D0F4704B020470D0C30204714066179A4
-:103B00000F804703078402470C0C30471504200D33
-:103B10000F47035000A8470D0C302047142004F82D
-:103B20000F804703070002470C0C30471506203C66
-:103B30000F47035000B4470440050A088047040CAF
-:103B4000302047143501C90F8047030100024702A6
-:103B5000026000E50447050C304715366C1C0F4722
-:103B6000035000284707588047040C30204714149E
-:103B700028E80F8047030704020060470214E0545E
-:103B800047050C3047166D4CA547035000204704ED
-:103B9000C0040A088047040C3020471529415A8088
-:103BA00047038700024702024702A504471B10048F
-:103BB0004000F0470301A9A00004800042471F20F5
-:103BC0007808F047020800BFA021404002004047AB
-:103BD0001D10042060A54702404702A047020100D3
-:103BE00040020550471C2007605A804703078002A7
-:103BF000470202601E8556471D0340A547035190AA
-:103C0000B04702014704F0471D01605A804702D9BE
-:103C1000A3840247020800168F0E470E01470D1CB1
-:103C2000004FA54704A0703C4706F0470E01470D22
-:103C30002601E15A80470219B5F43E47041E8F0E53
-:103C4000471C1C20390F47031900B44704028200A7
-:103C5000F1471C2605580F804702F9E3800247030D
-:103C600060148F0C471C1C3C2F0F47031000344777
-:103C70000320020200F1471C2061DB0F8047028015
-:103C8000030002470306548F0C471C3C381C0F47A7
-:103C900002180090F03C4703028000F1471D04C861
-:103CA0000F8018003DA5E03E006047021C8F0C47C6
-:103CB0001C3C380C0F47031000283C47040190F1CE
-:103CC000471D25CA0F8047029005643E47041DBF6B
-:103CD0000C470E04470222CF4A6047050400042027
-:103CE00047031000188F62E1004100421C05A04705
-:103CF0000E04000467FB40404705040036044703F8
-:103D00001000981D6CF1024002002C470210014780
-:103D10000604470208284702100025F03C600042D4
-:103D20004704100232DAC3400040018541410005DA
-:103D3000000381005004470A16A804470206067AC9
-:103D40007C424047060402DFD348000459F07281E8
-:103D500047041EE0504710023FE8F24707801C7AF4
-:103D6000E0A5470220080F3001400001C25C05A019
-:103D70000401470D100E62DFFA4707102026FC50A1
-:103D80000100C018E13A01000147026E4713214FBC
-:103D9000F54707014221D90740007D000F28110097
-:103DA0000101C026020414471006EBF64707011C68
-:103DB00005FD036100021987F69D000247021F807E
-:103DC0000420470809470408000628E01820404757
-:103DD0000408470202DFE3402000D80B656100942D
-:103DE0000142B501470A0847040C002E07FA0402F5
-:103DF00047050C00042BCCC36070009187BA890082
-:103E0000CA020021C20020470F3C0010A047020850
-:103E1000470601F0D3410147029FF9510004000217
-:103E2000B680404711014EA0470902E8C342020094
-:103E300070153EC1470306D5A0A047100642D0B971
-:103E4000404707042830A047031805732147036043
-:103E500037A1470F06000E3BDCB16247050647035A
-:103E6000DAA00018007C0FBB09006001E035D047E4
-:103E7000020A470810470602CFE0470D0400190F59
-:103E800021194702014247040447080E47040E4720
-:103E9000021BD0470930470304059981720D470280
-:103EA00002470B03000980920447047F60C2470663
-:103EB000040142034005001008018047034003400D
-:103EC000470A03000F80174705386CC302470504F3
-:103ED000009E000E0A20100058F0470340471018BB
-:103EE00014470403F00347081E3C30A00847029023
-:103EF000E77F21470306EED4A447090100DE80478F
-:103F0000030402DA430247073E056EA04703B819CF
-:103F1000FF4147024002B689144709090894104737
-:103F2000034040F0024707802C3F5ECB470308A9BF
-:103F3000836101470202020F470A0801F747028026
-:103F4000470260C80A0247060E20060CC710470247
-:103F5000781BEB0108084702468F0847094B0016FB
-:103F60004047020146387B0201000247053C3C10F5
-:103F70000A47033009807447020363C00F470A20D1
-:103F80000012204703BC7AF947030D47052005DAE4
-:103F90000A200247020772B4080009405E8F081029
-:103FA00047080B0D941A4247033C00A00847050838
-:103FB000001C294B08002020D00541470280000248
-:103FC000C20F470A080B06A590470369CAA02047FD
-:103FD000050C0020020C042032801809200008C0C3
-:103FE00047025C8F084709200E1000084703243061
-:103FF0000401470504470220CCA141470218B0C084
-:10400000284704020F470C17900080001429EA0487
-:104010000247050447020378D1408000D005782884
-:1040200047041C8F0847090700D04703401472D982
-:1040300047030147050401CA5B4703110567B84000
-:10404000470242800F47080180000A760080808086
-:1040500000767B802000024703060E14000DA7089F
-:10406000180159C573BC006047024C8F0847090509
-:104070000EDF00804703237B470A26CEFF0940005E
-:10408000D9E3384147072047080518DA47053CE9D6
-:1040900080200038470603DBF7470338A138014783
-:1040A000040C000800404702350050134703040386
-:1040B000C04702266D7040084047040400047C702D
-:1040C00005470308ABA39C20470203010F040040EF
-:1040D000014020E0A00147030683D047022428DAEC
-:1040E0005012470504002423EC4702800071B17E82
-:1040F000BD40404702418F044703467E0D344702CE
-:10410000014706046410A04707020036DAF048476A
-:1041100002500743000147040F04470201639CEC6F
-:10412000342000098047052065DEA0470901FFF41F
-:10413000404000D9A720000A47020700CF044702E9
-:1041400002403401A0470802266650014709437027
-:10415000A04703500FA40020470204010F044704A6
-:104160002FE00220470826760E022247070621ECA0
-:104170004704980FF420470303808F06470201404D
-:10418000010A4706154001800C62CC4705C0470470
-:104190003D40E740C10050A7030020470202410F05
-:1041A000044702020284AA47055A1550010020263E
-:1041B000FE0847041000804702077CD34A020081B2
-:1041C000D772000C0801E001CF04008000424705CF
-:1041D00001800803C047020C41DD20470608002E7D
-:1041E00039D00A47030800C02820470220010F04E5
-:1041F00000C002004047040D98523C300240002AA3
-:10420000CF47070C0006036C470430073028010035
-:1042100001C000EF044703029E4705080803C0479A
-:10422000021401E024001047061C207000414703DF
-:10423000A0C14702404702010F04470437AA010406
-:10424000470219523C30470302DA10023002470697
-:1042500004EE8063470315310028C0470201EF04D4
-:1042600047034035040010470403C0470303F047E9
-:104270000340470506034A1047030803240020476C
-:104280000202400F04006047038801218047027248
-:104290003C30470368EE4022004047030600060218
-:1042A0001E2000180031EF32002160470201AF04E8
-:1042B00010470223CDE0470603C14704EF47034000
-:1042C00047051401E04705A5FBE0470306010F047D
-:1042D00047036004C0804704723C304703027D807E
-:1042E0004702404706036A0A4703019B2FF48347AE
-:1042F0000203808F048047060100010E0803C004FA
-:104300004702404BF1493000080F280447101405BC
-:1043100000044706030008187A3C300447023BCDEE
-:10432000F04070001047020447061047028047051E
-:1043300003A18A4704028047060803C447050A40D0
-:10434000800070FD24470280470D028047050280EF
-:10435000470401805A3C3040000600FA0A404703F7
-:1043600080470201470D0142C04704014047040352
-:104370008F470203C010470238ED0BC10002008DC9
-:1043800028470A010141840001C0278247040680B2
-:1043900047065A3C30400006027A054900054702AC
-:1043A00004000E47092A81A047031F938047095044
-:1043B000470203C010002401505F40470270030011
-:1043C000404702304703044706400002800F0008C0
-:1043D000470820007A3C30000E00637AA54047026F
-:1043E000804705044705184704C00060008F00049B
-:1043F0004709180803C05800042C70E34047029096
-:104400009D0008470E01C00300F04709018B523C94
-:10441000300C002C03FCC34200380008000C470E8F
-:10442000020014E0F847043FC04704080803C050E6
-:10443000470201700500300031F1000C00044047D4
-:104440000B40022ECA5047041DD080470319523C2E
-:104450003020470202DA470230008090000400203A
-:10446000704705784706065415A847080347030315
-:10447000C04702042C6A814000020007470304473A
-:10448000052800F3C2BF800003D280C0F0470701B7
-:10449000804702723C3006010C026F504018014701
-:1044A0000306470618180007E2954703400EE0F898
-:1044B000470950000AC0470401DA3C47024010CBCC
-:1044C000470402C00544428008470604024702220E
-:1044D000470820007840204703016D3447041847FF
-:1044E00004014850400100704706071C00084703BC
-:1044F00072007011020101470802470608470402D2
-:10450000470A04470220470680470C014706044734
-:104510000401470802C0470310471702470608472F
-:104520000B084716024706084704024706084706D5
-:1045300020470680471F0300070004470B7C471DE8
-:1045400003470F6C470CA84705024727204708047C
-:1045500047220240C04704080147030200404704C5
-:1045600008014705200447058010474C03470D709C
-:10457000471F014703044709D0470340473A024712
-:104580001208470D80470A80000247030247058052
-:10459000470502470608470620472204470D4010FA
-:1045A00030C04718067B38470240626D61404703C0
-:1045B00083DC05470430C0471803DBD0470301AB59
-:1045C0002022C0470203C0008047021030C04716B7
-:1045D0000103F8EC00B0018047020162000600838D
-:1045E000D6000A00180030C0471703F83001F04722
-:1045F0000903C20D1047021030C047160108805A47
-:1046000000B01400AA49A16040030083C447030C12
-:104610000030C0471702002D01800800064B6C02D5
-:1046200080030003C247041030C0470A80470D14BE
-:10463000EC50104702A2EDF540470383CC0547023A
-:10464000800030C047193AD8F04703A1E42047035F
-:1046500003C2008B01001030C04716010A805F8042
-:104660004708030083C60847032030C047172100CE
-:1046700028104708020003C00547031030C0471048
-:1046800002470980470502470483C647025C470288
-:1046900030C0471A10470503C0470303C2470280D2
-:1046A000001030C04717080969470740470383D601
-:1046B0000581470330C04718215D470720470303A2
-:1046C000C0000A47021030C0471708805F18104723
-:1046D00007100083DC4703800030C0470901470E04
-:1046E000227A00804707600003C2470201001030B1
-:1046F000C0471704000A1847024010F12960470616
-:104700000A470330C0471801504703040F00014017
-:1047100047091030C04717043C585010018010F171
-:104720006A06804704014702180030C047183C1051
-:10473000508047020F00414047091030C04717041E
-:104740003C5878A0470210F121404703A906F380A6
-:1047500000480030C047183C105847030F00400283
-:10476000800020193FE547028C1030C04717043CF9
-:104770005C470410F121604047028BACE00A47031C
-:1047800030C047183C1000C047020F0040028000B4
-:104790002002A7B50A47021030C04717043C5C4707
-:1047A0000410F160470490B788470430C047183CB4
-:1047B0001047040F47050222EFF54702201030C0D2
-:1047C000471708024B9980470210F16047048BAEEF
-:1047D000F81B470330C0470901470D0210DA1047A4
-:1047E000030F004047030202A5A50A47021030C08C
-:1047F000471708025A470410F168470320A907D158
-:104800009A020C0030C047170122EB470220000F2C
-:1048100047048000193EA58002081030C0471708E1
-:10482000826B470410F1284704A93CE00A47033093
-:10483000C04718115D47040F0040470280022A2636
-:10484000800002001030C04717183DC04704169979
-:1048500047058001B50A08470230C04712028C00A4
-:104860000800083C20470303096B47053FC1ED9052
-:1048700047021030C04709056047081C47026047DF
-:1048800005018010F1624702060083DE470318002D
-:1048900030C0470940470802803047068000010FBA
-:1048A0000041C0470303C047041030C047130C7CCD
-:1048B00000304703100080800AA13847020300A996
-:1048C000408047020C0030C0471202C278003047D7
-:1048D00003084702C00AA0404704294047030810C4
-:1048E00030DE4710084702404709C060F1804704A6
-:1048F00083C4470530C2470F01140003470A400034
-:10490000F0800008470203C20D0B47021030CE476B
-:10491000090847095C470A2A500447030183C44732
-:104920000240470230C247090847062002024702F8
-:10493000804706200045A0344702800003C2094793
-:10494000031030C00700A0470F804E7847072000B3
-:104950002A50470902470230C04709084708B242B7
-:1049600078470905A03C402847081030C04712800E
-:104970000E470C024702808083D6470530C04709A6
-:104980000847062000F24000084704D000204703F3
-:10499000024000800003C0470202001030C00747F9
-:1049A00003020F78044702204708540500304706E9
-:1049B00080470A1C000C0030C04704020F08024761
-:1049C000082000B3823A80204706804705804704CC
-:1049D00010A20447071041F700280010470380A0E9
-:1049E00047050800080379000447095981A50A40D2
-:1049F000470ADFB44047057147060800608369D065
-:104A0000B04709198D0D904709022483802800447E
-:104A1000090AF900A0018047030800083DC080E0B2
-:104A2000018020F5470306005A64A0470A02E7B355
-:104A3000C0400010222FDA11B047050847023C2081
-:104A400071B04702A0F080038047021A74470B023E
-:104A5000AA77144703014148504702804704304772
-:104A600004A010002A57A86047035A44850A470942
-:104A700002AA0C022C4702014000D8B00080470473
-:104A8000204703F147030F50F5C047031A64009015
-:104A9000470A1892D428000101406A5010470708BD
-:104AA0003DC030470320F5806047035A4488470BD8
-:104AB000341EB46C470223401BD8F0470608203C44
-:104AC0000030470320F08047041A65010B47094076
-:104AD000053EC04704046B804702080020470814C5
-:104AE000470302000347020CC5A8000D4047070812
-:104AF0000807C04704035810470202003C47080853
-:104B00004704404703332CBB0E0080470801128640
-:104B10002800014294DB4703C0470F08470780473E
-:104B20000A1E8040470202003B0090008047102888
-:104B3000470660470850A55EE060000208BBDA80C7
-:104B4000E0470701E94E518047061047023C1C0729
-:104B5000470B85068447042A6EF04706744702AA6D
-:104B600078F847072847023C0207804709025A00A5
-:104B70005470007047038047070108F46A47042017
-:104B8000F18247020240029DE7470280470702A5E3
-:104B900003424000304703F000024707980B4704E8
-:104BA00020F001C047028002830080014708030F04
-:104BB00052A047030C3E6A47090294DE18470A5484
-:104BC00014850A470AF0983C470303C3604709016C
-:104BD000541FD0470990144702904709030F1380D0
-:104BE0004702600C3C4E30000180470614C8470263
-:104BF00001804703E00846005A45E047021847088D
-:104C0000F0470503C0470A02BC1CD047062200201B
-:104C1000001A7400084709030F13A60447020C3C4E
-:104C20004A9810470505000294DD51E000100AF192
-:104C300084470443C48047020C4708F0043C2047E3
-:104C40000203C01010804705020001540909470300
-:104C500005F0A047043C010D0B000C4707030F12A1
-:104C6000806030000C3C4AB180C8470715CA500428
-:104C7000470220F580038003005A65E047020C4795
-:104C800008F004470403C010100014470602BC1CBF
-:104C9000084704F0470302001A54000B00044707BA
-:104CA000030F178047030C3C5E47028047060294BF
-:104CB000CDF9F0470903C4470CF0470503C0470A84
-:104CC00001541F70D0470603470203C0470820471E
-:104CD00002030F168047030C3C5A0001C847071413
-:104CE000FAB8E047080183DE47021C4709F0470590
-:104CF00003C0470314470602BC3CB890470983C071
-:104D0000470B02AA17A06047020C3C5A01804706D5
-:104D10000101E8FF71C047050780470401001080CA
-:104D20004708AA0404470303C010470A542C084745
-:104D30000604470680470C200400200AA85E1814C9
-:104D400000C047040108F54C704704A76000044701
-:104D500005080008470A0420001002A810008A0075
-:104D600040470404006419F8F0000100A0470A0855
-:104D7000470E083D60000447052000083DC0470479
-:104D80008005E000380004C3FCA04711483C00F057
-:104D90004708083C47062BA342D000043C3E470B83
-:104DA000020F78470360083D6010000180470A0544
-:104DB000804019B006000600C3C4E0470218470748
-:104DC000020F084704083C00F8470B700008470230
-:104DD00001EB404702243C471230083CE070470298
-:104DE00080470440083DE0304702802845E0470402
-:104DF000C3C4A981470F22083C20080014C04705FE
-:104E0000083C204703C0242BA002C047023C0101FC
-:104E1000084709020F304704083CE001F047070843
-:104E20003C604703204009B047023000C3C4A99842
-:104E30004709020F4705083C2001E04707083C20CE
-:104E4000470521EB4047033C0101470D2004470281
-:104E5000183C60008008470405470905E2E0284740
-:104E600002C3C5E0470D3C384702083C2001470516
-:104E7000024705B04703808BA06047033C471308F7
-:104E80003C40F84708083CC047042A01A4404702B8
-:104E900001C3C5A04711083C20F04708083C20B0DA
-:104EA00047032050A04703043C471202083CC04778
-:104EB000070100083DE0470501B1404703C3C5A015
-:104EC000184710083C470A083C4702C047033B7C90
-:104ED0002047033C0103470D0E010020083C6047BA
-:104EE00003804705083CE047038400012447020291
-:104EF00000AA85A101000C470B028000083C20009D
-:104F0000044707083C2010E147020200B447042A86
-:104F10008100080004470272009011030101470854
-:104F20000247060847040247080780044702204753
-:104F30000680470C01470604470401470D10472A25
-:104F40000847160247060847040247060847062096
-:104F5000470680471F024703044729034729A04704
-:104F60002D10471E0200404704080147030200407D
-:104F70004704080107804703200447058010474580
-:104F800001470603470D204718024706034703045D
-:104F90004709C0470340472B38472108470B4000CB
-:104FA00080470A80470502470580470502470518E4
-:104FB000084706202C471101470F04470D400030D9
-:104FC000C0472B1030C0472C30C0472B1030C04793
-:104FD0002C30C0471004471801001030C0470F8024
-:104FE000471C30C0472B1030C0472C30C0472B1017
-:104FF00030C0470E10471D30C0470A0200140B474F
-:105000001D1030C0470C28E1471E30C0471B044725
-:105010000F1030C0471B0A471030C0470B20280B29
-:10502000471D1030C0470C14E1471E30C0472B10FD
-:1050300030C0472C30C0472533069047031030C09E
-:1050400047242031A480470430C0472B1030C0478C
-:105050002C30C047253C0247041030C04723048051
-:105060003C14470530C04708804721801030C047B6
-:105070002901400030C047270147031030C0472CAA
-:1050800030C0470A80471D0A47021030C047280138
-:10509000470330C0471D0300F047070547031030A2
-:1050A000C0471FF147070D9A470330C0471702A8B2
-:1050B00009704705404706010800041030C0471139
-:1050C00080470501544147041000796047050801F5
-:1050D00000080030C047150447023C47060B404714
-:1050E00003802A81000847021030C04715020007DC
-:1050F000C05847041008684704AA85E1994703305F
-:10510000C047183C1047050301428047023C470551
-:105110001030C0471707C04A470410086A06C04746
-:1051200002C3C5A0470430C0470F04470530000242
-:105130005A40470503014047033C47051030C0472C
-:105140000F0A4707065848470410086B6680470255
-:10515000C3C5E00080470230C0470FF047083C104D
-:105160000847040B41428047023C0147041030C00D
-:10517000470F10470707C05A38470310002A06C0D8
-:105180004702C3C4E018470330C04711C0470502B7
-:105190005A500147040B41428047023C010147033A
-:1051A0001030C0470E50470280470506585E71C058
-:1051B000470210002B66C04702C3C4AF00A04702DD
-:1051C00030C04717025A504705034704013C4705C2
-:1051D0001030C047100180470506584870E047026C
-:1051E000100028470301C3C4E04702180030C0473D
-:1051F0000B083C47090100014098470401000340A7
-:1052000047023C3647041030C0470B083D60470951
-:1052100004470238E0470210002800404702C3C498
-:10522000E7470E3C47021010D9470D04470506C05A
-:105230004702080247112000034B470D02470502B1
-:10524000800010081CE0470D0200084704020020FF
-:105250004703028047041047041BB842C0470210AE
-:1052600080900902470B1C470C01470A073E470381
-:105270001014979598471301E04707016BCA99905E
-:1052800047093016B500024713F0470701606999D6
-:1052900090470506804702103488470F08470401ED
-:1052A00000204704040002A8100847030A00836492
-:1052B000471580470401E04705020202A85C184731
-:1052C000030A037942804718D9F0470702003C10CF
-:1052D00000E04704704704069E901B47110B4B806B
-:1052E000E0470707C05C001000040807B04703014F
-:1052F000A94F800A470E053203D42008B0024705A3
-:1053000008003C47020A470240A08047042801DD0C
-:1053100080470F3003D56A7880024704300007C009
-:105320005C00044703A37847051C95471E3C4702D1
-:10533000A047090E01AD1A470E01604703784708E0
-:1053400017C05C00104708100617900A001847079E
-:10535000020F4705A0014C470602900147021000CA
-:10536000E04702080B38470534A01B4709920F7825
-:105370004705824D470601470204000C0010470311
-:1053800003BC000447020216950A471103D04702E6
-:105390002047040604003C2047032020F0804704F7
-:1053A00002378009471004001A7881470501041864
-:1053B0003C6047032020F78166800201802CE04793
-:1053C00003023FC04709024703D070002047040290
-:1053D0004706202020F001428080001382990902B4
-:1053E00000443FC04709010004001A8180470B01B7
-:1053F000002020F30366C00012A346054713404770
-:105400000A3C470280003020F047051E81002947F2
-:105410001004021A01E0470604183C60470420F714
-:1054200080E04702101E8CC0470E01470301C009EF
-:10543000E02847097008002060F0804400800008E0
-:105440004E810A0080470B02470204021A79F004D9
-:10545000470B200020F3800700800004B4084712A7
-:1054600002D050A04707603C2047032060F08047EF
-:1054700002500010038D471104000A50A00847068F
-:10548000183C4047032020F7470410001D80470EBA
-:1054900001470203C25010A04707229447048060CE
-:1054A000F080470202003040C79F470D028000078E
-:1054B000C0CAD04707081A9408470201E020F747FE
-:1054C00003031030941F0E471003C06047020447C7
-:1054D000050C02940050A0006060F047052001ED2B
-:1054E00080471007C1EE01E0804705080A9408478D
-:1054F00002010020F7470306100014A547021847D1
-:105500000B01470203C040508447060C01680C5051
-:10551000A0003860F0470502810D1F40470C02478C
-:105520000207C0EA00B84705020A0A940100A04732
-:105530000220F74702084000029EE00A471042A8F6
-:10554000103080004047112047040B47100AA85A2A
-:10555000001000C0471150471543C0100080470895
-:105560003C470401010F34028047020142000E470C
-:10557000100C3C5A01904707083CE04705073140B2
-:105580004702208155E0471123C0003047093C0005
-:10559000080040008000A0000347160C3C5A0001A0
-:1055A0004707083C6071804703512047070E4710AA
-:1055B00023C0470201C047073C20008080000FF055
-:1055C000A14047170C3C5E4709083C400190470248
-:1055D0008FA5200280470401471123C010104709FE
-:1055E0003C204703010103B8001000402042E09036
-:1055F00047100C3C4A99804707083C404704020783
-:1056000047022000100056879E471023C010104705
-:10561000093C00084702C04702014047031C16B17D
-:1056200047110C3C4A984708083CC058470280473D
-:1056300007102DD0471143C0470B3C470280004064
-:1056400047040347160C3C4E470201804705083CBF
-:10565000C0001001470520470718470E43C2E04726
-:105660000A3C2010470501428047050D47100C3FBA
-:10567000EE4709083CE098470602804705011047BD
-:105680000C40471A6300294000100020470B704768
-:10569000088047111200A9408018470D40024704B6
-:1056A00008472720014704384712064706180040DC
-:1056B000472503004003C20010472701470283D655
-:1056C0000018470E30470401470C04470540471BAC
-:1056D00080470B02470402470240470F0F068047EE
-:1056E00003083C000147050285470B0447020402FA
-:1056F00081C047090102007A804703083D400080CD
-:1057000047040102470B074703A804B18A470D2845
-:105710000002083C20014702C0470408403C000842
-:105720008000802A5034024702840281E108470C3D
-:10573000064703083C6001E000C047034000183CF6
-:10574000605010148025A04702404702E804B98148
-:10575000470F50083C470B3C20014702402AA0401D
-:10576000470201000280C0471050083D607A0001E6
-:10577000804705183D4000A001002AA730470204D9
-:1057800005E804F00A2018470C7000483C4707025F
-:10579000700023C000700447022E7B3847030602C6
-:1057A00094E00E4710083CC047090BC140000A476F
-:1057B0000222402800054702E826B00147031006F0
-:1057C000B04704807E80470301541847080800B0A2
-:1057D0001908D04705034047022A81470580BEF1DA
-:1057E000984702020276803847022295EA01E100DA
-:1057F000804704010A75E971F0470401E0400201A5
-:105800002A96E7804705D010470280AF0654300043
-:1058100002017C0B470601470202F43C470480501A
-:10582000BC6047020430E6D047048286B01C4703C0
-:10583000053376684703147D4707800101417918D5
-:1058400008C00040A187E0470391E7B180470320EB
-:1058500004A1470484128228470209680908804786
-:105860000702BC2A7180470401E047033E82091900
-:10587000470380A5E847030200F20E6C47020A9432
-:105880000139E1C0470714FA01C04705E047033E6C
-:1058900094C009470303C14705AF0E4260020209E5
-:1058A00068087047080154087047034000FC47052A
-:1058B00015910F470343C4A0470304053A46280542
-:1058C000000A940080470802955E800800040011D9
-:1058D00064470554A8470403C10100180008550A8D
-:1058E000470420141C470601470202BC3A70804757
-:1058F0000205008002470303C0001E470343C5ADF5
-:105900009A4703A51F86470302BD6950A04705803B
-:10591000470215EC80B04702050121404047028351
-:10592000D6000A470303C0050A4703403604204750
-:1059300002083C20084702804702024703D82F088C
-:10594000F04702A8503C002047023C00D59B47038B
-:1059500043C4880147020220D2A0644702083CE009
-:10596000504702C047040148D47A701000042475DF
-:10597000F847043C15C38A470303C04703100004DB
-:1059800003CC004040083C4708040001C019D84738
-:10599000030500BC0020008028B5918A470343C559
-:1059A000A01E001042205220600050283CE0798068
-:1059B000018047040102E8EBB80001800007A16004
-:1059C0000006001407E947021847023D000D0002D7
-:1059D00000050AC03C47047C10F0470702A809D024
-:1059E000A540002CBD746247022030CE8D47044094
-:1059F00021A01B4703A557542802002040F980B07E
-:105A0000470401470202955D800847022C3DF7607C
-:105A100040200020F4950A470472008011006200C3
-:105A20002F824702010347041000080010100202F1
-:105A3000040022002020000804240447070804472B
-:105A4000032004002020202400082C040C0C470311
-:105A50000410100C00100008470308084703083022
-:105A60000030300400222606040800040400044725
-:105A7000042008000C000828000C0008002808007A
-:105A80001008082808470228282847020C10101080
-:105A900024000224242C2C0400282C2101080011AD
-:105AA0003010200004220222470320202030040866
-:105AB0003010001008000404040400040004470629
-:105AC00008000408080847020847022424040004C8
-:105AD0002C2C282847022101211004083010201006
-:105AE000470220002020080420202000044704044E
-:105AF0000800040404040010101010100006081020
-:105B000008080302470204040802042424240400B1
-:105B10002C2C2820020021012100020A200028004C
-:105B200008022828203004003030102000024702EC
-:105B300004000A02040400140006101010080447B0
-:105B40000208080008020C040C2C02022C2C2C2C3D
-:105B50000006282A2A470208220022000C022002FE
-:105B600020204702202030300202507040000A0EF0
-:105B70000C080C044703040010080810100212045B
-:105B80000002202020080824242400020247040ADE
-:105B90000E47030204470206240608082C2428287E
-:105BA0000202201030100E0A201028084702280098
-:105BB00020200A08203030180400021A0A040A0AB9
-:105BC0000C040C0C470208082808020C08082808D6
-:105BD0000C02280A280200080802200808002028D1
-:105BE0002010000C1010041008020404280C0408F3
-:105BF00028202121080031303020060E22222220C8
-:105C00000E0620470220040C101010000A47020460
-:105C10000404000C040447020A02470208000608B4
-:105C2000080A02080800060406040206082A284793
-:105C30000321213130060A303020200202202020AA
-:105C4000000804002010000600100010000C0400E2
-:105C50000404040616141010100206181008080197
-:105C600047020804040A020404040604082A0C2A51
-:105C7000220A0223232322000822222A200A0228A1
-:105C80002A30100400101000080202000808000862
-:105C9000000C040C0C020618081818040008180858
-:105CA000080A020C0C0C0600080E04220E0A06223A
-:105CB0002A22220008222222220C0222222222024E
-:105CC0000032001010000240504000020C08080C86
-:105CD00004080A04044703081010121204000247C3
-:105CE00002200E04240424200C0E02000202020CE6
-:105CF0000202020204020602060602080A262A0816
-:105D0000080B303030300608202028284702820057
-:105D10008001030002282828000208082818180E0D
-:105D2000091A1A0A080208080C0C0C00020C0022BE
-:105D300008000E020A2202060302022202080802DA
-:105D40000222020808222030100204101404040861
-:105D500000040008080408080001210200113010A6
-:105D600020080E022202000A084705021000101047
-:105D70000247021000040A0C04040006080802008E
-:105D80000A0206000A0A020E0A00060606020004BB
-:105D90000A0A0A02020013011130040A003000202E
-:105DA00002470508061047030647050208100004CD
-:105DB00047031414101000021810181801470208A5
-:105DC00004060200060606020C080A0A0A00080A6F
-:105DD00003010320470202200A020A001A0A1A12CB
-:105DE0000400081A08080002080808080800080C3F
-:105DF0000C0C02040C001810040010180010000213
-:105E0000040606060808060202000A0C0002000248
-:105E100047032000220C020002120002001212129C
-:105E200002470240424047020C08080804000204EE
-:105E3000040447041012120400124703020004066F
-:105E40000602470202020202470202470206040259
-:105E50000406060002000A021A0A000112120032A9
-:105E60000447022008200002080808080200080071
-:105E700008100403121A120847040402020206065C
-:105E80000202000422020200060100020002470290
-:105E90002200020A47023A2A321A020404120404B7
-:105EA000470408080400080001010200111010470F
-:105EB00002040202024708024702101002001010FA
-:105EC0000010000604060602470202020A0006004D
-:105ED000080A04020002040400020004080A0A106E
-:105EE000020013131302044702024706104702067A
-:105EF00047021000060010001047020A470214472C
-:105F000003141410040002180018180001101206DF
-:105F100016020006060200040008080847020201F3
-:105F2000010147041018100200181A1A0A04000A86
-:105F300002080200020008000847040404020404E6
-:105F40000400100400101012100002160606064786
-:105F50000302470202040808084706100402100062
-:105F600010100200100202020400020200020008E7
-:105F7000080808080002040404044704120204008C
-:105F8000121010120200061606024703024706040A
-:105F90000004000404001402001818181A0001126A
-:105FA0000202020400024702080002080800080278
-:105FB00047050401120212104702101206120002D5
-:105FC00006060006000447022000060120002047C4
-:105FD000041018104702383A320A02040606060472
-:105FE0004702110162003F8247020103470802474E
-:105FF00008024706010147062020470620204706E1
-:10600000042047064004470740470E8584470701A0
-:1060100047068047088047060202470602470802F3
-:10602000471E04470804471E0404471E2047072054
-:10603000204706202047060147080147360101474F
-:10604000164247084247060202470E212047062013
-:1060500021470610204706141447065050470610E3
-:1060600010470610104706951147061094470690F2
-:106070009047061010470602104706020247260402
-:1060800004472604470804471E20470720204706E8
-:10609000202047060101472E01470801471E4242C2
-:1060A00047070247063020470630304706111147A0
-:1060B00006141047065014470610504706101047A4
-:1060C0000611104706101147069494470610904792
-:1060D0000610104706121047061212470610104706
-:1060E0000710470E04470804472E0404472E2020BB
-:1060F0004706212047070147260101470882008003
-:106100000103472052024706305247063030470607
-:106110001010470611104706041547064040471661
-:106120000101470E84470804470E12024706121069
-:1061300047061012470610104706101047060414B1
-:10614000473604470804472E202047060121471EF2
-:10615000014708014716104707121047063012473B
-:10616000067272470710470E04470741054707406C
-:10617000470E014708014716040447060247080274
-:10618000470E020247061047071010470610104737
-:1061900006101047071047662120470721471601C0
-:1061A0000147161047071010470612124706203005
-:1061B0004706422047074247164140470701470E1E
-:1061C000010147260202471602470802470E104700
-:1061D00007101047061010470710475E2047072199
-:1061E000214708110262002F824702010347081B62
-:1061F0001B47041F1B4704041F47101B47051B1B9D
-:1062000047041F1B47041F1F47101B1B47041B1B72
-:1062100047041F1F47041F1F47051B470A1B1B4737
-:10622000051B4704040447041F1F47051B470A1B9F
-:106230001B4704E4FB4704E4E447041FFF47051B36
-:10624000470AF9194704E4F94704E4E44704F7F777
-:10625000470513470AF9F94704E4F94704E4E4471A
-:1062600004F7F74705F3470AF9E9470414FD470423
-:106270001E1C4704F7FF4705E1470AE9E947041CEC
-:10628000FD47041E1A4704EFFF4705E1470ADDC931
-:1062900047041EDD47043E3A4704BDBF4705A947F2
-:1062A0000ADDD94704A2FF4704A6A24704BDBD47A3
-:1062B00005B9470AFFDD4704A6FF47048486470463
-:1062C000BDBD470404BD470AFFFD470406FF470460
-:1062D000040447043D3D4704043D470AFFFF4704CB
-:1062E00006FF470404044704FDFD470404FD470A74
-:1062F000FBFB4705FB4704244705FDFD4705F94720
-:106300000AFBFB4704FBFB4704FFFB4704FFFF4777
-:1063100005FB470AFB224704FBFB4704DFFB47045E
-:10632000FFFF470522470A22024704FBFB4704DF21
-:10633000DB470426FF4705224780028200800103D5
-:1063400047022C2C47041F3E47041F1F4704CCDE86
-:106350004705C8470A3E2C47041F3F47049F1F4775
-:1063600004DEDE4705C8470A3F3E47041F3F470497
-:106370009F9F4704DEDE4705DA470A3736470401A8
-:10638000374704898147045ADA470552470A763667
-:106390004704C1F64704A9814704FAFA4705D247E2
-:1063A0000A74744704C1F44704A9E94704F2FA47A0
-:1063B00005F2470A74744704E5F44704EDED470419
-:1063C000F2FE4705F2470A7474470427744704CF66
-:1063D0008F470476FE470570470A747447041F749C
-:1063E00047049F9F470474F6470574470A7464473F
-:1063F000041B7447049B9B470476F6470574470AC1
-:1064000060604704197047048999470476F6470588
-:1064100076470A6060470409604704898947047623
-:10642000F6470576470A64644704096C4704818986
-:10643000470476F6470576470A76764704097E478D
-:10644000048189470476F6470576470A767647043D
-:10645000297E4704C189470476F6470576470A77BF
-:106460007647047F7F4704F7FF470477F7470576B1
-:10647000470A776047045F7F4704B7FF470477F711
-:10648000470560470A612047045F7F4704B79F477D
-:106490000461F7470540478002110362003F8247CD
-:1064A00002010347838282008001034783822244E2
-:1064B000B2010600470000000000000000000000DC
-:1064C00000040240000400000A0009000014024019
-:1064D000000400000A000900000C0240000800004F
-:1064E0000B00090000080240000400000A00090037
-:1064F0000014024080000000070009000000024074
-:106500000200000001000900001C02402000000001
-:1065100001000000001C0240080000000100000013
-:106520000000024000080000010000000000000818
-:106530000080000800000108008001080000020837
-:10654000000004080000080800000C080000100803
-:10655000000014080000180800001C0800000800D3
-:1065600010001800200028003000380040004800CB
-:1065700050005800000000006410B71DC8206E3B9A
-:10658000AC30D9269041DC76F4516B6B5861B24D3A
-:106590003C7105502083B8ED44930FF0E8A3D6D6A4
-:1065A0008CB361CBB0C2649BD4D2D38678E20AA00C
-:1065B0001CF2BDBD4932435F504D49435F4D4147D9
-:1065C00000537475636B20627574746F6E2072650E
-:1065D00067697374657220697320696E76616C698E
-:1065E000642C20636C656172696E672E004275745D
-:1065F000746F6E2069642000697320737475636B17
-:106600002100427574746F6E20776173207075730A
-:10661000686564206F6E20626F6F742E20427574FF
-:10662000746F6E20636F756E7465723A20004469F2
-:1066300073706C617920627573792D77616974204C
-:1066400074696D656F757420657870697265642111
-:10665000004650474120636F6E66696775726174CA
-:10666000696F6E206661696C65642E0044697370A1
-:106670006C617920696E697469616C697A656420FE
-:106680006166746572200020726574726965732E8C
-:1066900000446973706C617920696E697469616C1A
-:1066A000697A6174696F6E206661696C65642E0039
-:1066B000435245534554206E6F74206C6F772064AD
-:1066C0007572696E672072657365740043444F4E3E
-:1066D00045206E6F74206C6F772061667465722040
-:1066E000726573657400435245534554206E6F7450
-:1066F00020686967682061667465722072657365D9
-:10670000740043444F4E45206E6F7420686967687B
-:106710002061667465722070726F6772616D6D6959
-:106720006E6700456E61626C696E67203676362052
-:1067300028446973706C61792056444443290045AC
-:106740006E61626C696E6720347635202844697307
-:10675000706C617920564444502900446973616229
-:106760006C696E67203476352028446973706C61DB
-:10677000792056444450290044697361626C696E03
-:1067800067203676362028446973706C617920560C
-:1067900044444329002E2E2F7372632F647269764E
-:1067A0006572732F6932632F6932632E63002E2E58
-:1067B0002F7372632F647269766572732F69326307
-:1067C0002F6932635F68616C2E63004661737420C9
-:1067D0004D6F646520506C7573206E6F7420796501
-:1067E0007420737570706F72746564002E2E2F7331
-:1067F00072632F647269766572732F706572697047
-:10680000685F636F6E6669672E63006164647265BA
-:1068100073732000206973206F7574736964652039
-:1068200073797374656D20666C6173680066616965
-:106830006C656420746F2065726173652073656395
-:10684000746F72200050726F6772616D20666169AB
-:106850006C6564204000496E76616C6964206669ED
-:10686000726D7761726520646573637269707469B3
-:106870006F6E2100436865636B73756D6D696E673C
-:10688000206669726D7761726520757064617465E8
-:106890000043616C63756C61746564206368656353
-:1068A0006B73756D3A2000496E76616C6964206681
-:1068B00069726D776172652043524320696E20537F
-:1068C000504920666C61736821007072765F657252
-:1068D0006173655F6F6C645F6669726D7761726525
-:1068E000007072765F77726974655F6E65775F6658
-:1068F00069726D77617265005765277265206465FE
-:10690000616400436865636B73756D6D696E6720C4
-:10691000002062797465730D0A00436865636B73C8
-:10692000756D202D2077616E746564200020676F7F
-:106930007420004F757220696E7465726E616C20F0
-:10694000666C61736820636F6E74656E747320612A
-:106950007265206261642028636865636B73756D7E
-:10696000206661696C656429212054686973206917
-:1069700073207265616C6C792062616421004F75CF
-:10698000722070726576696F7573206669726D77B3
-:1069900061726520757064617465206661696C65FB
-:1069A000642C2061626F7274696E67207570646117
-:1069B00074652E004E6577206669726D7761726529
-:1069C00020697320617661696C61626C6521004C9D
-:1069D0006F6164696E67207265636F766572792096
-:1069E0006669726D77617265004661696C656420E5
-:1069F000746F206C6F6164207265636F7665727965
-:106A0000206669726D776172652C20737472696B90
-:106A100065206F6E652E2054727920616761696E02
-:106A20002E004661696C656420746F206C6F616430
-:106A3000207265636F76657279206669726D776121
-:106A400072652C20737472696B652074776F2E20C9
-:106A500054727920616761696E2E004661696C65C8
-:106A60006420746F206C6F6164207265636F76655B
-:106A70007279206669726D776172652C2073747209
-:106A8000696B652074687265652E205341442057F8
-:106A9000415443480048415244204641554C54001B
-:106AA00065786974207374616E646279000D0A0DF3
-:106AB0000A0D0A00E29688E29688E29688E29688B5
-:106AC000E29688E29688E295972020E29688E29600
-:106AD00088E29688E29688E29688E29688E2959720
-:106AE00020E29688E29688E29688E29688E2968886
-:106AF000E29688E2959720E29688E29688E2968868
-:106B0000E29688E29688E29688E29688E29597E295
-:106B10009688E29688E29688E29688E29688E296DF
-:106B200088E2959720E29688E29688E29688E29637
-:106B300088E29688E29688E29688E29688E29597BF
-:106B400000E29688E29688E29594E29590E295902C
-:106B5000E29688E29688E29597E29688E29688E245
-:106B60009594E29590E29590E29590E29688E2966F
-:106B700088E29597E29688E29688E29594E295906D
-:106B8000E29590E29688E29688E29597E29688E20E
-:106B90009688E29594E29590E29590E29590E29540
-:106BA00090E2959DE29688E29688E29594E295902F
-:106BB000E29590E29688E29688E29597E2959AE2CD
-:106BC0009590E29590E29688E29688E29594E29517
-:106BD00090E29590E2959D00E29688E29688E29692
-:106BE00088E29688E29688E29688E29594E2959DFE
-:106BF000E29688E29688E29591202020E29688E24B
-:106C00009688E29591E29688E29688E29688E296E6
-:106C100088E29688E29688E29594E2959DE29688CD
-:106C2000E29688E29688E29688E29688E295972036
-:106C300020E29688E29688E29688E29688E2968834
-:106C4000E29688E29594E2959D202020E29688E2E3
-:106C50009688E2959120202000E29688E29688E2CC
-:106C60009594E29590E29590E29688E29688E29576
-:106C700097E29688E29688E29591202020E2968815
-:106C8000E29688E29591E29688E29688E29594E20F
-:106C90009590E29590E29688E29688E29597E29642
-:106CA00088E29688E29594E29590E29590E2959D2F
-:106CB0002020E29688E29688E29594E29590E2950B
-:106CC00090E29688E29688E29597202020E29688C6
-:106CD000E29688E2959120202000E29688E296884C
-:106CE000E295912020E29688E29688E29591E295DD
-:106CF0009AE29688E29688E29688E29688E29688FA
-:106D0000E29688E29594E2959DE29688E29688E282
-:106D10009688E29688E29688E29688E29594E295D3
-:106D20009DE29688E29688E29688E29688E29688C6
-:106D3000E29688E29688E29597E29688E29688E263
-:106D400095912020E29688E29688E2959120202075
-:106D5000E29688E29688E2959120202000E2959ABA
-:106D6000E29590E2959D2020E2959AE29590E29539
-:106D70009D20E2959AE29590E29590E29590E295B9
-:106D800090E29590E2959D20E2959AE29590E295A9
-:106D900090E29590E29590E29590E2959D20E295A3
-:106DA0009AE29590E29590E29590E29590E2959026
-:106DB000E29590E2959DE2959AE29590E2959D206C
-:106DC00020E2959AE29590E2959D202020E2959A06
-:106DD000E29590E2959D202020004C61737420661E
-:106DE00069726D7761726520626F6F74207761736D
-:106DF00020737461626C653B20636C656172207303
-:106E00007472696B657300486F6C6420646F776E91
-:106E1000205550202B204241434B202B2053454CE2
-:106E200045435420666F72203520736563732E20AE
-:106E3000746F20666F7263652D626F6F742050529D
-:106E400046004669726D77617265206973206572CC
-:106E500061736564005761746368646F6720636180
-:106E600075736564206120726573657400536F6685
-:106E70007477617265206661696C75726520636103
-:106E8000757365642061207265736574004661697D
-:106E90006C656420746F207374617274206669720B
-:106EA0006D776172652C20737472696B65207468EC
-:106EB0007265652E004661696C656420746F20738D
-:106EC00074617274206669726D776172652C2073CB
-:106ED0007472696B652074776F2E004661696C650A
-:106EE0006420746F207374617274206669726D77A8
-:106EF0006172652C20737472696B65206F6E652EEC
-:106F000000466F7263652D626F6F74696E672072E1
-:106F100065636F76657279206D6F64652E2E2E0025
-:106F2000456E61626C696E67207761746368646F37
-:106F30006700426F6F74696E67206669726D776172
-:106F40007265204020002E2E2E0D0A0D0A00426F81
-:106F50006F7420626974733A2000536F66747761AE
-:106F60007265206661696C7572653B207265736538
-:106F70007474696E6721004153534552543A20009E
-:106F80003A00415353455254004153534552544ED5
-:106F9000002A2A2A20575446200053544D333200E9
-:106FA00053544D3332207065726970686572616C3C
-:106FB000206C6962726172792074726970706564A4
-:106FC00020616E206173736572740069746F612053
-:106FD00062756666657220746F6F20736D616C6C8C
-:106FE000002E2E2F7372632F7574696C2F736C656E
-:046FF0002E6300000C
-:106FF400FF00000000010203040102030406070865
-:04700400090000007F
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/boot_robert_evt@1478015115.bin b/bin/boot/boot_robert_evt@1478015115.bin
deleted file mode 100755
index e0c8ab83c3..0000000000
Binary files a/bin/boot/boot_robert_evt@1478015115.bin and /dev/null differ
diff --git a/bin/boot/boot_robert_evt@1478015115.hex b/bin/boot/boot_robert_evt@1478015115.hex
deleted file mode 100644
index a43d388478..0000000000
--- a/bin/boot/boot_robert_evt@1478015115.hex
+++ /dev/null
@@ -1,1799 +0,0 @@
-:020000040800F2
-:1000000000AA0120E5250008E1250008211E0008BE
-:10001000E1250008E1250008E125000800000000B6
-:10002000000000000000000000000000E1250008C2
-:10003000E125000800000000E1250008E125000896
-:10004000E1250008E1250008E1250008E125000878
-:10005000E1250008E1250008E1250008E125000868
-:10006000E1250008E1250008E1250008E125000858
-:10007000E1250008E1250008E1250008E125000848
-:10008000E1250008E1250008E1250008E125000838
-:10009000E1250008E1250008E1250008E125000828
-:1000A000E1250008E1250008E1250008E125000818
-:1000B000E1250008E1250008E1250008E125000808
-:1000C000E1250008E1250008E1250008E1250008F8
-:1000D000E1250008E1250008E1250008E1250008E8
-:1000E000E1250008E1250008E1250008E1250008D8
-:1000F000E1250008E1250008E1250008E1250008C8
-:10010000E1250008E1250008E1250008E1250008B7
-:10011000E1250008E1250008E1250008E1250008A7
-:10012000E1250008E1250008E1250008E125000897
-:10013000E1250008E1250008E1250008E125000887
-:10014000E1250008E1250008E1250008E125000877
-:10015000E1250008E1250008E1250008E125000867
-:10016000E1250008E1250008E1250008E125000857
-:10017000E1250008E1250008E1250008E125000847
-:10018000E1250008E1250008E1250008E125000837
-:10019000E1250008E1250008E1250008E125000827
-:1001A000E1250008E1250008E1250008E125000817
-:1001B000E1250008E1250008E125000861070008A5
-:1001C0006D070008E125000800000000E125000897
-:1001D000E1250008E1250008E1250008E1250008E7
-:1001E000E1250008E1250008E1250008E1250008D7
-:0801F000E1250008E1250008EB
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0E2BF00BFE82B0008014801F09B
-:1007700044B800BFE82B0008014800F005BE00BFE8
-:10078000E82B000837B50024012002F009FA019097
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F0E3F9002020E001339C
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F0C1F92846C7
-:1008000003B030BDD1650008FD650008086600082A
-:100810001266000808B500F083FB80F00100C0B24A
-:1008200008BD000008B50C22044B02FB003000F0AC
-:1008300099FC80F00100C0B208BD00BF882C000800
-:1008400010B5002401F096F8054820440C34017AD4
-:1008500000F06EFC302CF7D1BDE8104001F08BB8F1
-:10086000882C0008044BDA691106FBD59862DA6916
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F077F828464FF48021EA
-:100890001E4C01F071F82B68642623F0010394E8E4
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F01FFC03AB94E8070083E8070039
-:1008C00000211846022200240B4600F013FC06A863
-:1008D00002F07CF8089821460D4A70430023FFF788
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240B82C000839
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F021F9314688
-:100980004A46002001F072FD07F1080304F5927455
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F032FD044655206C44FFF750
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F08338000020D02C000805
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F046FD01A8FFF707
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F012FDF1E7012010BD00BF90
-:100A90003E66000810B5074C43F2CD71064848F693
-:100AA000B803224601F058FD01462046BDE810403B
-:100AB00000F0E4B83C010020ED2C000810B500F077
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B2000616600087C66000897660008A1660008F8
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F067BC00BF18
-:100BE000382C0008024B1868403000F0BBBA00BF38
-:100BF000382C000838B5204B012200211C6804F174
-:100C00002005284600F048FA0021284600F05EFA48
-:100C100004F1380000F0A0FA04F1400000F09CFA62
-:100C2000012104F12C000A4600F036FA002104F1FB
-:100C3000080001220B4600F05DFA0021012204F1B8
-:100C400014000B4600F056FA6068012101F070FFB5
-:100C50006068002101F06CFF94E8030000F08CFE56
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD382C00082B4B2DE999
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F00BFC384602
-:100CA000012100F013FA0021304600F00FFA012074
-:100CB00001F000FC684600F055FA054620B11C48DA
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000FDF9012001F0EEFB204600F043FA064644
-:100CE00008B114481BE0684600F03CFA054608B914
-:100CF000114814E0012001F0DDFB48464146FFF7B2
-:100D000055FF3846314600F0E1F90C480921FFF75C
-:100D10004DFF204600F026FA054610B90848FFF7B7
-:100D200081FE284603B0BDE8F08300BF382C0008E0
-:100D3000C0660008DC660008F6660008BA640008B1
-:100D40001267000808B5022001F0B4FB0A4B1B68CB
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D9FD022001F0A6FB0548FFF75BFE01203C
-:100D7000BDE8084000F0C8BD382C00083367000803
-:100D80004F6700080F4BF7B51C6802AD0F460121F5
-:100D9000203405F8010D1646204600F097F964202E
-:100DA00001F084FB28460121FFF700FF1EB1384601
-:100DB0003146FFF7FBFE2046002100F087F903B023
-:100DC000F0BD00BF382C0008F0B50746ADF2044D69
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0D8F8B6
-:100DF000284669464FF4806201F038FB0546EAE771
-:100E0000224600F0CDF869462246284601F02EFB26
-:100E10000DF2044DF0BD08B5202001F0A1FD002821
-:100E2000FAD108BD08B5022001F09AFD0028FAD0D9
-:100E30000220BDE8084001F09DBD00B58DB06846B8
-:100E400001F017FD0023684600934FF480730A9366
-:100E500035230B9301F03EFDFFF7E4FFFFF7DBFFC7
-:100E60000DB05DF804FB000030B5002495B02A48B1
-:100E7000022100F081FD294D0021032228190C34A4
-:100E80000B4600F037F9482CF5D1002105F1480058
-:100E900000240A4600F000F9002105F148004FF453
-:100EA000407500F013F901A801F0DAFC102301A845
-:100EB00002940193172303940593049406940794D2
-:100EC00001F0E6FC012001F029FDFFF7B6FF08A8BC
-:100ED00001F0CFFC662308A808941393129501F043
-:100EE000F9FCFFF79FFF08A801F0C3FC992308A8AD
-:100EF00008941393129501F0EDFCFFF793FF4CF269
-:100F0000503001F0D3FAFFF798FF0348022100F0B8
-:100F10003DFD15B030BD00BF001000A0C464000846
-:100F200030B502218DB01C4800F026FD022001F0F2
-:100F300009FD684601F09DFC4FF080636846009310
-:100F40004FF0407304934FF440730A93AF230B9315
-:100F500001F0C0FCFFF766FF01F0FCFC054601F064
-:100F6000F9FC044601F0F6FC240244EA004040EAA1
-:100F70000504FFF750FF094B9C4204D02046002493
-:100F8000FFF757FD00E001240348022100F0FEFCBA
-:100F900020460DB030BD00BF001000A020BB1800DF
-:100FA00070B515468CB004460E461B48022100F071
-:100FB000E3FC681E01F0C6FC684601F05AFC4FF0E5
-:100FC00080636846254400934FF0407304930A23DE
-:100FD00005934FF4406309934FF440730A934FF421
-:100FE000005308930B230B9301F074FC304601F07F
-:100FF000A1FCAC4204D001F0ADFC04F8010BF8E711
-:10100000022001F0B7FCFFF706FF0348022100F0C1
-:10101000BDFC0CB070BD00BF001000A0034A136BF4
-:1010200023F4FF6323F00703136370470038024083
-:1010300000F13F4000F57E00C0F387200A280AD85F
-:10104000054A135C591C11542BB9044901230A6B3E
-:10105000834013430B637047F4890020003802403B
-:1010600000F13F4000F57E00C0F387200A280DD82C
-:10107000074A135C53B1013BDBB2135433B9054942
-:1010800001230A6B834022EA03030B63704700BF0E
-:10109000F489002000380240436813B5009301230F
-:1010A000044600688DF8043000238DF805208DF883
-:1010B00007308DF80610FFF7BBFF2068694601F086
-:1010C00059FB2068FFF7CCFF02B010BD38B5037A9A
-:1010D00004460D460BB981F001052068FFF7A8FF13
-:1010E0002068A1882A4601F083FB2068BDE83840CB
-:1010F000FFF7B6BF13B5044640688DF8073000907F
-:1011000002208DF805208DF8040020688DF8061067
-:10111000FFF78EFFA27A2068218901F06DFB20681D
-:10112000694601F027FB2068FFF79AFF02B010BD67
-:10113000002313B5044601934368006800938DF8BB
-:101140000710FFF775FF2068694601F013FB206860
-:10115000FFF786FF02B010BD036813B10021FFF74F
-:10116000E7BF704738B504460068FFF761FFA18804
-:10117000206801F037FB05462068FFF771FF281C47
-:1011800018BF012038BD1FB5836804460093C368AB
-:1011900068460193FFF7E0FF636902A80293A36921
-:1011A0000393FFF7D9FF04B010BD10B50446012129
-:1011B000083002220023FFF79DFF04F114000121F3
-:1011C00002220023BDE81040FFF794BF0368DB69EB
-:1011D00010B5044673B9C36A63B10A2001F06AF915
-:1011E0002046FFF7D0FF2046E36A012198471420EC
-:1011F00001F060F92046FFF7D8FF2046BDE8104017
-:1012000000F0E0B910B5044600F04FFA48B10A20EA
-:1012100001F050F9204600F048FA80F00100C0B219
-:1012200010BD012010BD30B5044687B0C36A00214F
-:101230009847A3680021012500936846E3680A46A1
-:101240008DF808500193FFF727FF68460021FFF74C
-:101250003DFF6369002103A80393A3690A468DF843
-:1012600014500493FFF718FF03A80021FFF72EFF87
-:1012700007B030BD10B5044600F00AFA2368DB69F8
-:1012800033B9E36A4BB12046BDE81040FFF7CBBF4E
-:101290002046BDE81040FFF776BF10BD10B50446EC
-:1012A000FFF7E8FF2046BDE81040FFF78FBF0000C2
-:1012B0002DE9F3419846036804460E46DB6917465C
-:1012C0000BB900205BE000F0F0F9B8B925681422F2
-:1012D0000021284601F07FFC9DF828306F802046D1
-:1012E0006B71089B2E71AB60099B85F806802B61A2
-:1012F00000F0ECF9236800229A6111E02046FFF724
-:10130000CDFF2046FFF77EFF0028DFD1D9E79A699D
-:10131000B2F57A7F23DA013202209A6101F0CAF82D
-:10132000204600F0DFF90122236883F82020154AC7
-:101330000192019A511E01911AB193F82020002ABE
-:10134000F7D1002283F82020019A42B11D7D05F0DB
-:10135000FD02012ADBD16B1E5D425D4103E00025E9
-:10136000204600F0A8F923680022204683F82020B8
-:10137000FFF748FF10B92046FFF790FF284602B05C
-:10138000BDE8F08180841E0010B5044618B90E48EF
-:10139000A92101F00BF800212422006801F01BFCB8
-:1013A000204600F0CBF8236A2BB1002104F1200085
-:1013B0000A46FFF771FEE36A23B12046BDE81040FC
-:1013C000FFF731BF10BD00BFA567000810B5044688
-:1013D00018B90848B62100F0E9FF00680368DB6926
-:1013E0000BB9FFF7F3FE23681A68D3690133D361A1
-:1013F00010BD00BFA567000808B518B90748BF2190
-:1014000000F0D4FF00680268D36933B1013BD361B7
-:101410001BB9BDE80840FFF72DBF08BDA567000850
-:101420001FB50C46114618B90A4840F28D1103E069
-:1014300023B908484FF4C77100F0B8FF82888DE8DF
-:101440000A000021234602910068FFF731FF04B033
-:1014500010BD00BFA567000813460122FFF7E0BFDB
-:101460001FB50C46114618B90A484FF4D77103E06E
-:1014700023B9084840F2AF1100F098FF82888DE848
-:101480000A0000230121029323460068FFF710FFA2
-:1014900004B010BDA567000807B502AB03F8012D25
-:1014A0000122FFF7DDFF03B05DF804FB03680022B3
-:1014B000197583F82020704710B504686388227975
-:1014C000C3F3090322B92278012A18BF43F48063C9
-:1014D000A268E468121BFF2A95BF120443F0FF7351
-:1014E00002F47F0243F4803398BF134309B143F4FD
-:1014F000005342681268536010BD43681B681A6845
-:1015000022F0D60210B51A605A6842F480425A603E
-:1015100008220368BDE810401A70FFF7C7BF0368D0
-:10152000012110B50446586801F0F6FA002123683D
-:10153000BDE81040586801F0EFBA000043685A7BDC
-:1015400053B2002B30B506DA02F00F021B4B1344E6
-:10155000C0221A7606E003F16043C02203F561431E
-:1015600083F8002343689A7B53B2002B06DA02F01B
-:101570000F02124B1344C0221A7606E003F16043B7
-:10158000C02203F5614383F8002350F8045F0C4C3C
-:101590006B7B59B203F01F020123490903FA02F2DF
-:1015A00044F82120AA7B51B202F01F02490993405E
-:1015B00044F82130BDE83040FFF7B1BFFCEC00E05B
-:1015C00000E100E043682C499A688A42F0B507467A
-:1015D00087B004D929485121294A00F0DBFE294966
-:1015E0008A4205D91C7B34B1012C07D000F0E8FEFB
-:1015F0000124254603E00924102500E0022502A865
-:1016000001F0E4F979686019049A8B684343B2FBEE
-:10161000F3F603FB162303B9013E0F2E03D9174837
-:10162000702100F0C3FE03C900F0A6F97B684FF0FB
-:10163000000100221B68013D66F307110192013C85
-:101640008DF804508DF8071019688DF8054021F0C9
-:10165000010119600C49186801401960019919616C
-:101660009A60DA601A6842F001021A60074A596803
-:101670000A405A6007B0F0BD801A0600BE67000835
-:10168000DB670008A0860100001F30FF008000F823
-:1016900010B5044654F8043F93E8030000F076F9CF
-:1016A0002046BDE81040FFF73ABF43681B689869C1
-:1016B000C0F3C030704743681B681A6822F0D60236
-:1016C0001A605A6842F480425A60704703685A7937
-:1016D0000AB9012204E01A790AB9052200E00622BB
-:1016E0001A70704743681B681A6842F0D20210B53E
-:1016F0001A60026814791CB9196841F00401196074
-:10170000117801290CD15288012CC2F309020CBFB7
-:101710004FF08071002142F490320A435A6010BDAC
-:101720000121BDE81040FFF7C7BE38B54368054644
-:101730001C6803681A78013A072A5BD8DFE802F0D0
-:10174000045A5A5A223B5A57A269910701D59A79ED
-:10175000A2621A793AB9A26952060FD50522284623
-:1017600001211A7008E0012A08D1A269100605D5E6
-:101770000622284600211A70FFF79EFEA369D906AB
-:101780003AD525E0A269520705D5DA681969501CD7
-:10179000D860636A8B54A3691B0603D528460021D1
-:1017A000FFF78AFEA369580626D528460121BDE821
-:1017B0003840FFF7A2BEA269910705D5DA6819691A
-:1017C000501CD8608B5CA362A16911F0100109D094
-:1017D000E3692846022143F01003E361BDE8384085
-:1017E000FFF764BEA3691A06DCD52846D8E7A369CB
-:1017F000DB0701D400F0E4FD38BD43681B689A693B
-:10180000D20503D5DA6942F48072DA619A6951052A
-:1018100003D5DA6942F48062DA619A69920503D5E8
-:10182000DA6942F40072DA610321FFF766BE000054
-:10183000094B70B51C680D4606462046FFF7C6FDED
-:101840002A4631462046FFF707FE05462046FFF7A9
-:10185000D3FD284670BD00BF1C2C0008094B70B595
-:101860001C680D4606462046FFF7B0FD2A46314665
-:101870002046FFF711FE05462046FFF7BDFD28462E
-:1018800070BD00BF1C2C000837B500F073F81B4872
-:1018900001210222FFF700FC194801210222FFF773
-:1018A000FBFB00F068F800200DF10701FFF7C0FF17
-:1018B0009DF80750012D1DD114200DF10701FFF7F0
-:1018C000B7FFA8B10F4C237813B1013323700FE099
-:1018D0009DF80710142021F0060141F002018DF857
-:1018E0000710FFF7BBFF18B10320257000F0E2FDE1
-:1018F000012000E0002003B030BD00BF18650008E3
-:1019000030650008FF89002001460148FFF7DEBB73
-:101910001865000870470000B0F1804F08B503D289
-:101920000D48302100F042FD0C4B98420ED903F5D2
-:10193000803398420CD9B0F1A04F0BD3084A094B21
-:10194000B0F1204F34BF1846104608BD064808BD08
-:10195000064808BD064808BDFC670008FFFF0040B8
-:10196000892A0008712A0008A12A0008B92A00085B
-:10197000592A00087047704710B50C46FFF7CCFF96
-:10198000012103462046BDE81040184710B50C461B
-:10199000FFF7C2FF002103462046BDE8104018476C
-:1019A00038B5104C05464FF080512046FFF7E4FF54
-:1019B00045B154E8003F43F4807344E80032002A04
-:1019C00008D0F6E754E8003F23F4807344E800327F
-:1019D000002AF7D103484FF08051BDE83840FFF7A7
-:1019E000D5BF00BF00700040024B5868C0F34000F4
-:1019F000704700BF00700040024A136843F00803BC
-:101A00001360704700700040B0F1006F10B50446DD
-:101A10000BD20C48FEF7EEFF2046FFF70AF80A4803
-:101A2000FFF700F84FF0FF3010BD084B002053F8CF
-:101A3000042BA24202D81A68944202D301300B2828
-:101A4000F5D110BD1B680008246800083C6500083B
-:101A50002DE9F8430446174699460E46C1B3FFF7F1
-:101A6000D3FF0546601E3044FFF7CEFF002D8046B1
-:101A700031DB00282FDB461B01361FB10020314629
-:101A80004A46B8472C4600F0D3FD44451EDCF320FF
-:101A900000F0E4FD114B002133F8140000F016FEB5
-:101AA00009280AD00E48FEF7A5FF2046FEF7C1FF21
-:101AB000FEF730FF00F0CAFD0DE02FB1C5F10100C7
-:101AC00031464A462044B8470134DEE700F0BEFD07
-:101AD0000120BDE8F8830020BDE8F8836C650008AC
-:101AE0003D6800082DE9F0410F461646804600F09B
-:101AF0009FFD3E443C46F32000F0B0FDB44216D0BA
-:101B0000C7EB0805254414F8011B284600F014FE15
-:101B10000928F3D00848FEF76DFF2846FEF789FF35
-:101B2000FEF7F8FE00F092FD0020BDE8F08100F025
-:101B30008DFD0120BDE8F0815568000808B545F22B
-:101B4000555000F06BFE042000F06EFE40F6FF7072
-:101B500000F070FE002000F061FE4FF48050012183
-:101B6000BDE8084000F058BD08B500F071FEBDE8C2
-:101B7000084000F065BE08B57D2000F0E5FF0030AC
-:101B800018BF012008BD4900FEF7E2BF2DE9F04370
-:101B9000012185B005460020FEF7DAFF042000F0A1
-:101BA00051FB01A8294600F0A7FB01A800F0B3FBF8
-:101BB00008B93B4814E00C353A48FEF733FF029968
-:101BC0002846FFF701F904463748FEF713FF204681
-:101BD000FEF72FFFFEF79EFE039B9C4204D0334886
-:101BE000FEF720FF012057E0029CDFF8E08030483C
-:101BF000FEF718FF21462F4A002340460024FFF736
-:101C000027FF029F2C484FEA5709FEF70BFFBC4203
-:101C10001CD23E1B29486119B6F5803F28BF4FF4FE
-:101C200080363246FFF7BCF908EB04002349324600
-:101C3000FFF758FF18B92248FEF7F4FE06E009EB5B
-:101C400054003946FEF784FF3444E0E71D48FEF7B0
-:101C5000D1FE0298FEF7EDFE1B48FEF7CBFE1B49B6
-:101C6000029A002000F002FC04461948FEF7C2FE6A
-:101C70000398FEF7DEFE1748FEF7BCFE2046FEF78F
-:101C8000D8FEFEF747FE039B9C4204D01248FEF7A5
-:101C9000C9FE022000E0002005B0BDE8F08300BFCF
-:101CA0006668000884680008A1680008B768000832
-:101CB000DA680008871B0008F1680008008A002025
-:101CC00008690008136900082169000800800008FD
-:101CD0002A6900083D6900084369000810B5022020
-:101CE00000F0C8FAD8B3042000F0C4FA044670B17A
-:101CF0001B48FEF797FE042000F0B0FA022000F027
-:101D0000ADFA4FF40040BDE8104000F0A7BA154806
-:101D1000FEF788FE082000F0A1FA102000F09EFADD
-:101D2000202000F09BFA402000F098FA2046FFF7B0
-:101D30002DFF022807D1082000F084FA102000F0BF
-:101D400081FA00F061FB042000F088FA022000F024
-:101D500085FA4FF40040BDE8104000F073BA10BDA2
-:101D60008E690008C469000810B52548FEF75AFEC0
-:101D70004FF48000FFF70AFF10B102283AD809E0BB
-:101D8000202000F06BFA402000F068FA802000F07C
-:101D900059FA2FE0082000F055FA102000F052FA0E
-:101DA000202000F067FA20B91648FEF73BFE2020FD
-:101DB00007E0402000F05EFA58B91348FEF732FE03
-:101DC000402000F03FFA4FF4007000F03BFA00F0C2
-:101DD0001BFB0E480024FEF725FE082000F03EFA0B
-:101DE000102000F03BFA202000F038FA402000F0EC
-:101DF00035FA00E00124042000F030FA204610BD3E
-:101E0000DF690008F9690008326A00086B6A000897
-:101E100008B50248FEF706FE00F0FDFAA56A0008C4
-:101E20001EF0040F0CBFEFF30880EFF30980FFF7FB
-:101E3000EFBF704708B50120FEF7F4FC08B9002099
-:101E40000FE00020FEF7EEFC0028F8D00220FEF79D
-:101E5000E9FC0028F3D00320FEF7E4FC80F0010049
-:101E6000C0B200F0010008BD1FB504460E48FEF7E1
-:101E7000D9FD01A90C22204600F026FB01A8FEF79F
-:101E8000D1FD2046FEF782FE0220FEF7CBFC044681
-:101E90000220FEF7C7FCA04201D000F0B5FA0A20EC
-:101EA00000F008FBF4E700BF9B6A00087FB5BF485D
-:101EB0004FF08051FFF760FDFFF796FD044630B10B
-:101EC000FFF79AFDBA48FEF7ADFD00F0A4FA4FF017
-:101ED0008051B648FFF75AFDFEF74EFCFEF7CEFCE8
-:101EE000B448FEF79FFDB448FEF79CFDB348FEF7EB
-:101EF00099FDB348FEF796FDB248FEF793FDB24850
-:101F0000FEF790FDB148FEF78DFDFFF7BDFC00F038
-:101F1000BBF900F0DBF921460C2201A800F05BFEC2
-:101F200000F0D0F901A90C2200F0CEFA01A8FEF7CA
-:101F300079FDA748FEF776FDA548FEF773FD4FF43F
-:101F4000804000F097F990B1A248FEF76BFD4FF486
-:101F5000804000F083F9082000F080F9102000F0A4
-:101F60007DF9202000F07AF9402000F077F9FEF7A3
-:101F70007BFFFEF765FCFFF787FCFEF79FFDFEF792
-:101F8000D7FDFEF7FFFB08B1934803E0FEF742FCE4
-:101F900010B19248FFF768FF00F084F9802000F04C
-:101FA00069F918B1802000F059F94BE04FF4003086
-:101FB00000F060F920B14FF4003000F04FF943E039
-:101FC000FFF738FF68B141F288348548FEF72AFDF3
-:101FD000FFF730FF78B1012000F06CFA013CF7D137
-:101FE00032E0804B0CCB013301D0013203D17E486B
-:101FF000FEF718FD28E0FFF7BEFD48B3FFF7BBFD75
-:1020000010B17A48FEF70EFD4FF4007000F032F97F
-:1020100010B17748FEF706FD4FF4007000F01EF98E
-:10202000102000F027F9002800F0F8807148FEF732
-:10203000F9FC082000F012F9102000F00FF9FFF76A
-:1020400093FE98B96C48A5E76C48FEF7EBFCF6E701
-:102050004FF4007000F00EF90028CFD1082000F0F6
-:10206000FDF8102000F0FAF8FFF738FE4FF40050AA
-:1020700000F000F904464FF4805000F0FBF84000F7
-:1020800040EA8400C4B24FF4006000F0F3F820434B
-:10209000C0B20728C3B20DD14FF4006000F0DEF8E3
-:1020A0004FF4805000F0DAF84FF4005000F0D6F80A
-:1020B00053486FE701334FF40060DBB2023B052B5E
-:1020C00011D8DFE803F00C1003100C1000F0C6F874
-:1020D0004FF4805000F0C2F84FF4005003E000F0DD
-:1020E000BDF84FF4805000F0ADF84648FEF79AFC7A
-:1020F000FFF724FDFFF738FDFEF790FF394B42480C
-:102100005D681E68FEF776FC2846FEF792FC3F48A5
-:10211000FEF770FC0022930001324FF0FF3103F113
-:102120006043082A03F56143C3F88010C3F88011A7
-:10213000F1D1374B4FF4801200241A634FF48062C0
-:102140005C639C631A645C6400F01AFC31480121F2
-:1021500000F0BEFC21462F4800F0BAFCF32001211C
-:1021600000F0C2FC2146F32000F0BEFC0320012158
-:1021700000F0C6FC2146032000F0C2FC6FF4A05022
-:10218000012100F0C9FC21466FF4A05000F0C4FC0E
-:102190002148012100F0CCFC1F48214600F0C8FC7A
-:1021A00063B64FF0FF3EB546284700BF00700040C1
-:1021B000B06A0008BD6A0008C46A0008516B0008D4
-:1021C000E86B0008696C0008EA6C00086D6D000897
-:1021D000C36A0008EA6D0008014550FE024550FE42
-:1021E000176E000800800008526E0008656E000837
-:1021F0007D6E00089D6E0008034550FE116F0008BB
-:10220000044550FE306F0008426F0008566F00080A
-:10221000003802400010E022B379F764082000F093
-:1022200029F820B10548FEF7FDFB102003E0044823
-:10223000FEF7F8FB082000F005F815E7C56E00086A
-:10224000EB6E000810B50446002000F0A9FC40EA3F
-:1022500004010020BDE8104000F092BC10B5044617
-:10226000002000F09DFC20EA04010020BDE81040A1
-:1022700000F086BC10B50446002000F091FC20421E
-:1022800014BF0120002010BD08B50120FFF788FB16
-:102290000120FFF7EFFF20B90121BDE8084000F061
-:1022A0006FBC08BD08B50648FEF7A4FB002000F08F
-:1022B00077FCFEF7BEFBBDE80840FEF72BBB00BF76
-:1022C0005E6F0008022000F06BBC000008B5FFF74D
-:1022D000F9FF0449884204D00220BDE8084000F01C
-:1022E0004FBC08BD8BB8185808B50248FEF79AFBDA
-:1022F00000F08AF86A6F00081FB504460C2201A896
-:10230000FEF74EFE01AB03CB206018686160A06051
-:10231000204604B010BD0068A0F10C03584258419B
-:102320007047000080B51746064610480D461C460B
-:10233000FEF760FB3846FEF75DFB0D48FEF75AFBE3
-:102340003046FEF757FB0B48FEF754FB2846FEF7D6
-:1023500070FB2CB10848FEF74DFB2046FEF74AFB08
-:102360000648FEF75FFBFFF7BFFF00BF876F00085F
-:102370006A6D0008906F00086B6D0008C36A000862
-:102380001FB506AA52F8044B039200921A46234640
-:10239000FFF7C8FF0CB41FB506AA52F8043B03921E
-:1023A0000092014AFFF7BEFF926F0008002307B5B5
-:1023B00072460093014BFFF7E3FF00BF996F0008DF
-:1023C0007446064808B5FEF715FB2046FEF731FBBC
-:1023D0000348FEF727FBFFF787FF00BFA16F000848
-:1023E000C36A0008BFF34F8F0549064BCA6802F461
-:1023F000E0621343CB60BFF34F8F00BFFDE700BF28
-:1024000000ED00E00400FA0508B5FEF7CDFB00F092
-:10241000AFFBFFF7E7FF08B5FFF7E4FFF0B50646AF
-:10242000002401202546034694421DD011F804C023
-:1024300000F1010EBCF1000F03D17355774605463C
-:102440000DE00133774606F800C0DBB2FF2B07D161
-:1024500002F1FF3C644506D07355871C7546012385
-:1024600001343846E0E770467355F0BD30B5C9B168
-:10247000C0430A44914213D011F8013B0A4D83EA4C
-:10248000000404F00F0455F8244084EA101080EA98
-:10249000131303F00F0355F8233083EA1010E9E714
-:1024A000C04330BD084630BD8465000800010138D6
-:1024B000FDD1704710B504462CB14FF47A70013C41
-:1024C000FFF7F4FFF8E710BD0A2A10B504DC114845
-:1024D000BDE81040FEF7A6BA30230C461C2204F8D3
-:1024E000023B78234B700F2393400340D340092BCA
-:1024F00001D8303302E00F2B02D85733DBB200E0B3
-:102500002023043A04F8013B131DECD100238B7205
-:1025100010BD00BFDB6F000808B5826843689342B6
-:1025200003D304481421FFF741FF0268591C41609E
-:10253000D05C08BDF16F000843688268934210B513
-:1025400003D304481921FFF731FF02685C1C446083
-:10255000D15410BDF16F0008F0B587B00E460746A4
-:10256000154600210C2268461C4600F034FB002171
-:102570000C2203A80296009700F02DFB68460395F5
-:102580000594FFF7C9FF06466846FFF7C5FFB0424E
-:10259000014601D003A808E06846FFF7BDFF0446E6
-:1025A000D8B1012804D103A83146FFF7C5FFEBE7F6
-:1025B000030608D504F07F046846FFF7ADFF40EA44
-:1025C000042000F18004A4B20025A542DCDA03A8AF
-:1025D0000021FFF7B1FF0135F7E7049807B0F0BD20
-:1025E000FEE700000748084A0849121A08B500F03B
-:1025F000E7FA0748074A0021121A00F0ECFAFFF741
-:1026000055FC00BF000000201400002004700008EA
-:1026100014000020008A0120044B9A6809B110437D
-:1026200001E022EA00009860704700BF002004E04B
-:10263000044B1A69002A04DA034A5A6002F188320C
-:102640005A607047003C024023016745024A136903
-:1026500043F0004313617047003C0240014BD860D7
-:10266000704700BF003C02400E4BDA68D20310D422
-:10267000DA68D1060FD4DA68D2050ED4DA6812F01F
-:10268000E00F0CD1DB6813F0020F14BF0820092003
-:1026900070470120704706207047022070470720CE
-:1026A000704700BF003C0240092307B58DF8073092
-:1026B000FFF7DAFF8DF807009DF80730012BF7D000
-:1026C0009DF8070003B05DF804FB000070B50646F6
-:1026D00041B1012908D002290CBF4FF400754FF415
-:1026E000407503E00D4601E04FF48075FFF7DCFF15
-:1026F00009281ED10F4C236923F4407323612169FB
-:1027000029432161236923F0F8032361236943F0FE
-:1027100002031E432661236943F480332361FFF7DC
-:10272000C3FF236923F002032361236923F0F80325
-:10273000236170BD003C024070B505460E46FFF7B0
-:10274000B3FF092813D10A4C236923F44073236192
-:1027500023692361236943F0010323612E70BFF3D2
-:102760004F8FFFF7A1FF236923F00103236170BDA1
-:10277000003C0240F0B500220E680123934003EABA
-:10278000060E9E452AD1550003230468AB40DB4367
-:102790001C4004600C79076804FA05FC013C4CEA13
-:1027A0000707012C076011D884684F791C40AF409F
-:1027B0008460846827438760446824EA0E04446088
-:1027C0008C7947689440A4B23C434460C468234079
-:1027D000C360CB79C468AB402343C3600132102A85
-:1027E000CBD1F0BD0369194214BF0120002070470E
-:1027F00002B909048161704701F00703C9089B0011
-:1028000000EB81000F219A40994010B5046A24EA38
-:1028100001010162016A1143016210BD014B1860A0
-:10282000704700BF00300040014B5860704700BF48
-:1028300000300040014B9860704700BF00300040FE
-:102840004AF6AA22014B1A60704700BF00300040D0
-:102850004CF6CC42014B1A60704700BF003000407C
-:102860000023036043608360C3600361436183614D
-:102870007047002343608360C3600360036143616A
-:102880008361C361036243628362C3627047000075
-:102890000E4903680A6810B544691C4383691C43E8
-:1028A00022F07F43426823F03003234343EA02636C
-:1028B0000B60C36882684C681A43054B234013437E
-:1028C000026943EA02434B6010BD00BF001000A044
-:1028D000FEF7E0FF90E80C000E491A4383681A43A4
-:1028E000C3681A4303691A4383691A43C3691A43C5
-:1028F000036A1A43436A1A43836A1A43C36A10B5C8
-:102900001A434C69044B23401343426943EA824310
-:102910004B6110BD001000A000008090044B1A68AD
-:1029200010B142F0010201E022F001021A6070478A
-:10293000001000A0024B9A68920600D4986170477C
-:10294000001000A0024B9A68920600D418617047EC
-:10295000001000A0014B1878704700BF201000A0A5
-:10296000034B9B68184214BF01200020704700BF32
-:10297000001000A0014BD860704700BF001000A0FD
-:102980000F4B00211A6842F001021A6099601A6820
-:1029900022F0A85222F410221A600A4A5A600A4A07
-:1029A000C3F8842002F18062C3F888201A6822F4F8
-:1029B00080221A60D960C3F88C10C3F89010704759
-:1029C0000038024010300024003000201E4A936876
-:1029D00003F00C03042B10B503D0082B03D01B4BC2
-:1029E00019E01B4B17E05168536811F4800F5168D0
-:1029F00003F03F0318BF164AC1F3881108BF134AFA
-:102A0000B2FBF3F3104A4B435268C2F30142013266
-:102A10005200B3FBF2F30C4A036093680D49C3F311
-:102A20000313CC5C0368E34043609468C4F38224DE
-:102A30000C5D23FA04F484609268C2F342328A5C2B
-:102A4000D340C36010BD00BF003802400024F40032
-:102A500040787D0101000020044B1A6B09B110433E
-:102A600001E022EA00001863704700BF003802400E
-:102A7000044B5A6B09B1104301E022EA000058638D
-:102A8000704700BF00380240044B9A6B09B11043F5
-:102A900001E022EA00009863704700BF003802405E
-:102AA000044B1A6C09B1104301E022EA00001864DB
-:102AB000704700BF00380240044B5A6C09B1104304
-:102AC00001E022EA00005864704700BF003802406D
-:102AD000044B1A6909B1104301E022EA00001861B1
-:102AE000704700BF00380240044B5A6909B11043D7
-:102AF00001E022EA00005861704700BF0038024040
-:102B0000044B9A6909B1104301E022EA0000986180
-:102B1000704700BF00380240044B1A6A09B11043E5
-:102B200001E022EA00001862704700BF003802404E
-:102B3000044B5A6A09B1104301E022EA00005862CE
-:102B4000704700BF003802404209084B012A01D1FA
-:102B50001B6804E0022A01D11B6F00E05B6F00F0EC
-:102B60001F0023FA00F000F0010070470038024017
-:102B7000024A536F43F08073536770470038024036
-:102B800082B000230193054B0193019B03EB80006E
-:102B90000190019B196002B0704700BF50280040AF
-:102BA00082B000230193054B0193019B03EB80004E
-:102BB0000190019B186802B0704700BF5028004088
-:102BC000431E0A4410B5914204D011F8014B03F89A
-:102BD000014FF8E710BD02440346934202D003F8C8
-:102BE000011BFAE77047000014000020282C0008A1
-:102BF00000140240004000000E00040000140240D7
-:102C0000008000000F000400000000000000000031
-:102C10000000000000000000C4650008202C00082F
-:102C2000E82B000850000000006000400000000198
-:102C3000801A0600005F60003C2C00080054014030
-:102C400000002000000002402000000005000800F5
-:102C50000000024080000000070008000000024061
-:102C6000100000000000000000000240080000000A
-:102C700001000000000402400400000000040240C3
-:102C800001000000000000000018024008000000E1
-:102C900000000000001802401000000001000000C9
-:102CA000001802402000000001000000001802404F
-:102CB0004000000001000000000C02400001000084
-:102CC00008000700000C0240000200000900070095
-:102CD00001424F4F544C4F41444552000000000008
-:102CE000002A2A0000000000000000000047FF004A
-:102CF0004C6174746963650069434563756265324C
-:102D000020323031362E30322E32373831300050CA
-:102D10006172743A206943453430554C314B2D4330
-:102D20004D33364100446174653A204A756C203257
-:102D30003520323031362030393A35363A3339475A
-:102D400002FF7EAA997E5100010592002062016F68
-:102D500082470272007011000101470B1047028088
-:102D6000470502470580034708014702084711202D
-:102D7000470C02470B0247174047050147054047EC
-:102D80000C040090470F10470640470501470540D7
-:102D900047050147048000044710804705020020D2
-:102DA000000800804702014709084717014704341B
-:102DB000000C470403470D30475970470E801047F9
-:102DC000040200404704080147020702004047048C
-:102DD000080147052004474103470B03470D1C47E3
-:102DE0001080470901008047020347090847032470
-:102DF000472B7847124007470A40470C0400084712
-:102E00000E404705014706044704014706044706EC
-:102E1000104711800747061C470380470C08470AE4
-:102E20000C3020470F30E8470C63C1470C0C30478B
-:102E30000F400105470C03C0470C0C3020470D180C
-:102E40004702E04704020CB100180038470640472B
-:102E5000080C30471001074702010001CD724703FB
-:102E600098470F0C3020470D3000F9A0470810009C
-:102E700001C04705038047070C30470E300071053D
-:102E80004708300001470F0C3020470F580847040F
-:102E900001DCA00080470363C1470203C020AF529A
-:102EA00047050C3047100803470402E0F5470503C7
-:102EB000C0470202E0050FA01047040C3020471263
-:102EC00040002020470AC001E007A547060C304714
-:102ED000110D470314470B404703054703144702EE
-:102EE0000C3020470F900004470220470E17CFA256
-:102EF00047020847020C30471030092447022C478C
-:102F00000D02CD0FF047050C3020470F108004470D
-:102F100003684703010547100C304710110730477D
-:102F2000190C3020470D300010470A0147100C30B3
-:102F3000470E304702052047023447050247100C70
-:102F400030204707044706404704203404ED800042
-:102F50000247091C000847050C30470F404705048D
-:102F600022FC4702014707A00002C047060C3020A0
-:102F7000470903EAF52000404706035CA50018470F
-:102F800008401C8F0847050C30470A03D050470201
-:102F900040470601F0554703104706200200F0475E
-:102FA000050C30204709284703110001E0470320A2
-:102FB00038FC8002470A1E8F0847050C3047080876
-:102FC000004047033029470402BC03D0470AC047EA
-:102FD00003F047050C3020470A1C0F10470829DC76
-:102FE000A5003047090E8F0847050C30470C0F47E6
-:102FF00009415055002047090200F047050C3020D8
-:10300000470D0447065C76EC800247070847020636
-:103010008047060C30470802470504470301470371
-:103020003CF0470A01400C00F047050C30204708EF
-:1030300020470B1C21FAE732004047100C304709AB
-:103040000C470B2464F0F7084709028047070C304F
-:103050002047141C31CCE720804703383D44470209
-:10306000028047070C30470F404705027668FB4750
-:10307000024000C0403D4703028047070C30204714
-:10308000080C47050147053C63DE800010470C042F
-:1030900047040C30470A2047040247052402E8474A
-:1030A0000210470601014047020147050C3020008D
-:1030B000A100123C20000447021EF06047072000D8
-:1030C0001EF04047030D72BD400003428EEF4706DD
-:1030D0000C30470503C0C04704F047024000974743
-:1030E00003042000F0470401403C470201429C4792
-:1030F000070C302047033A3C200647030CF06018C9
-:1031000002108000060140024AA5001880000778DE
-:1031100015006047020CC96047050C30470503C025
-:10312000104704F0470205090747038001D05547BF
-:10313000039000401620000142C1096047050C3091
-:10314000204703323C202C47031CF04030470280CC
-:103150000004470220470501883941470202002543
-:10316000ACC02047040C30470503C0044704F001FD
-:1031700030080109000C4702404705F00F42820168
-:103180000020402547070C30204703323C204702EF
-:1031900080001EF040470280E847037C470705781F
-:1031A0001547044488002047040C3047040803C82E
-:1031B0000001470210F0470371094703964708C012
-:1031C0001640000342150020470202001C0C30206C
-:1031D0000001017A3C2047040EF0600008704703AC
-:1031E000A00601DAA047090A007E8800300002C06C
-:1031F000000C3047038D0003C04000243000F0472E
-:103200000308FB470240000340F5470901428700DD
-:103210002047040C0C30202000013A3C20201004F0
-:1032200047070804001000045AA102004000A0470C
-:1032300005603EEFA547050C300010070D0803C0E0
-:1032400047020247070520470334E001470B1C05EE
-:10325000A047020247020C3020040500723C200007
-:103260001047060450800447022021EEE20200408D
-:103270001810470403601FAAF5470202C0000C3073
-:10328000000405470203C0001004470542D8BD2CC6
-:1032900000103C767042470240008047030102C0A4
-:1032A0002C00F047050C3020000800723C2000A0E4
-:1032B00020784703300010470501DCA302304702A5
-:1032C000804703C001C047080C3000040B470203CD
-:1032D000C00052144704300008033C470234383021
-:1032E000A30020400147048101C2C0470C0A723C80
-:1032F000204702A03BF9014001404705202C0CF07B
-:10330000404703078402470306DEF5E0470A10083A
-:1033100003C10001547D69A70040404704020460D6
-:1033200000F047028050003C470402BCF1D0104737
-:103330000601804702723C20060024017F74400190
-:103340004047030647034EA50018470215A3C28055
-:103350006002002C91A0470B0803C047023C2E7866
-:10336000A01002404707D055470490003C47020197
-:10337000401DF3F047070347031215400400366869
-:103380007B64403047040CA047020DD10001470286
-:103390000723C24702034614ABC420470A0815405E
-:1033A00004023C004A58007047040C470203DFE265
-:1033B0004705803C47020266C20BC208470A03BCAD
-:1033C0001047023C294B7440002847042000281E67
-:1033D000F04000021801A3C20004016060AB470C7A
-:1033E000043C4703164268A0004047074010F047DE
-:1033F00002050800803C47021403B4C70010470AC6
-:1034000003BC100C4702035D7A014706A00E60FE64
-:10341000A047023001A7A3C2000803469E81A02056
-:10342000470A043C0004470202C85A0847071E0323
-:10343000C0F54705803C470201601D03F0470C2999
-:103440005047021E01D95B10404705800423CCA1E0
-:103450000247031123C247041D95E0470B901680D5
-:1034600047021C314CA547080202C00247048000F5
-:103470003C47043EE1D0470A1B47051F470601C0F1
-:1034800047030620E8A3024703B325ED00040166C5
-:1034900040ABC42047090A470502470601470526F5
-:1034A00070034704AFB694010A0242B507C004474F
-:1034B0001064F850104708701AA302B10001D047F9
-:1034C00003C00003DDB5E0471164005047083443F2
-:1034D000D05300228051A0470380D6C76EE1D04769
-:1034E00009081E5BC8104703040AF0404709FE00A4
-:1034F000404702198F304002000166A5E0470A0BE1
-:1035000000121E806000142800F0470240000747A8
-:103510000403F0A04080020007B0470301C24E94AC
-:1035200047080180470506470308F0401847021086
-:1035300000062000020C0A001947020B3A81816044
-:1035400002E68405A020470801470810F04704B7A9
-:10355000470240043CC00500028010874001010082
-:1035600002601402400447060300080036C9580CE4
-:103570000034001AF04030470218000CA14000FE51
-:10358000504A0247020120288047030480D0A04708
-:10359000060100030A7A05424702144702F0003090
-:1035A0004702FB0004408003F0804047044028802D
-:1035B0000003400100D080470603000500DE11D85B
-:1035C0004702366C1AF060470308000D8000020CB9
-:1035D0000A403008000B3801010002000D85E02090
-:1035E000470601000F0052E0404702142800F04750
-:1035F00003B0070009024702C00548200400074144
-:1036000041044702401602E0470A08F680D2100E35
-:1036100047021AF0404703184703200400A5400062
-:1036200080501175D04703C067A0140447080B09E8
-:103630001B28C020470310F04704C900400E3C3847
-:10364000C05A480100D887B5F8470303AEE80080A8
-:10365000470808019F141447041AF04047028018D5
-:103660000400201E2200A54130005C037B080847AF
-:1036700002E021CA470A050C56788240470310F041
-:103680004703F0E53C470340C05A40104702A7C338
-:103690000C04000262DC05470A0D81D6C9504705BB
-:1036A000A540470298984702A004301C05408000BE
-:1036B00018E04705600685014709050A32054A47B3
-:1036C00004405A470399933400400201C00A40471E
-:1036D0000210B047030847020105470A0581FE5161
-:1036E000D047040AF0403000901000040004027E2D
-:1036F0005F40100050E1B8280400E0400FF8124786
-:103700000A0B53E04A4705F000300070FD3C04000E
-:103710000220E00F48100079098168040002600C63
-:10372000C4471114004EA0400240470607C850C0CD
-:103730004703904705407EC70008470F020010A0CE
-:1037400040804047063BC00542470210D047052352
-:103750005DAF01470E06470744470306470203C80B
-:1037600050C0180018033E01006000063DC047111C
-:103770000447054247050402C005404702188FBCB4
-:10378000012047030E824716100001C000044702C3
-:10379000674850C0100001E13010470360471830FF
-:1037A0000001470204470223E005401047020DE0F4
-:1037B00047160C47070547030C0006674850C0F042
-:1037C000001017B2012847020780471008470B086E
-:1037D000470222E00540204702E7C001472340039B
-:1037E000E850C14703F0470402662F90471B10477B
-:1037F0000203C005404703D0470401442FB04047AF
-:103800001D736850C010470219F56C47020366EE3D
-:10381000D0471E42C00540304702ADE11C470201BF
-:1038200042AEF080470240470E0447090226036873
-:1038300050C00007101DFB08084702068DE8002055
-:10384000471038470A0403E0054040003085830CE8
-:10385000470508470F04470B040020736850C11048
-:103860004702804703C00060208E5420470D044764
-:103870000B04000442E00540100051E04703804182
-:1038800042650DA0470372009011010101470B1022
-:103890004706404705014705400002470608471113
-:1038A00020470680470502471208472201000247C9
-:1038B00004044711104706404705014705404703E8
-:1038C00016000147060447220200200008470208AC
-:1038D00047031047243C000C4706304768801047D8
-:1038E000040200404704080147030200404704085F
-:1038F000014704302004474D0147060447210300D7
-:103900008047050247030C471F1E472D024703400F
-:1039100047050147174047050147060447030301D0
-:10392000470604470610471D8047050247110C3023
-:10393000472C0C3020472B0C30472C0C3020472BC9
-:103940000C30470E01470C1047100C3020470D0279
-:10395000471D0C30472C0C3020472B0C30472C0CCB
-:103960003020472B0C30472C0C3020472B0C304795
-:103970002C0C3020472B0C30472C0C3020472B0CC4
-:1039800030471308000400205547088000424708CC
-:103990000C302047120C00200168554047074002B8
-:1039A000004047070C3047150400200F470B020565
-:1039B000500447040C30204714260168F0C0470922
-:1039C000661E855447050C3047180F470DF0804799
-:1039D000040C302047150168F0C0470A168F0C47C9
-:1039E000050C3047150C47020F470DF08047040CBB
-:1039F0003020471501E8F0C0470A1E8F0C47050C20
-:103A00003047150C20200F470B0200F047050C3003
-:103A1000204714266548F0C04709601C8F0C4705F5
-:103A20000C30471620200F470A460200F047050CCD
-:103A3000302047156548F0C047080207548F0C0036
-:103A40000147030C3047180F470DF047050C302095
-:103A5000471206470201C8F0C047076047021C8FA3
-:103A60000C47050C3047170C0F470503C0124702DF
-:103A70000401B0F047050C3020471501DAF0C047CB
-:103A80000423C0470307148F0C47050C304718F078
-:103A90004703D9B0A4470280470A0C3020471406D8
-:103AA0000008F0470350A780020040470A0C304747
-:103AB0001620300F4703D900A047040247080C30F6
-:103AC00020471505780F80470250A7800247034022
-:103AD0004047070C30471524201B0F470528470D8A
-:103AE0000C3020471501F80F804703078002470C70
-:103AF0000C3047170D0F4704B020470D0C302047FE
-:103B0000140661790F804703078402470C0C304785
-:103B10001504200D0F47035000A8470D0C30204717
-:103B2000142004F80F804703070002470C0C3047AD
-:103B30001506203C0F47035000B4470440050A080F
-:103B40008047040C302047143501C90F804703011A
-:103B500000024702026000E50447050C30471536B5
-:103B60006C1C0F47035000284707588047040C304F
-:103B70002047141428E80F80470307040200604719
-:103B80000214E05447050C3047166D4CA54703500E
-:103B900000204704C0040A088047040C3020471561
-:103BA00029415A8047038700024702024702A504C1
-:103BB000471B10044000F0470301A9A00004800047
-:103BC00042471F207808F047020800BFA02140406C
-:103BD000020040471D10042060A54702404702A094
-:103BE0004702010040020550471C2007605A8047E9
-:103BF00003078002470202601E8556471D0340A549
-:103C000047035190B04702014704F0471D01605A35
-:103C1000804702D9A3840247020800168F0E470E80
-:103C200001470D1C004FA54704A0703C4706F04714
-:103C30000E01470D2601E15A80470219B5F43E47AF
-:103C4000041E8F0E471C1C20390F47031900B44770
-:103C500004028200F1471C2605580F804702F9E351
-:103C60008002470360148F0C471C1C3C2F0F470336
-:103C7000100034470320020200F1471C2061DB0FD3
-:103C800080470280030002470306548F0C471C3C08
-:103C9000381C0F4702180090F03C4703028000F1E7
-:103CA000471D04C80F8018003DA5E03E0060470294
-:103CB0001C8F0C471C3C380C0F47031000283C4756
-:103CC000040190F1471D25CA0F8047029005643E0C
-:103CD00047041DBF0C470E04470222CF4A60470528
-:103CE0000400042047031000188F62E100410042E5
-:103CF0001C05A0470E04000467FB40404705040074
-:103D0000360447031000981D6CF1024002002C4756
-:103D1000021001470604470208284702100025F058
-:103D20003C6000424704100232DAC3400040018583
-:103D300041410005000381005004470A16A80447CA
-:103D40000206067A7C424047060402DFD34800049C
-:103D500059F0728147041EE0504710023FE8F247D5
-:103D600007801C7AE0A5470220080F3001400001BF
-:103D7000C25C05A00401470D100E62DFFA47071070
-:103D80002026FC500100C018E13A01000147026EF4
-:103D90004713214FF54707014221D90740007D0015
-:103DA0000F2811000101C026020414471006EBF68B
-:103DB0004707011C05FD036100021987F69D0002FB
-:103DC00047021F800420470809470408000628E02E
-:103DD000182040470408470202DFE3402000D80BC8
-:103DE000656100940142B501470A0847040C002EA2
-:103DF00007FA040247050C00042BCCC36070009145
-:103E000087BA8900CA020021C20020470F3C001077
-:103E1000A0470208470601F0D3410147029FF9512C
-:103E200000040002B680404711014EA0470902E895
-:103E3000C342020070153EC1470306D5A0A047103B
-:103E40000642D0B9404707042830A047031805733D
-:103E50002147036037A1470F06000E3BDCB16247E4
-:103E600005064703DAA00018007C0FBB09006001BB
-:103E7000E035D047020A470810470602CFE0470D59
-:103E80000400190F21194702014247040447080E94
-:103E900047040E47021BD0470930470304059981A8
-:103EA000720D470202470B03000980920447047F0A
-:103EB00060C2470604014203400500100801804724
-:103EC00003400340470A03000F80174705386CC3BF
-:103ED00002470504009E000E0A20100058F0470318
-:103EE0004047101814470403F00347081E3C30A055
-:103EF00008470290E77F21470306EED4A447090153
-:103F000000DE8047030402DA430247073E056EA045
-:103F10004703B819FF4147024002B689144709090F
-:103F200008941047034040F0024707802C3F5ECBC7
-:103F3000470308A9836101470202020F470A0801EB
-:103F4000F7470280470260C80A0247060E20060CA7
-:103F5000C7104702781BEB0108084702468F084745
-:103F6000094B00164047020146387B020100024718
-:103F7000053C3C100A47033009807447020363C0C4
-:103F80000F470A200012204703BC7AF947030D4768
-:103F9000052005DA0A200247020772B4080009402A
-:103FA0005E8F081047080B0D941A4247033C00A08F
-:103FB00008470508001C294B08002020D005414770
-:103FC00002800002C20F470A080B06A5904703694A
-:103FD000CAA02047050C0020020C042032801809DA
-:103FE000200008C047025C8F084709200E10000817
-:103FF000470324300401470504470220CCA1414770
-:104000000218B0C0284704020F470C179000800028
-:104010001429EA040247050447020378D1408000CE
-:10402000D005782847041C8F0847090700D04703AC
-:10403000401472D947030147050401CA5B470311C5
-:104040000567B840470242800F47080180000A76A2
-:104050000080808000767B802000024703060E14DB
-:10406000000DA708180159C573BC006047024C8FAA
-:10407000084709050EDF00804703237B470A26CE49
-:10408000FF094000D9E3384147072047080518DAFF
-:1040900047053CE980200038470603DBF747033833
-:1040A000A1380147040C00080040470235005013B6
-:1040B00047030403C04702266D70400840470404CC
-:1040C00000047C7005470308ABA39C204702030152
-:1040D0000F040040014020E0A00147030683D047C1
-:1040E000022428DA5012470504002423EC470280FA
-:1040F0000071B17EBD40404702418F044703467EB8
-:104100000D344702014706046410A0470702003639
-:10411000DAF0484702500743000147040F04470202
-:1041200001639CEC342000098047052065DEA04730
-:104130000901FFF4404000D9A720000A4702070008
-:10414000CF04470202403401A0470802266650010E
-:1041500047094370A04703500FA400204702040101
-:104160000F0447042FE00220470826760E0222475C
-:10417000070621EC4704980FF420470303808F06BD
-:1041800047020140010A4706154001800C62CC47F6
-:1041900005C047043D40E740C10050A70300204749
-:1041A0000202410F044702020284AA47055A155031
-:1041B00001002026FE0847041000804702077CD338
-:1041C0004A020081D772000C0801E001CF04008090
-:1041D0000042470501800803C047020C41DD20472B
-:1041E0000608002E39D00A47030800C028204702DD
-:1041F00020010F0400C002004047040D98523C30DB
-:104200000240002ACF47070C0006036C4704300722
-:104210003028010001C000EF044703029E47050853
-:104220000803C047021401E024001047061C207058
-:1042300000414703A0C14702404702010F04470461
-:1042400037AA0104470219523C30470302DA100230
-:104250003002470604EE8063470315310028C0474B
-:104260000201EF0447034035040010470403C04730
-:104270000303F0470340470506034A1047030803BA
-:10428000240020470202400F0400604703880121F8
-:10429000804702723C30470368EE402200404703EB
-:1042A000060006021E2000180031EF320021604790
-:1042B0000201AF0410470223CDE0470603C14704C3
-:1042C000EF47034047051401E04705A5FBE047031E
-:1042D00006010F0447036004C0804704723C304766
-:1042E00003027D804702404706036A0A4703019B99
-:1042F0002FF483470203808F048047060100010EDC
-:104300000803C0044702404BF1493000080F28045D
-:104310004710140500044706030008187A3C3004CF
-:1043200047023BCDF040700010470204470610479B
-:104330000280470503A18A4704028047060803C498
-:1043400047050A40800070FD24470280470D028027
-:1043500047050280470401805A3C3040000600FABD
-:104360000A40470380470201470D0142C04704014C
-:10437000404704038F470203C010470238ED0BC1CA
-:104380000002008D28470A010141840001C02782F4
-:104390004704068047065A3C30400006027A054929
-:1043A0000005470204000E47092A81A047031F9316
-:1043B00080470950470203C010002401505F404766
-:1043C00002700300404702304703044706400002E2
-:1043D000800F0008470820007A3C30000E00637A06
-:1043E000A5404702804705044705184704C0006000
-:1043F000008F00044709180803C05800042C70E31C
-:10440000404702909D0008470E01C00300F0470995
-:10441000018B523C300C002C03FCC34200380008D6
-:10442000000C470E020014E0F847043FC0470408A0
-:104430000803C050470201700500300031F1000C44
-:10444000000440470B40022ECA5047041DD080474D
-:104450000319523C3020470202DA470230008090B4
-:1044600000040020704705784706065415A8470841
-:1044700003470303C04702042C6A8140000200077F
-:1044800047030447052800F3C2BF800003D280C061
-:10449000F0470701804702723C3006010C026F5062
-:1044A000401801470306470618180007E29547031E
-:1044B000400EE0F8470950000AC0470401DA3C47C3
-:1044C000024010CB470402C005444280084706045E
-:1044D00002470222470820007840204703016D343C
-:1044E0004704184704014850400100704706071C64
-:1044F00000084703720070110201014708024706D5
-:1045000008470402470A04470220470680470C0177
-:10451000470604470401470802C047031047170233
-:10452000470608470B084716024706084704024794
-:104530000608470620470680471F03000700044778
-:104540000B7C471D03470F6C470CA8470502472704
-:104550002047080447220240C047040801470302DD
-:104560000040470408014705200447058010474CD8
-:1045700003470D70471F014703044709D047034015
-:10458000473A02471208470D80470A800002470356
-:1045900002470580470502470608470620472204D0
-:1045A000470D401030C04718067B38470240626D07
-:1045B0006140470383DC05470430C0471803DBD064
-:1045C000470301AB2022C0470203C000804702100E
-:1045D00030C047160103F8EC00B0018047020162C9
-:1045E00000060083D6000A00180030C0471703F801
-:1045F0003001F0470903C20D1047021030C04716C2
-:104600000108805A00B01400AA49A1604003008349
-:10461000C447030C0030C0471702002D018008007A
-:10462000064B6C0280030003C247041030C0470AE7
-:1046300080470D14EC50104702A2EDF5404703836C
-:10464000CC054702800030C047193AD8F04703A193
-:10465000E420470303C2008B01001030C04716015D
-:104660000A805F804708030083C60847032030C0E4
-:104670004717210028104708020003C00547031010
-:1046800030C0471002470980470502470483C647E8
-:10469000025C470230C0471A10470503C0470303B6
-:1046A000C2470280001030C0471708096947074019
-:1046B000470383D60581470330C04718215D47076C
-:1046C00020470303C0000A47021030C04717088084
-:1046D0005F18104707100083DC4703800030C04795
-:1046E0000901470E227A00804707600003C2470293
-:1046F00001001030C0471704000A1847024010F1AB
-:10470000296047060A470330C04718015047030491
-:104710000F00014047091030C04717043C585010A3
-:10472000018010F16A06804704014702180030C07A
-:1047300047183C10508047020F0041404709103095
-:10474000C04717043C5878A0470210F121404703A6
-:10475000A906F38000480030C047183C10584703B2
-:104760000F004002800020193FE547028C1030C046
-:104770004717043C5C470410F121604047028BACB2
-:10478000E00A470330C047183C1000C047020F0042
-:10479000400280002002A7B50A47021030C0471728
-:1047A000043C5C470410F160470490B7884704302C
-:1047B000C047183C1047040F47050222EFF5470297
-:1047C000201030C0471708024B9980470210F16053
-:1047D00047048BAEF81B470330C0470901470D0261
-:1047E00010DA1047030F004047030202A5A50A474D
-:1047F000021030C0471708025A470410F1684703F7
-:1048000020A907D19A020C0030C047170122EB47BC
-:104810000220000F47048000193EA58002081030D6
-:10482000C0471708826B470410F1284704A93CE0F1
-:104830000A470330C04718115D47040F0040470284
-:1048400080022A26800002001030C04717183DC0A1
-:104850004704169947058001B50A08470230C0474A
-:1048600012028C000800083C20470303096B47052F
-:104870003FC1ED9047021030C04709056047081C52
-:104880004702604705018010F1624702060083DE9F
-:104890004703180030C047094047080280304706E8
-:1048A0008000010F0041C0470303C047041030C01F
-:1048B00047130C7C00304703100080800AA1384762
-:1048C000020300A9408047020C0030C0471202C218
-:1048D0007800304703084702C00AA0404704294037
-:1048E0004703081030DE4710084702404709C06000
-:1048F000F180470483C4470530C2470F0114000309
-:10490000470A4000F0800008470203C20D0B47022F
-:104910001030CE47090847095C470A2A500447036C
-:104920000183C4470240470230C2470908470620B6
-:1049300002024702804706200045A034470280005B
-:1049400003C20947031030C00700A0470F804E780C
-:10495000470720002A50470902470230C04709088C
-:104960004708B24278470905A03C40284708103064
-:10497000C04712800E470C024702808083D647054D
-:1049800030C047090847062000F24000084704D01D
-:1049900000204703024000800003C04702020010CD
-:1049A00030C0074703020F78044702204708540528
-:1049B0000030470680470A1C000C0030C047040244
-:1049C0000F080247082000B3823A8020470680473C
-:1049D0000580470410A20447071041F70028001083
-:1049E000470380A0470508000803790004470959D8
-:1049F00081A50A40470ADFB4404705714706080011
-:104A0000608369D0B04709198D0D9047090224834E
-:104A100080280044090AF900A00180470308000823
-:104A20003DC080E0018020F5470306005A64A0479E
-:104A30000A02E7B3C0400010222FDA11B047050880
-:104A400047023C2071B04702A0F080038047021A61
-:104A500074470B02AA77144703014148504702806C
-:104A60004704304704A010002A57A86047035A445F
-:104A7000850A470902AA0C022C4702014000D8B05F
-:104A800000804704204703F147030F50F5C0470358
-:104A90001A640090470A1892D428000101406A5015
-:104AA000104707083DC030470320F5806047035A90
-:104AB0004488470B341EB46C470223401BD8F04790
-:104AC0000608203C0030470320F08047041A6501A7
-:104AD0000B470940053EC04704046B8047020800AD
-:104AE00020470814470302000347020CC5A8000D25
-:104AF000404707080807C047040358104702020050
-:104B00003C4708084704404703332CBB0E0080474E
-:104B1000080112862800014294DB4703C0470F08B2
-:104B2000470780470A1E8040470202003B00900072
-:104B300080471028470660470850A55EE0600002E5
-:104B400008BBDA80E0470701E94E5180470610476D
-:104B5000023C1C07470B85068447042A6EF0470673
-:104B6000744702AA78F847072847023C02078047A3
-:104B700009025A005470007047038047070108F487
-:104B80006A470420F18247020240029DE747028003
-:104B9000470702A503424000304703F000024707E1
-:104BA000980B470420F001C0470280028300800177
-:104BB0004708030F52A047030C3E6A47090294DEE0
-:104BC00018470A5414850A470AF0983C470303C360
-:104BD00060470901541FD0470990144702904709C4
-:104BE000030F13804702600C3C4E300001804706E3
-:104BF00014C8470201804703E00846005A45E047D1
-:104C000002184708F0470503C0470A02BC1CD047FA
-:104C100006220020001A7400084709030F13A60497
-:104C200047020C3C4A9810470505000294DD51E00C
-:104C300000100AF184470443C48047020C4708F07F
-:104C4000043C20470203C0101080470502000154B5
-:104C50000909470305F0A047043C010D0B000C4770
-:104C600007030F12806030000C3C4AB180C8470730
-:104C700015CA5004470220F580038003005A65E0FE
-:104C800047020C4708F004470403C0101000144703
-:104C90000602BC1C084704F0470302001A54000B2C
-:104CA00000044707030F178047030C3C5E47028050
-:104CB00047060294CDF9F0470903C4470CF04705B5
-:104CC00003C0470A01541F70D0470603470203C0C0
-:104CD0004708204702030F168047030C3C5A000187
-:104CE000C8470714FAB8E047080183DE47021C47AB
-:104CF00009F0470503C0470314470602BC3CB890BF
-:104D0000470983C0470B02AA17A06047020C3C5A10
-:104D1000018047060101E8FF71C04705078047048D
-:104D2000010010804708AA0404470303C010470A83
-:104D3000542C08470604470680470C200400200A2C
-:104D4000A85E181400C047040108F54C704704A77A
-:104D50006000044705080008470A0420001002A864
-:104D600010008A0040470404006419F8F0000100B4
-:104D7000A0470A08470E083D6000044705200008C8
-:104D80003DC047048005E000380004C3FCA0471183
-:104D9000483C00F04708083C47062BA342D00004DB
-:104DA0003C3E470B020F78470360083D601000014E
-:104DB00080470A05804019B006000600C3C4E047DA
-:104DC00002184707020F084704083C00F8470B7019
-:104DD0000008470201EB404702243C471230083CE0
-:104DE000E070470280470440083DE03047028028D9
-:104DF00045E04704C3C4A981470F22083C200800AE
-:104E000014C04705083C204703C0242BA002C0471C
-:104E1000023C0101084709020F304704083CE00149
-:104E2000F04707083C604703204009B047023000C4
-:104E3000C3C4A9984709020F4705083C2001E04771
-:104E400007083C20470521EB4047033C0101470D83
-:104E500020044702183C6000800847040547090504
-:104E6000E2E0284702C3C5E0470D3C384702083C52
-:104E700020014705024705B04703808BA060470328
-:104E80003C4713083C40F84708083CC047042A0147
-:104E9000A440470201C3C5A04711083C20F04708C1
-:104EA000083C20B047032050A04703043C471202AF
-:104EB000083CC047070100083DE0470501B14047F5
-:104EC00003C3C5A0184710083C470A083C4702C066
-:104ED00047033B7C2047033C0103470D0E010020A4
-:104EE000083C604703804705083CE0470384000115
-:104EF0002447020200AA85A101000C470B02800092
-:104F0000083C2000044707083C2010E1470202004B
-:104F1000B447042A8100080004470272009011037C
-:104F200001014708024706084704024708078004B2
-:104F3000470220470680470C014706044704014703
-:104F40000D10472A0847160247060847040247067D
-:104F500008470620470680471F02470304472903E6
-:104F60004729A0472D10471E02004047040801476B
-:104F70000302004047040801078047032004470557
-:104F80008010474501470603470D20471802470692
-:104F9000034703044709C0470340472B384721080C
-:104FA000470B400080470A804705024705804705B8
-:104FB00002470518084706202C471101470F0447F0
-:104FC0000D400030C0472B1030C0472C30C0472B5D
-:104FD0001030C0472C30C047100447180100103073
-:104FE000C0470F80471C30C0472B1030C0472C30C3
-:104FF000C0472B1030C0470E10471D30C0470A0273
-:1050000000140B471D1030C0470C28E1471E30C06C
-:10501000471B04470F1030C0471B0A471030C047DA
-:105020000B20280B471D1030C0470C14E1471E30E1
-:10503000C0472B1030C0472C30C04725330690475F
-:10504000031030C047242031A480470430C0472BD0
-:105050001030C0472C30C047253C0247041030C0F8
-:10506000472304803C14470530C04708804721800F
-:105070001030C0472901400030C0472701470310C6
-:1050800030C0472C30C0470A80471D0A4702103005
-:10509000C0472801470330C0471D0300F0470705FC
-:1050A00047031030C0471FF147070D9A470330C030
-:1050B000471702A809704705404706010800041079
-:1050C00030C0471180470501544147041000796002
-:1050D0004705080100080030C047150447023C4757
-:1050E000060B404703802A81000847021030C04762
-:1050F00015020007C05847041008684704AA85E154
-:1051000099470330C047183C1047050301428047C8
-:10511000023C47051030C0471707C04A4704100833
-:105120006A06C04702C3C5A0470430C0470F044702
-:10513000053000025A40470503014047033C47053C
-:105140001030C0470F0A4707065848470410086B3D
-:1051500066804702C3C5E00080470230C0470FF0B9
-:1051600047083C100847040B41428047023C014776
-:10517000041030C0470F10470707C05A38470310C4
-:10518000002A06C04702C3C4E018470330C04711D5
-:10519000C04705025A500147040B41428047023C78
-:1051A000010147031030C0470E50470280470506F3
-:1051B000585E71C0470210002B66C04702C3C4AFDF
-:1051C00000A0470230C04717025A50470503470462
-:1051D000013C47051030C04710018047050658487C
-:1051E00070E04702100028470301C3C4E0470218DB
-:1051F0000030C0470B083C470901000140984704B4
-:105200000100034047023C3647041030C0470B08FA
-:105210003D60470904470238E0470210002800407B
-:105220004702C3C4E7470E3C47021010D9470D049C
-:10523000470506C04702080247112000034B470DEF
-:1052400002470502800010081CE0470D02000847D5
-:10525000040200204703028047041047041BB842A1
-:10526000C047021080900902470B1C470C01470AF7
-:10527000073E47031014979598471301E04707012D
-:105280006BCA999047093016B500024713F04707DB
-:105290000160699990470506804702103488470FDE
-:1052A0000847040100204704040002A8100847032F
-:1052B0000A008364471580470401E04705020202A3
-:1052C000A85C1847030A037942804718D9F04707BA
-:1052D00002003C1000E04704704704069E901B4704
-:1052E000110B4B80E0470707C05C00100004080763
-:1052F000B0470301A94F800A470E053203D42008A6
-:10530000B002470508003C47020A470240A0804718
-:10531000042801DD80470F3003D56A7880024704F6
-:10532000300007C05C00044703A37847051C95477D
-:105330001E3C4702A047090E01AD1A470E01604707
-:105340000378470817C05C00104708100617900A3A
-:1053500000184707020F4705A0014C4706029001BD
-:1053600047021000E04702080B38470534A01B47EE
-:1053700009920F784705824D470601470204000C49
-:105380000010470303BC000447020216950A4711A8
-:1053900003D047022047040604003C204703202096
-:1053A000F080470402378009471004001A788147CB
-:1053B000050104183C6047032020F7816680020144
-:1053C000802CE04703023FC04709024703D070002A
-:1053D000204704024706202020F00142808000136D
-:1053E0008299090200443FC04709010004001A8164
-:1053F00080470B01002020F30366C00012A346057E
-:10540000471340470A3C470280003020F047051E02
-:10541000810029471004021A01E0470604183C6085
-:10542000470420F780E04702101E8CC0470E01475A
-:105430000301C009E02847097008002060F080449B
-:10544000008000084E810A0080470B0247020402D8
-:105450001A79F004470B200020F380070080000435
-:10546000B408471202D050A04707603C20470320F1
-:1054700060F0804702500010038D471104000A506D
-:10548000A0084706183C4047032020F747041000B7
-:105490001D80470E01470203C25010A04707229407
-:1054A00047048060F080470202003040C79F470DEC
-:1054B00002800007C0CAD04707081A9408470201B3
-:1054C000E020F74703031030941F0E471003C0601D
-:1054D00047020447050C02940050A0006060F047AA
-:1054E000052001ED80471007C1EE01E08047050867
-:1054F0000A94084702010020F7470306100014A58C
-:10550000470218470B01470203C040508447060C6E
-:1055100001680C50A0003860F0470502810D1F4063
-:10552000470C02470207C0EA00B84705020A0A947E
-:105530000100A0470220F74702084000029EE00A4F
-:10554000471042A8103080004047112047040B4705
-:10555000100AA85A001000C0471150471543C01048
-:10556000008047083C470401010F340280470201D4
-:1055700042000E47100C3C5A01904707083CE04798
-:10558000050731404702208155E0471123C0003014
-:1055900047093C00080040008000A0000347160CAB
-:1055A0003C5A00014707083C60718047035120477F
-:1055B000070E471023C0470201C047073C20008068
-:1055C00080000FF0A14047170C3C5E4709083C40A3
-:1055D000019047028FA5200280470401471123C094
-:1055E000101047093C204703010103B80010004098
-:1055F0002042E09047100C3C4A99804707083C4005
-:105600004704020747022000100056879E471023D8
-:10561000C0101047093C00084702C047020140473C
-:10562000031C16B147110C3C4A984708083CC05867
-:105630004702804707102DD0471143C0470B3C4716
-:105640000280004047040347160C3C4E470201808D
-:105650004705083CC0001001470520470718470EC2
-:1056600043C2E0470A3C2010470501428047050D30
-:1056700047100C3FEE4709083CE098470602804778
-:10568000050110470C40471A630029400010002014
-:10569000470B7047088047111200A9408018470D3A
-:1056A00040024704084727200147043847120647AD
-:1056B00006180040472503004003C2001047270199
-:1056C000470283D60018470E30470401470C0447B1
-:1056D0000540471B80470B02470402470240470F23
-:1056E0000F06804703083C000147050285470B046D
-:1056F0004702040281C047090102007A804703087B
-:105700003D40008047040102470B074703A804B14E
-:105710008A470D280002083C20014702C0470408C0
-:10572000403C00088000802A5034024702840281F5
-:10573000E108470C064703083C6001E000C047034E
-:105740004000183C605010148025A04702404702DA
-:10575000E804B981470F50083C470B3C2001470241
-:10576000402AA040470201000280C0471050083D77
-:10577000607A0001804705183D4000A001002AA77B
-:105780003047020405E804F00A2018470C7000486E
-:105790003C470702700023C000700447022E7B388C
-:1057A0004703060294E00E4710083CC047090BC1AE
-:1057B00040000A470222402800054702E826B001BF
-:1057C00047031006B04704807E8047030154184702
-:1057D000080800B01908D04705034047022A81474E
-:1057E0000580BEF198470202027680384702229572
-:1057F000EA01E100804704010A75E971F0470401FC
-:10580000E04002012A96E7804705D010470280AFAA
-:105810000654300002017C0B470601470202F43CAB
-:1058200047048050BC6047020430E6D047048286BB
-:10583000B01C4703053376684703147D4707800192
-:105840000141791808C00040A187E0470391E7B102
-:105850008047032004A14704841282284702096874
-:10586000090880470702BC2A7180470401E047030A
-:105870003E820919470380A5E847030200F20E6C37
-:1058800047020A940139E1C0470714FA01C04705ED
-:10589000E047033E94C009470303C14705AF0E42EA
-:1058A0006002020968087047080154087047034005
-:1058B00000FC470515910F470343C4A047030405A7
-:1058C0003A462805000A940080470802955E800841
-:1058D0000004001164470554A8470403C1010018DF
-:1058E0000008550A470420141C470601470202BC61
-:1058F0003A7080470205008002470303C0001E473C
-:105900000343C5AD9A4703A51F86470302BD6950EF
-:10591000A0470580470215EC80B0470205012140F1
-:1059200040470283D6000A470303C0050A470340E5
-:105930003604204702083C200847028047020247FD
-:1059400003D82F08F04702A8503C002047023C0033
-:10595000D59B470343C4880147020220D2A0644775
-:1059600002083CE0504702C047040148D47A701056
-:1059700000042475F847043C15C38A470303C04755
-:105980000310000403CC004040083C470804000119
-:10599000C019D847030500BC0020008028B5918AB3
-:1059A000470343C5A01E001042205220600050282B
-:1059B0003CE07980018047040102E8EBB8000180F7
-:1059C0000007A1600006001407E947021847023DDE
-:1059D000000D000200050AC03C47047C10F0470798
-:1059E00002A809D0A540002CBD746247022030CE29
-:1059F0008D47044021A01B4703A5575428020020CF
-:105A000040F980B0470401470202955D80084702D3
-:105A10002C3DF76040200020F4950A470472008076
-:105A2000110062002F8247020103470410000800A2
-:105A30001010020204002200202000080424044761
-:105A400007080447032004002020202400082C0419
-:105A50000C0C47030410100C001000084703080842
-:105A600047030830003030040022260604080004F2
-:105A700004000447042008000C000828000C00085B
-:105A8000002808001008082808470228282847028C
-:105A90000C10101024000224242C2C0400282C218B
-:105AA00001080011301020000422022247032020A8
-:105AB000203004083010001008000404040400041E
-:105AC00000044706080004080808470208470224A3
-:105AD000240400042C2C282847022101211004084A
-:105AE0003010201047022000202008042020200031
-:105AF00004470404080004040404001010101010EB
-:105B000000060810080803024702040408020424DF
-:105B1000242404002C2C2820020021012100020A48
-:105B200020002800080228282030040030301020EF
-:105B30000002470204000A020404001400061010C8
-:105B4000100804470208080008020C040C2C02028A
-:105B50002C2C2C2C0006282A2A470208220022007E
-:105B60000C02200220204702202030300202507018
-:105B700040000A0E0C080C0447030400100808102B
-:105B8000100212040002202020080824242400020D
-:105B90000247040A0E4703020447020624060808C7
-:105BA0002C2428280202201030100E0A2010280869
-:105BB0004702280020200A08203030180400021A6A
-:105BC0000A040A0A0C040C0C470208082808020CF4
-:105BD000080828080C02280A2802000808022008E1
-:105BE000080020282010000C1010041008020404E3
-:105BF000280C040828202121080031303020060E0E
-:105C0000222222200E0620470220040C1010100031
-:105C10000A4702040404000C040447020A02470273
-:105C200008000608080A020808000604060402061E
-:105C3000082A28470321213130060A30302020026B
-:105C40000220202000080400201000060010001090
-:105C5000000C0400040404061614101010020618A8
-:105C60001008080147020804040A02040404060498
-:105C7000082A0C2A220A0223232322000822222A8D
-:105C8000200A02282A301004001010000802020026
-:105C900008080008000C040C0C0206180818180468
-:105CA00000081808080A020C0C0C0600080E042252
-:105CB0000E0A06222A22220008222222220C022276
-:105CC0002222220200320010100002405040000246
-:105CD0000C08080C04080A040447030810101212E8
-:105CE0000400024702200E04240424200C0E0200AB
-:105CF0000202020C02020202040206020606020866
-:105D00000A262A08080B30303030060820202828C0
-:105D100047028200800103000228282800020808A8
-:105D20002818180E091A1A0A080208080C0C0C0088
-:105D3000020C002208000E020A22020603020222BE
-:105D40000208080202220208082220301002041071
-:105D500014040408000400080804080800012102D3
-:105D60000011301020080E022202000A0847050226
-:105D7000100010100247021000040A0C0404000670
-:105D8000080802000A0206000A0A020E0A000606B5
-:105D9000060200040A0A0A02020013011130040A72
-:105DA0000030002002470508061047030647050299
-:105DB00008100004470314141010000218101818DB
-:105DC0000147020804060200060606020C080A0A39
-:105DD0000A00080A03010320470202200A020A00FF
-:105DE0001A0A1A120400081A08080002080808080B
-:105DF0000800080C0C0C02040C0018100400101809
-:105E000000100002040606060808060202000A0C3A
-:105E10000002000247032000220C020002120002CE
-:105E20000012121202470240424047020C080808C2
-:105E30000400020404044704101212040012470371
-:105E4000020004060602470202020202470202475B
-:105E5000020604020406060002000A021A0A0001F1
-:105E60001212003204470220082000020808080825
-:105E70000200080008100403121A12084704040262
-:105E800002020606020200042202020006010002CB
-:105E9000000247022200020A47023A2A321A02048A
-:105EA0000412040447040808040008000101020069
-:105EB00011101047020402020247080247021010A4
-:105EC000020010100010000604060602470202023B
-:105ED0000A000600080A040200020404000200048A
-:105EE000080A0A10020013131302044702024706AD
-:105EF0001047020647021000060010001047020A71
-:105F00004702144703141410040002180018180064
-:105F10000110120616020006060200040008080816
-:105F200047020201010147041018100200181A1A52
-:105F30000A04000A020802000200080008470404DC
-:105F400004020404040010040010101210000216D1
-:105F5000060606470302470202040808084706101F
-:105F600004021000101002001002020204000202DB
-:105F7000000200080808080800020404040447049A
-:105F80001202040012101012020006160602470345
-:105F90000247060400040004040014020018181844
-:105FA0001A0001120202020400024702080002085D
-:105FB00008000802470504011202121047021012DD
-:105FC0000612000206060006000447022000060131
-:105FD00020002047041018104702383A320A020401
-:105FE000060606044702110162003F8247020103D0
-:105FF00047080247080247060101470620204706D6
-:1060000020204706042047064004470740470E85E6
-:106010008447070147068047088047060202470673
-:1060200002470802471E04470804471E0404471E8F
-:106030002047072020470620204706014708014740
-:1060400036010147164247084247060202470E2121
-:106050002047062021470610204706141447065003
-:1060600050470610104706101047069511470610B6
-:106070009447069090470610104706021047060204
-:106080000247260404472604470804471E20470702
-:1060900020204706202047060101472E014708011E
-:1060A000471E424247070247063020470630304726
-:1060B00006111147061410470650144706105047A2
-:1060C0000610104706111047061011470694944712
-:1060D0000610904706101047061210470612124786
-:1060E000061010470710470E04470804472E040403
-:1060F000472E202047062120470701472601014758
-:1061000008820080010347205202470630524706AA
-:106110003030470610104706111047060415470691
-:10612000404047160101470E84470804470E1202FB
-:1061300047061210470610124706101047061010A7
-:1061400047060414473604470804472E2020470614
-:106150000121471E01470801471610470712104743
-:1061600006301247067272470710470E0447074170
-:1061700005470740470E0147080147160404470634
-:1061800002470802470E0202470610470710104751
-:1061900006101047061010470710476621204707D2
-:1061A0002147160101471610470710104706121223
-:1061B00047062030470642204707424716414047DE
-:1061C0000701470E0101472602024716024708024F
-:1061D000470E104707101047061010470710475E7C
-:1061E00020470721214708110262002F8247020140
-:1061F0000347081B1B47041F1B4704041F47101BB2
-:1062000047051B1B47041F1B47041F1F47101B1B71
-:1062100047041B1B47041F1F47041F1F47051B473D
-:106220000A1B1B47051B4704040447041F1F47059F
-:106230001B470A1B1B4704E4FB4704E4E447041F15
-:10624000FF47051B470AF9194704E4F94704E4E44A
-:106250004704F7F7470513470AF9F94704E4F947F4
-:1062600004E4E44704F7F74705F3470AF9E947046C
-:1062700014FD47041E1C4704F7FF4705E1470AE9E0
-:10628000E947041CFD47041E1A4704EFFF4705E1D8
-:10629000470ADDC947041EDD47043E3A4704BDBF37
-:1062A0004705A9470ADDD94704A2FF4704A6A2472C
-:1062B00004BDBD4705B9470AFFDD4704A6FF4704F3
-:1062C00084864704BDBD470404BD470AFFFD47045B
-:1062D00006FF4704040447043D3D4704043D470AC4
-:1062E000FFFF470406FF470404044704FDFD47047D
-:1062F00004FD470AFBFB4705FB4704244705FDFD5A
-:106300004705F9470AFBFB4704FBFB4704FFFB4734
-:1063100004FFFF4705FB470AFB224704FBFB47043A
-:10632000DFFB4704FFFF470522470A22024704FB21
-:10633000FB4704DFDB470426FF4705224780028234
-:106340000080010347022C2C47041F3E47041F1FF7
-:106350004704CCDE4705C8470A3E2C47041F3F4789
-:10636000049F1F4704DEDE4705C8470A3F3E470437
-:106370001F3F47049F9F4704DEDE4705DA470A3781
-:1063800036470401374704898147045ADA470552E2
-:10639000470A76364704C1F64704A9814704FAFA4A
-:1063A0004705D2470A74744704C1F44704A9E94772
-:1063B00004F2FA4705F2470A74744704E5F4470407
-:1063C000EDED4704F2FE4705F2470A7474470427CF
-:1063D000744704CF8F470476FE470570470A7474EC
-:1063E00047041F7447049F9F470474F6470574478A
-:1063F0000A746447041B7447049B9B470476F64762
-:106400000574470A60604704197047048999470476
-:1064100076F6470576470A606047040960470489B5
-:1064200089470476F6470576470A64644704096C91
-:1064300047048189470476F6470576470A7676470A
-:1064400004097E47048189470476F6470576470AA2
-:1064500076764704297E4704C189470476F64705C6
-:1064600076470A777647047F7F4704F7FF4704772C
-:10647000F7470576470A776047045F7F4704B7FF11
-:10648000470477F7470560470A612047045F7F4765
-:1064900004B79F470461F747054047800211036234
-:1064A000003F824702010347838282008001034745
-:1064B00083822244B2010600470000000000000071
-:1064C0000000000000040240000400000A0009006F
-:1064D00000140240000400000A000900000C024001
-:1064E000000800000B000900000802400004000042
-:1064F0000A00090000100240040000000200090028
-:1065000000000240020000000100090000100240EB
-:106510000080000000000000001C0240200000007D
-:10652000010000000000000000000000000000006A
-:10653000000C024004000000010000000000000800
-:106540000080000800000108008001080000020827
-:10655000000004080000080800000C0800001008F3
-:10656000000014080000180800001C0800000800C3
-:1065700010001800200028003000380040004800BB
-:1065800050005800000000006410B71DC8206E3B8A
-:10659000AC30D9269041DC76F4516B6B5861B24D2A
-:1065A0003C7105502083B8ED44930FF0E8A3D6D694
-:1065B0008CB361CBB0C2649BD4D2D38678E20AA0FC
-:1065C0001CF2BDBD4932435F504D49435F4D4147C9
-:1065D00000537475636B20627574746F6E207265FE
-:1065E00067697374657220697320696E76616C697E
-:1065F000642C20636C656172696E672E004275744D
-:10660000746F6E2069642000697320737475636B06
-:106610002100427574746F6E2077617320707573FA
-:10662000686564206F6E20626F6F742E20427574EF
-:10663000746F6E20636F756E7465723A20004469E2
-:1066400073706C617920627573792D77616974203C
-:1066500074696D656F757420657870697265642101
-:10666000004650474120636F6E66696775726174BA
-:10667000696F6E206661696C65642E004469737091
-:106680006C617920696E697469616C697A656420EE
-:106690006166746572200020726574726965732E7C
-:1066A00000446973706C617920696E697469616C0A
-:1066B000697A6174696F6E206661696C65642E0029
-:1066C000435245534554206E6F74206C6F7720649D
-:1066D0007572696E672072657365740043444F4E2E
-:1066E00045206E6F74206C6F772061667465722030
-:1066F000726573657400435245534554206E6F7440
-:1067000020686967682061667465722072657365C8
-:10671000740043444F4E45206E6F7420686967686B
-:106720002061667465722070726F6772616D6D6949
-:106730006E6700456E61626C696E67203676362042
-:1067400028446973706C617920564444432900459C
-:106750006E61626C696E67203476352028446973F7
-:10676000706C617920564444502900446973616219
-:106770006C696E67203476352028446973706C61CB
-:10678000792056444450290044697361626C696EF3
-:1067900067203676362028446973706C61792056FC
-:1067A00044444329002E2E2F7372632F647269763E
-:1067B0006572732F6932632F6932632E63002E2E48
-:1067C0002F7372632F647269766572732F693263F7
-:1067D0002F6932635F68616C2E63004661737420B9
-:1067E0004D6F646520506C7573206E6F74207965F1
-:1067F0007420737570706F72746564002E2E2F7321
-:1068000072632F647269766572732F706572697036
-:10681000685F636F6E6669672E63006164647265AA
-:1068200073732000206973206F7574736964652029
-:1068300073797374656D20666C6173680066616955
-:106840006C656420746F2065726173652073656385
-:10685000746F72200050726F6772616D206661699B
-:106860006C6564204000496E76616C6964206669DD
-:10687000726D7761726520646573637269707469A3
-:106880006F6E2100436865636B73756D6D696E672C
-:10689000206669726D7761726520757064617465D8
-:1068A0000043616C63756C61746564206368656343
-:1068B0006B73756D3A2000496E76616C6964206671
-:1068C00069726D776172652043524320696E20536F
-:1068D000504920666C61736821007072765F657242
-:1068E0006173655F6F6C645F6669726D7761726515
-:1068F000007072765F77726974655F6E65775F6648
-:1069000069726D77617265005765277265206465ED
-:10691000616400436865636B73756D6D696E6720B4
-:10692000002062797465730D0A00436865636B73B8
-:10693000756D202D2077616E746564200020676F6F
-:106940007420004F757220696E7465726E616C20E0
-:10695000666C61736820636F6E74656E747320611A
-:106960007265206261642028636865636B73756D6E
-:10697000206661696C656429212054686973206907
-:1069800073207265616C6C792062616421004F75BF
-:10699000722070726576696F7573206669726D77A3
-:1069A00061726520757064617465206661696C65EB
-:1069B000642C2061626F7274696E67207570646107
-:1069C00074652E004E6577206669726D7761726519
-:1069D00020697320617661696C61626C6521004C8D
-:1069E0006F6164696E67207265636F766572792086
-:1069F0006669726D77617265004661696C656420D5
-:106A0000746F206C6F6164207265636F7665727954
-:106A1000206669726D776172652C20737472696B80
-:106A200065206F6E652E2054727920616761696EF2
-:106A30002E004661696C656420746F206C6F616420
-:106A4000207265636F76657279206669726D776111
-:106A500072652C20737472696B652074776F2E20B9
-:106A600054727920616761696E2E004661696C65B8
-:106A70006420746F206C6F6164207265636F76654B
-:106A80007279206669726D776172652C20737472F9
-:106A9000696B652074687265652E205341442057E8
-:106AA000415443480048415244204641554C54000B
-:106AB00065786974207374616E646279000D0A0DE3
-:106AC0000A0D0A00E29688E29688E29688E29688A5
-:106AD000E29688E29688E295972020E29688E296F0
-:106AE00088E29688E29688E29688E29688E2959710
-:106AF00020E29688E29688E29688E29688E2968876
-:106B0000E29688E2959720E29688E29688E2968857
-:106B1000E29688E29688E29688E29688E29597E285
-:106B20009688E29688E29688E29688E29688E296CF
-:106B300088E2959720E29688E29688E29688E29627
-:106B400088E29688E29688E29688E29688E29597AF
-:106B500000E29688E29688E29594E29590E295901C
-:106B6000E29688E29688E29597E29688E29688E235
-:106B70009594E29590E29590E29590E29688E2965F
-:106B800088E29597E29688E29688E29594E295905D
-:106B9000E29590E29688E29688E29597E29688E2FE
-:106BA0009688E29594E29590E29590E29590E29530
-:106BB00090E2959DE29688E29688E29594E295901F
-:106BC000E29590E29688E29688E29597E2959AE2BD
-:106BD0009590E29590E29688E29688E29594E29507
-:106BE00090E29590E2959D00E29688E29688E29682
-:106BF00088E29688E29688E29688E29594E2959DEE
-:106C0000E29688E29688E29591202020E29688E23A
-:106C10009688E29591E29688E29688E29688E296D6
-:106C200088E29688E29688E29594E2959DE29688BD
-:106C3000E29688E29688E29688E29688E295972026
-:106C400020E29688E29688E29688E29688E2968824
-:106C5000E29688E29594E2959D202020E29688E2D3
-:106C60009688E2959120202000E29688E29688E2BC
-:106C70009594E29590E29590E29688E29688E29566
-:106C800097E29688E29688E29591202020E2968805
-:106C9000E29688E29591E29688E29688E29594E2FF
-:106CA0009590E29590E29688E29688E29597E29632
-:106CB00088E29688E29594E29590E29590E2959D1F
-:106CC0002020E29688E29688E29594E29590E295FB
-:106CD00090E29688E29688E29597202020E29688B6
-:106CE000E29688E2959120202000E29688E296883C
-:106CF000E295912020E29688E29688E29591E295CD
-:106D00009AE29688E29688E29688E29688E29688E9
-:106D1000E29688E29594E2959DE29688E29688E272
-:106D20009688E29688E29688E29688E29594E295C3
-:106D30009DE29688E29688E29688E29688E29688B6
-:106D4000E29688E29688E29597E29688E29688E253
-:106D500095912020E29688E29688E2959120202065
-:106D6000E29688E29688E2959120202000E2959AAA
-:106D7000E29590E2959D2020E2959AE29590E29529
-:106D80009D20E2959AE29590E29590E29590E295A9
-:106D900090E29590E2959D20E2959AE29590E29599
-:106DA00090E29590E29590E29590E2959D20E29593
-:106DB0009AE29590E29590E29590E29590E2959016
-:106DC000E29590E2959DE2959AE29590E2959D205C
-:106DD00020E2959AE29590E2959D202020E2959AF6
-:106DE000E29590E2959D202020004C61737420660E
-:106DF00069726D7761726520626F6F74207761735D
-:106E000020737461626C653B20636C6561722073F2
-:106E10007472696B657300486F6C6420646F776E81
-:106E2000205550202B204241434B202B2053454CD2
-:106E300045435420666F72203520736563732E209E
-:106E4000746F20666F7263652D626F6F742050528D
-:106E500046004669726D77617265206973206572BC
-:106E600061736564005761746368646F6720636170
-:106E700075736564206120726573657400536F6675
-:106E80007477617265206661696C757265206361F3
-:106E9000757365642061207265736574004661696D
-:106EA0006C656420746F20737461727420666972FB
-:106EB0006D776172652C20737472696B65207468DC
-:106EC0007265652E004661696C656420746F20737D
-:106ED00074617274206669726D776172652C2073BB
-:106EE0007472696B652074776F2E004661696C65FA
-:106EF0006420746F207374617274206669726D7798
-:106F00006172652C20737472696B65206F6E652EDB
-:106F100000466F7263652D626F6F74696E672072D1
-:106F200065636F76657279206D6F64652E2E2E0015
-:106F3000456E61626C696E67207761746368646F27
-:106F40006700426F6F74696E67206669726D776162
-:106F50007265204020002E2E2E0D0A0D0A00426F71
-:106F60006F7420626974733A2000536F667477619E
-:106F70007265206661696C7572653B207265736528
-:106F80007474696E6721004153534552543A20008E
-:106F90003A00415353455254004153534552544EC5
-:106FA000002A2A2A20575446200053544D333200D9
-:106FB00053544D3332207065726970686572616C2C
-:106FC000206C696272617279207472697070656494
-:106FD00020616E206173736572740069746F612043
-:106FE00062756666657220746F6F20736D616C6C7C
-:106FF000002E2E2F7372632F7574696C2F736C655E
-:047000002E630000FB
-:10700400FF00000000010203040102030406070854
-:04701400090000006F
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/boot_silk@1478015115.bin b/bin/boot/boot_silk@1478015115.bin
deleted file mode 100755
index 971fd41b81..0000000000
Binary files a/bin/boot/boot_silk@1478015115.bin and /dev/null differ
diff --git a/bin/boot/boot_silk@1478015115.hex b/bin/boot/boot_silk@1478015115.hex
deleted file mode 100644
index 5fe2f37b47..0000000000
--- a/bin/boot/boot_silk@1478015115.hex
+++ /dev/null
@@ -1,907 +0,0 @@
-:020000040800F2
-:100000005821012085010008C90100081D170008BA
-:10001000C9010008C9010008C9010008000000006A
-:10002000000000000000000000000000C9010008FE
-:10003000C901000800000000C9010008C90100084A
-:10004000C9010008C9010008C9010008C901000868
-:10005000C9010008C9010008C9010008C901000858
-:10006000C9010008C9010008C9010008C901000848
-:10007000C9010008C9010008C9010008C901000838
-:10008000C9010008C9010008C9010008C901000828
-:10009000C9010008C9010008C9010008C901000818
-:1000A000C9010008C9010008C9010008C901000808
-:1000B000C9010008C9010008C9010008F9100008B9
-:1000C00005110008111100081D110008C9010008E0
-:1000D000C9010008C9010008C9010008C9010008D8
-:1000E000C9010008C9010008C9010008C9010008C8
-:1000F000C9010008C9010008C9010008C9010008B8
-:10010000C9010008C9010008C9010008C9010008A7
-:10011000C9010008C9010008C9010008C901000897
-:10012000C9010008C9010008C9010008C901000887
-:10013000C9010008C9010008C9010008C901000877
-:10014000C9010008C9010008C9010008C901000867
-:10015000C9010008C9010008C9010008C901000857
-:100160002911000835110008C9010008C90100085B
-:10017000C9010008C9010008C9010008C901000837
-:04018000C9010008A9
-:10018400002103E00A4B5B584350043109480A4BF1
-:1001940042189A42F6D3094A02E0002342F8043B8B
-:1001A400074B9A42F9D301F07DFE01F001FB704741
-:1001B4003C380008000000203000002030000020FF
-:1001C40054010120FEE7000037B5012002F092FA45
-:1001D400002401902546E0B200F046F801AA08B9CF
-:1001E40010551DE0135D042B0BDD174800F07EF95C
-:1001F400019800F082F90120002102F06BFA00203E
-:1002040020E00133DBB2042B135509D90F4800F069
-:1002140055F9204600F071F90D4800F067F9012501
-:100224000134042CD7D1019C3CB10A4800F046F9B2
-:10023400204600F062F900F0D1F80120214602F0D6
-:1002440049FA284603B030BDB0310008DC3100085B
-:10025400E7310008F131000808B500F0A7FB80F091
-:100264000100C0B208BD000008B5054B03EB001344
-:100274005868198901F075FF003018BF012008BDC6
-:100284003829000838B500242546E0B2FFF7ECFF12
-:10029400A04001340543042CEDB2F6D1284638BD04
-:1002A40073B50020014602F06DF80120002102F030
-:1002B40069F80220002102F065F84FF48040012122
-:1002C400104C02F0A3F904F14006684601F040FF27
-:1002D40002238DF80530A37B60688DF80730002574
-:1002E400A3688DF8045069461034009301F0F8FEB9
-:1002F400B442EAD14FF48040294602F087F902B0B3
-:1003040070BD00BF3829000810B5044608484021D4
-:1003140002F0F6FA0028F9D00548214602F0ECFA7A
-:100324000348402102F0ECFA0028F9D010BD00BFC8
-:10033400001001402DE9F043DFF89890DFF8988031
-:1003440087B01020012102F061F9484609210722F3
-:1003540001F012FF07210A4606AD404601F00CFFEA
-:100364004FF4007345F8183D00240226012748463F
-:1003740029468DF806408DF807708DF804608DF8D5
-:10038400056001F0ADFE80234046294600938DF8B8
-:10039400046001F0A5FEADF80C40ADF80E40ADF8D8
-:1003A4001040ADF8144004F1804404F58834084B3F
-:1003B400029320460C2302A9ADF8123002F036FA5B
-:1003C4002046394602F08CFA07B0BDE8F08300BF3E
-:1003D40040420F0000000240000402402DE9F043B7
-:1003E400334D83B02C6804F12E0323F0070300AFD0
-:1003F400ADEB030D50238DF8003021238DF801302F
-:1004040000238DF8023003238DF8033004F1210317
-:100414005BBAADF80430274B04F127086E460DF1A2
-:10042400060203F11C0153F8040B42F8040B8B423F
-:10043400F9D11B78137004F12309224606F1230035
-:100444001D4902F063FA31464A46002001F0D2FC0D
-:1004540007F1080304F5927443F8040D186846F88C
-:100464000900FE23B4FBF3F34344073323F00703EB
-:10047400ADEB030D31464246684601F093FC044659
-:100484005520FFF741FF6E466C44A64207D016F88C
-:10049400010B552808BF0020FFF736FFF5E755206C
-:1004A400FFF732FF00230C372B60BD46BDE8F08315
-:1004B40030000020802900083400002010B5441EBC
-:1004C40014F8012F7AB108490B68FF2B0BD80A2ABC
-:1004D40002D1FFF783FFF3E70D2A1FBF581C5B18F7
-:1004E40008601A71ECE710BD3000002008B5FFF772
-:1004F400E5FFBDE80840FFF771BF1FB50C2201A955
-:1005040001F0A8FC01A8FFF7D9FF05B05DF804FBD2
-:10051400014608B5044802F080F90348022102F0BC
-:100524007EF90028F9D008BD003800402DE9F047D5
-:1005340007310733089E099F92464FEAD108DD0828
-:1005440081460024B4420CD004EB0A03122000FBC1
-:100554000380494638442A4602F0D8F90134A944B4
-:10056400F0E7BDE8F087000008B54FF480400121B2
-:1005740002F040F805484FF40071012201F0F7FD44
-:100584000720BDE8084001F055BC00BF000402404C
-:1005940008B5072001F04EFC4FF400710648002214
-:1005A40001F0E5FD042001F045FC4FF480400021FA
-:1005B400BDE8084002F01EB800040240F8B5074642
-:1005C400FFF7D2FF8020FFF7A3FF0024661C30BA98
-:1005D40090FAA0F0C0B2FFF79BFF122303FB047450
-:1005E4000025605D00BA90FAA0F00135C0B2FFF7B3
-:1005F4008FFF122DF5D10020FFF78AFFA82E344675
-:10060400E4D10020FFF784FFBDE8F840FFF7C0BF46
-:1006140010B5ADF6D83D02AC204600214FF43D6242
-:1006240002F07FF91B238DE8180010214022692372
-:100634000448FFF77BFF2046FFF7C0FF0DF6D83DC7
-:1006440010BD00BF9D2900082DE9F043ADF6DC3D47
-:1006540002AC00214FF43D620546204602F061F9E8
-:100664002C238DE818002B48182120225C231C27FA
-:10067400FFF75CFFBE460F23BB402B4023FA07F273
-:10068400254B242101FB0233002202EBC20000F6B9
-:10069400280013F802C020440021082907D00126AD
-:1006A4008E4016EA0C0F14BF0126002603E09E18A4
-:1006B400767806F0010686B101EB0E06F6B24FEA33
-:1006C400D6094FF0010806F0070608FA06F610F8F6
-:1006D400098046EA080600F8096001310929DCD1DD
-:1006E4000232242AD1D10EF10B0EBEF1740FA7F100
-:1006F4000407C0D10E238DE81800102190226D2329
-:100704000648FFF713FF2046FFF758FF0DF6DC3DC0
-:10071400BDE8F083172B0008272D0008672F000879
-:1007240008B5FFF721FF0020FFF7F2FE0020FFF7D6
-:10073400EFFE0020FFF7ECFEBDE80840FFF728BFFE
-:10074400F0B5214B1A685E246043B0FBF1F4944287
-:10075400ADF6DC3D34D002AD00214FF43D622846B5
-:100764001C6002F0DEF81B238DE8280017481021D6
-:1007740040226923FFF7DAFE08238DE82800144895
-:1007840018216A226023FFF7D1FE002000F286714F
-:1007940029440022A2420DD002F11903DBB2DF0882
-:1007A400012603F0070306FA03F3CE5D3343CB556A
-:1007B4000132EFE712306C28E8D12846FFF7FEFE3D
-:1007C4000DF6DC3DF0BD00BF000000209D290008AF
-:1007D4002B3000082DE9F843224E234CDFF88C908F
-:1007E4004FF48040012101F005FF30460A21052223
-:1007F40001F0C2FC04F10408052230460F2101F087
-:10080400BBFC3046414601F06BFC01254FF40073FC
-:100814000027304641466360A6F5E6362572A77286
-:1008240001F05EFC414648462572A772656001F0FE
-:1008340057FC304601F06EFF304604F10C0101F024
-:10084400C1FF3046294601F0DCFF484629462A46C6
-:1008540001F08DFC39464FF48040BDE8F84301F0C7
-:10086400C9BE00BF00040240000000200000024096
-:10087400F0B50746ADF2044D0E460C460025B919F5
-:10088400B4F5806FA1EB040168460DD94FF4806282
-:1008940000F0C4F8284669464FF4806201F0AAFAD1
-:1008A400A4F580640546EAE7224600F0B7F8284636
-:1008B4006946224601F09EFA0DF2044DF0BD08B5DA
-:1008C400202001F0FDFD0028FAD108BD08B5022062
-:1008D40001F0F6FD0028FAD00220BDE8084001F03E
-:1008E400F9BD00B58DB0684601F073FD0023009397
-:1008F4004FF4807368460A9335230B9301F09AFDF5
-:10090400FFF7E4FFFFF7DBFF0DB05DF804FB000029
-:1009140030B5022095B0012101F060FE0024224888
-:100924000021204403220B460C3400F0C3F8482C69
-:10093400F5D101A801F044FD10230024019301A87E
-:10094400162305930294039404940694079401F0E7
-:100954004FFD012001F092FDFFF7C3FF08A801F04D
-:1009640038FD4FF44075662308A813930894129534
-:1009740001F060FDFFF7AAFF08A801F02AFD992302
-:1009840008A813930894129501F054FDFFF79EFFF5
-:1009940042F6E06001F04EFAFFF7A3FF0220214681
-:1009A40001F01CFE15B030BD8C30000830B50121BB
-:1009B4008DB0022001F012FE022001F073FD6846A2
-:1009C40001F007FD4FF0806300934FF040730493F0
-:1009D4004FF4407368460A93AF230B9301F02AFD4A
-:1009E400FFF774FF01F066FD054601F063FD044660
-:1009F40001F060FD240244EA004040EA0504FFF7E8
-:100A04005EFF0220002101F0E9FD0348231A584249
-:100A140058410DB030BD00BFC225370070B5154632
-:100A24008CB004460E460220012101F0D7FD681E59
-:100A340001F038FD684601F0CCFC4FF08063009370
-:100A44004FF040730493042305934FF440630993D8
-:100A54004FF440730A934FF40053089368460B23F2
-:100A64000B9301F0E7FC304601F014FD2544AC4241
-:100A740004D001F01FFD04F8010BF8E7022001F097
-:100A840029FDFFF71CFF0220002101F0A7FD0CB097
-:100A940070BD0000024A136B43F0FF0313637047F9
-:100AA40000380240024A136B23F0FF0313637047BC
-:100AB4000038024013B504464068009002208DF8C7
-:100AC40004008DF805208DF8061020682189A27A8B
-:100AD4008DF8073001F050FB2068694601F000FBF7
-:100AE40002B010BD02460068838823F4E0631B044F
-:100AF4001B0C838003889BB243F400730380082398
-:100B04000020517513751076704707B500230091C6
-:100B140069468DF804308DF805308DF8073001F002
-:100B2400DFFA03B05DF804FB10B50B4C342300FB73
-:100B34000344236B7BB10A2001F081F96068A1684A
-:100B4400FFF7E3FF20696169FFF7DFFF236B0120F3
-:100B5400BDE81040184710BDD4300008027D082AB3
-:100B640010B5044607D10268938823F4C0631B04BC
-:100B74001B0C938084E0434B006803EB8203596BA6
-:100B840001F0CAFB00287BD0237D072B72D8DFE855
-:100B940003F0040B1921323B5A6E237A226803F0C6
-:100BA400FE03138201232DE02268A37A1382637A61
-:100BB4000BB1022326E093889BB243F480639380B5
-:100BC40006231FE0226813889BB243F480731380CA
-:100BD400032317E0237A226843F001031382E37AA4
-:100BE400012B01BF138823F480631B041B0C08BF73
-:100BF4001380042306E0226893889BB243F4806345
-:100C04009380052323753BE023682269198A237B9B
-:100C1400D154237BE27A0133DBB2591C9142237312
-:100C240007D12268138823F480631B041B0C1380F0
-:100C340026E0934224D12268938823F480631B0422
-:100C44001B0C938013E0237B21692268CB5C138205
-:100C5400237BE17A0133DBB29942237310D1938869
-:100C640023F480631B041B0C93800723CAE72046EC
-:100C7400012101E020460021BDE81040FFF732BF0A
-:100C8400002010BDD43000082DE9F341184C342362
-:100C940000FB0344236B43B300209847D4F804803B
-:100CA400A668009600250127404669468DF8047021
-:100CB4008DF805508DF8075001F012FAB1B22A46AA
-:100CC400404601F054FA2669646900943046694646
-:100CD4008DF804708DF805508DF8075001F000FA76
-:100CE4003046A1B22A4601F042FA02B0BDE8F081D2
-:100CF400D43000081C23104A434370B505460F4CFA
-:100D0400D058D61801F04AFA342305FB03440021D5
-:100D1400E06901F06FFC337923B92846BDE87040DF
-:100D2400FFF7B2BF6068A168FFF7EFFE2069616951
-:100D3400BDE87040FFF7E9BE34010020D43000085C
-:100D44002DE9F04F344D1C2303FB005387B01B796E
-:100D540007460BB9FFF7E8FE304B342407FB043495
-:100D64000226D4F80490A389A26894F80EB00193E3
-:100D74004FF001084FF0000A484602A902928DF88C
-:100D84000C608DF80D608DF80E808DF80FA001F0C9
-:100D9400A7F9019B484619465A4601F0EDF9D4F8E3
-:100DA4001090238B626994F81AB00193484602A903
-:100DB40002928DF80C608DF80D608DF80E808DF820
-:100DC4000FA001F08DF9019B5A461946484601F0DF
-:100DD400D3F94146E06901F00DFC02A801F076FA6E
-:100DE4000F4A236A029393424FF48063ADF81230A2
-:100DF4004FF01C0384BF626AADF80E2003FB07F4B6
-:100E040002A9285901F0F8F92859012101F06CFAD6
-:100E140007B0BDE8F08F00BF34010020D4300008D3
-:100E2400A08601002DE9F341414C9846237F0546F5
-:100E34000E4617461BB93F484FF4BD7103E020B17D
-:100E44003C4840F27B1100F087FF23790BB9002066
-:100E54006AE023681B8B9B0711D49DF82030E37252
-:100E64000025099B277284F80A806672257325750C
-:100E74002361E5822068012101F042FA1FE0FFF7B7
-:100E840039FF2846FFF75CFF22682B48138B99072C
-:100E9400E3D50138FAD1DAE7227E22B1019A511E54
-:100EA4000191002AF8D100222276019A204902B346
-:100EB4000A7D082A13D14D7D237D082B26D0236873
-:100EC4001A8892B242F480721A809A8892B242F4DA
-:100ED40040729A8001222276174A0192DEE7CA8A7A
-:100EE400B2F57A7F05D20132CA82012000F0A7FF51
-:100EF400E2E79A8822F4E0621204120C9A801A88BB
-:100F040092B242F400721A8008230B7522680A4CCC
-:100F1400138B9B0707D5013CFAD12046FFF7EAFE65
-:100F24002046FFF70DFF284602B0BDE8F08100BF60
-:100F3400340100203132000880841E00017D0368E2
-:100F4400082906D19A8822F480721204120C9A801D
-:100F540038E09A8A120541BF9A8A22F40062120488
-:100F6400120C48BF9A829A8AD20541BF9A8A22F407
-:100F740080721204120C48BF9A829A8A52051ED5B6
-:100F84009A8A22F480621204120C04299A820AD1E9
-:100F9400032202759A8822F4E0621204120C9A80E9
-:100FA400002303760EE0012909D19A8822F4E06235
-:100FB40012040021120C01759A80017602E00021CE
-:100FC400FFF790BD0020704737B5124C124B2360D9
-:100FD40008222275482200238DF8042001250C22C2
-:100FE40001A88DF80520237123762373E37223610E
-:100FF4008DF806308DF8075000F090FF492301A8C2
-:101004008DF8043000F08AFF206801F0C7F82577D6
-:1010140003B030BD34010020005C004013B50D4C1A
-:10102400227F034622B90C484FF48C7100F094FEE1
-:1010340038B1012200920848084A4FF48D7100F03B
-:101044007FFE23790BB9FFF77BFE237901332371EC
-:1010540002B010BD340100203132000846320008CD
-:101064000C4A117F08B519B90B484FF4957103E088
-:1010740020B1094840F22B1100F06EFE13793BB108
-:10108400013BDBB213711BB9BDE80840FFF732BE68
-:1010940008BD00BF340100203132000837B50D46C9
-:1010A40014460093069B019301212A462346FFF729
-:1010B400B9FE03B030BD07B500930123FFF7EEFF7F
-:1010C40003B05DF804FB37B50D4614460093069B48
-:1010D400019300212A462346FFF7A4FE03B030BD46
-:1010E4001FB504AC04F8013D01230094FFF7EBFFA6
-:1010F40004B010BD0148FFF731BD00BF340100202A
-:101104000148FFF71BBF00BF340100200148FFF76F
-:1011140025BD00BF500100200148FFF70FBF00BFED
-:10112400500100200148FFF719BD00BF3401002021
-:101134000148FFF703BF00BF3401002038B50C4657
-:1011440005460020FFF76AFF234681212A46002036
-:10115400FFF7B1FF04460020FFF782FF204638BDA9
-:1011640038B50C4605460020FFF758FF234680217A
-:101174002A460020FFF7B4FF04460020FFF770FF63
-:10118400204638BD37B50D460DF107010446FFF77B
-:10119400D5FF50B19DF807300121A9401943C9B2C8
-:1011A40020468DF80710FFF7DBFF03B030BD0000C9
-:1011B40013B590200DF10701FFF7C0FF044648B3B3
-:1011C4009DF80740A4F111035C425C4114B3FF2174
-:1011D4004220FFF7C5FFFF214120FFF7C1FF352063
-:1011E4000DF10701FFF7AAFF044620B90B480C4A8A
-:1011F400BE2100F0A5FD9DF80710352041F0030144
-:101204008DF80710FFF7ACFF0A201E21FFF7A8FF97
-:101214000028EBD0204602B010BD00BF7232000897
-:101224009032000807B587200DF10701FFF786FF0C
-:1012340018B19DF80700C0F3800003B05DF804FB0B
-:1012440007B536200DF10701FFF778FF20B19DF8AF
-:1012540007301B090B2B01D0002014E077200DF17F
-:101264000701FFF76BFF0028F6D09DF8073003F065
-:10127400100303F0FF0023B1FFF7D4FF80F0010057
-:10128400C0B200F0010003B05DF804FB08B53620DD
-:101294000121FFF777FF00B1FEE708BD07B5EF2195
-:1012A4007420FFF75DFFFF217520FFF759FF0DF153
-:1012B40007017720FFF742FF0DF107017820FFF7C0
-:1012C4003DFF0A213920FFF74BFF35200421FFF7AA
-:1012D40059FF00B1FEE703B05DF804FBB0F1006F05
-:1012E40010B504460BD20C48FFF7E8F82046FFF788
-:1012F40004F90A48FFF7FAF84FF0FF3010BD084B25
-:10130400002053F8042BA24202D81A68944202D354
-:1013140001300B28F5D110BDF0320008AF320008BF
-:10132400283100082DE9F8430446174699460E462D
-:10133400C1B3FFF7D3FF0546601E3044FFF7CEFF6D
-:10134400002D804631DB00282FDB461B01361FB100
-:10135400002031464A46B84700F022FE2C46444558
-:101364001EDCF32000F032FE114B002133F8140090
-:1013740000F064FE09280AD00E48FFF79FF82046C3
-:10138400FFF7BBF8FFF72AF800F018FE0DE02FB1C5
-:10139400C5F10100204431464A46B8470134DEE72E
-:1013A40000F00CFE0120BDE8F8830020BDE8F883BE
-:1013B40058310008C83200082DE9F0470E4615469A
-:1013C4000746984600F0ECFDF32000F0FFFD4FEADD
-:1013D400D51934463544AC42C6EB040A20D0B81BB8
-:1013E400204414F8011B00F05FFE09280CD00F48BC
-:1013F400FFF764F83846FFF780F8FEF7EFFF00F0D8
-:10140400DDFD0020BDE8F087B8F1000FE3D01AF04D
-:101414007F0FE0D14FEADA104946089AC047DAE76D
-:1014240000F0CCFD0120BDE8F08700BFE0320008E9
-:1014340008B545F2555000F07DFF042000F080FF10
-:1014440040F6FF7000F082FF002000F073FF4FF4BD
-:1014540080500121BDE8084000F096BD08B500F0B9
-:1014640083FFBDE8084000F077BF08B57D2001F098
-:1014740015F9003018BF012008BD4900FFF760B915
-:101484002DE9F041012186B005460020FFF758F907
-:10149400042000F0A3FB03A8294600F003FC03A8E2
-:1014A40000F00FFC08B93C4814E03C480C35FFF749
-:1014B4001DF804992846FFF7DBF904463848FEF77F
-:1014C400FDFF2046FFF719F8FEF788FF059B9C42B5
-:1014D40004D03448FFF70AF8012059E0049C32484C
-:1014E400FFF704F82146314A31480023FFF71AFF79
-:1014F4003048049FFEF7FAFF4FEA57080024BC4225
-:1015040020D23E1BB6F5803F28BF4FF480362A48D0
-:1015140061193246FFF782FA002304F10060009358
-:1015240000F5804024493246FFF746FF18B92348A6
-:10153400FEF7DCFF06E0344408EB54003946FFF7BD
-:10154400FFF8DCE71E48FEF7B9FF0498FEF7D5FF65
-:101554001C48FEF7B3FF1649049A002000F04AFC29
-:1015640004461948FEF7AAFF0598FEF7C6FF174878
-:10157400FEF7A4FF2046FEF7C0FFFEF72FFF059BF2
-:101584009C4204D01248FEF7B1FF022000E0002084
-:1015940006B0BDE8F08100BFF93200081733000837
-:1015A400343300084A3300086D3300087F14000800
-:1015B40000400008803300085101002093330008E4
-:1015C4009E330008AC330008B5330008C833000864
-:1015D400CE33000810B5022000F018FBD8B3042065
-:1015E40000F014FB044670B11B48FEF77FFF042093
-:1015F40000F000FB022000F0FDFA4FF40040BDE8CB
-:10160400104000F0F7BA1548FEF770FF082000F00C
-:10161400F1FA102000F0EEFA202000F0EBFA40205E
-:1016240000F0E8FA2046FFF72BFF022807D1082034
-:1016340000F0D4FA102000F0D1FA00F0A9FB042045
-:1016440000F0D8FA022000F0D5FA4FF40040BDE8CB
-:10165400104000F0C3BA10BD193400084F3400081C
-:1016640010B52548FEF742FF4FF40010FFF708FFBE
-:1016740010B102283AD809E0202000F0BBFA40203B
-:1016840000F0B8FA802000F0A9FA2FE0082000F05A
-:10169400A5FA102000F0A2FA202000F0B7FA20B931
-:1016A4001648FEF723FF202007E0402000F0AEFAA2
-:1016B40058B91348FEF71AFF402000F08FFA4FF490
-:1016C400007000F08BFA00F063FB0E48FEF70EFF8B
-:1016D400082000F08FFA102000F08CFA202000F08F
-:1016E40089FA402000F086FA002400E00124042056
-:1016F40000F080FA204610BD6A34000884340008E3
-:10170400BD340008F634000808B50248FEF7EEFEC2
-:1017140000F045FB303500081EF0040F0CBFEFF35A
-:101724000880EFF30980FFF7EFBF704708B5012089
-:10173400FEF79AFD08B900200FE00020FEF794FDA3
-:101744000028F8D00220FEF78FFD0028F3D00320F4
-:10175400FEF78AFD80F00100C0B200F0010008BD70
-:101764001FB504461048FEF7C1FE01A90C2220460D
-:1017740000F070FB01A8FEF7B9FE2046FEF764FFF7
-:10178400FEF780FD094B20F0040018701C46FEF79C
-:1017940079FD237800F0FB00834201D000F0F8FAD1
-:1017A4000A2000F04CFBF2E7263500085101012025
-:1017B40030B585B0FFF76EF94FF08050012100F08D
-:1017C40019FF022000F0EAFD012807D1022000F0F1
-:1017D400EFFDA548FEF78AFE00F0E1FA00214FF084
-:1017E400805000F007FFFEF7A5FDA048FEF77EFE3F
-:1017F4009F48FEF77BFE9F48FEF778FE9E48FEF763
-:1018040075FE9E48FEF772FE9848FEF76FFEFFF7DE
-:10181400DBFB9B48FEF76AFEFFF7CAFC9948FEF71C
-:1018240065FE00F0FDF99848FEF760FE00F024FA2A
-:1018340000210C2201A801F074F800F019FA01A9A2
-:101844000C2200F007FB01A8FEF750FE8748FEF7C4
-:101854004DFE8648FEF74AFE4FF4804000F0D6F96C
-:1018640090B18A48FEF742FE4FF4804000F0C2F97E
-:10187400082000F0BFF9102000F0BCF9202000F08F
-:10188400B9F9402000F0B6F9FFF7DAFC38B1804826
-:10189400FEF72CFE7F48FEF729FEFFF7FFFCFFF75B
-:1018A40037F8FEF7FDFCFEF795FFFEF7B1FEFEF7F5
-:1018B4008BFC08B1784803E0FEF7CEFC10B1774802
-:1018C400FFF74EFF00F0C4F9802000F09FF918B133
-:1018D400802000F08FF949E04FF4003000F096F9D1
-:1018E40020B14FF4003000F085F95BE1FFF71EFFF3
-:1018F40068B16B48FEF7FAFD41F28834FFF716FF32
-:1019040078B1012000F09BFA013CF7D14AE1654B24
-:101914000CCB013301D0013203D16348FEF7E6FD5D
-:1019240040E1FFF7A2FD18B3FFF79FFD10B15F4838
-:10193400FEF7DCFD4FF4007000F068F910B15C486C
-:10194400FEF7D4FD4FF4007000F054F9102000F0BD
-:101954005DF9D0B15748FEF7C9FD082000F04AF9F7
-:10196400102000F047F9FFF77BFEF8B95248A7E7CB
-:101974004FF4007000F04AF90028D5D1082000F097
-:1019840039F9102000F036F90EE0082000F03EF995
-:1019940020B14A48FEF7AAFD102003E04848FEF7AC
-:1019A400A5FD082000F01AF9FFF714FE4FF40050CB
-:1019B40000F02CF904464FF4805000F027F9400061
-:1019C40040EA8400C4B24FF4006000F01FF92043E1
-:1019D400C0B20728C3B20DD14FF4006000F00AF979
-:1019E4004FF4805000F006F94FF4005000F002F973
-:1019F400344865E70133DBB2023B4FF40060052B4A
-:101A040011D8DFE803F00C1003100C1000F0F2F80A
-:101A14004FF4805000F0EEF84FF4005003E000F073
-:101A2400E9F84FF4805000F0D9F84FF4002000F0AA
-:101A3400EDF8002851D04FF4002000F0DBF82248E4
-:101A4400FEF754FD0024FFF7EDFB002840D0042CE2
-:101A540003D11E48FEF74AFD00244FF4FA7000F04B
-:101A6400EEF90134EFE700BF3B3500087C3700088E
-:101A740048350008593500086A3500087B350008E8
-:101A84008C35000897350008A3350008AC350008EC
-:101A9400D93500080A360008014550FE024550FEBB
-:101AA400293600080040000864360008773600082C
-:101AB4008F360008AF360008034550FED7360008BD
-:101AC400FD360008044550FE233700083737000868
-:101AD4003648FEF70BFDFFF7D9FBFFF7A9FCFFF72C
-:101AE400BDFCFEF7DFFF324B32485C681D68FEF731
-:101AF400E5FC2046FEF701FD2F48FEF7DFFC00223F
-:101B0400930003F1604303F5614301324FF0FF3169
-:101B1400082AC3F88010C3F88011F1D1274B284A52
-:101B2400196B0A401A635A6B22F0C0025A639A6B0B
-:101B340022F003029A63196C224A0A401A64596C0F
-:101B4400214A0A405A6400F0CBFC2048012100F0ED
-:101B540069FD1E48002100F065FDF120012100F01F
-:101B64006DFDF120002100F069FD0120014600F027
-:101B740071FD0120002100F06DFD1548012100F0E8
-:101B840075FD1348002100F071FD1248012100F099
-:101B940079FD1048002100F075FD63B64FF0FF3E5B
-:101BA400AD4620470C48FEF7A1FCDCE6523700089E
-:101BB400004000086137000875370008003802400B
-:101BC40000EF9FFF003619E8CC86E8FE0010E02203
-:101BD400FFC9FEF6337F77047D37000810B504464D
-:101BE400002000F087FD40EA04010020BDE8104019
-:101BF40000F070BD10B50446002000F07BFD20EA23
-:101C040004010020BDE8104000F064BD10B5044696
-:101C1400002000F06FFD204214BF0120002010BD01
-:101C240008B501214FF0805000F0E4FC012000F0E1
-:101C3400A3FB4FF08050002100F0DCFC0120FFF7F3
-:101C4400E5FF20B90121BDE8084000F043BD08BD0F
-:101C540008B50648FEF732FC002000F04BFDFEF705
-:101C64004CFCBDE80840FEF7B9BB00BF9C37000838
-:101C7400022000F03FBD000008B5FFF7F9FF04495A
-:101C8400884204D00220BDE8084000F023BD08BD0E
-:101C94008BB8185808B50248FEF728FC00F078F80D
-:101CA400A83700081FB504460C2201A8FEF7B6FEAB
-:101CB40001AB03CB20601868A0602046616004B0CB
-:101CC40010BD0068A0F10C03584258417047000051
-:101CD40080B50646174610480D461C46FEF7EEFB37
-:101CE4003846FEF7EBFB0D48FEF7E8FB3046FEF7FF
-:101CF400E5FB0B48FEF7E2FB2846FEF7FEFB2CB1A2
-:101D04000848FEF7DBFB2046FEF7D8FB0648FEF743
-:101D1400EDFBFFF7BFFF00BFC537000856350008CD
-:101D2400CE370008573500087C3700081FB506AACF
-:101D340052F8044B039200921A462346FFF7C8FF59
-:101D44000CB41FB506AA52F8043B03920092014A50
-:101D5400FFF7BEFFD037000807B500230093724693
-:101D6400014BFFF7E3FF00BFD7370008BFF34F8FE6
-:101D74000549064BCA6802F4E0621343CB60BFF323
-:101D84004F8F00BFFDE700BF00ED00E00400FA053F
-:101D940008B5FEF7C5FC00F095FCFFF7E7FF08B5B2
-:101DA400FFF7E4FFF0B5064600240120254603466C
-:101DB40094421DD011F804C000F1010EBCF1000FD3
-:101DC40003D17355774605460DE00133DBB2FF2B93
-:101DD400774606F800C007D102F1FF3C644506D0FF
-:101DE4007355871C7546012301343846E0E7704675
-:101DF4007355F0BD30B5C9B1C0430A44914213D004
-:101E040011F8013B0A4D83EA000404F00F0455F86D
-:101E1400244084EA101080EA131303F00F0355F8EA
-:101E2400233083EA1010E9E7C04330BD084630BDD3
-:101E340070310008062358430138FDD1704710B5AE
-:101E440004462CB14FF47A70FFF7F4FF013CF8E735
-:101E540010BD00000A2A10B504DC1148BDE810408A
-:101E6400FEF744BB0C46302304F8023B78234B7046
-:101E74001C220F2393400340D340092B01D8303355
-:101E840002E00F2B02D85733DBB200E02023043AE0
-:101E940004F8013B131DECD100238B7210BD00BF6D
-:101EA400233800081949D1F8883043F47003C1F885
-:101EB4008830174B1A68002042F001021A609860BB
-:101EC4001A6822F0847222F480321A60114A5A602D
-:101ED4001A6822F480221A60D8601A6C0E4842F004
-:101EE40080521A64026842F4404202609A689A601E
-:101EF4009A689A609A6842F480529A604FF4C06279
-:101F0400C3F800244FF000638B60704700ED00E0DD
-:101F1400003802401030002400700040C27803787A
-:101F240010B512B3164AD1684278C943C1F30221ED
-:101F3400C1F10404E4B2A240D4B20F220A41817870
-:101F44000A40224303F1604303F561431201D2B214
-:101F540083F8002303780122590903F01F0302FACE
-:101F640003F3084A42F8213010BD5A09012103F055
-:101F74001F03994002F12003024A42F8231010BDC6
-:101F840000ED00E000E100E0044B9A6809B1104361
-:101F940001E022EA00009860704700BF002004E0DE
-:101FA400044B1A69002ABFBF034A5A6002F18832FF
-:101FB4005A607047003C024023016745024A136996
-:101FC40043F0004313617047003C0240014BD8606A
-:101FD400704700BF003C02400E4BDA68D20310D4B5
-:101FE400DA68D1060FD4DA68D2050ED4DA6812F0B2
-:101FF400E00F0CD1DB6813F0020F14BF0820092096
-:102004007047012070470620704702207047072060
-:10201400704700BF003C024007B509238DF8073024
-:10202400FFF7DAFF8DF807009DF80730012BF7D092
-:102034009DF8070003B05DF804FB000070B5064688
-:1020440041B1012908D002290CBF4FF400754FF4A7
-:10205400407503E00D4601E04FF48075FFF7DCFFA7
-:1020640009281ED10F4C236923F44073236121698D
-:1020740029432161236923F0F8032361236943F091
-:1020840002031E432661236943F480332361FFF76F
-:10209400C3FF236923F002032361236923F0F803B8
-:1020A400236170BD003C024070B505460E46FFF743
-:1020B400B3FF092811D1094C236923F44073236128
-:1020C40023692361236943F0010323612E70FFF721
-:1020D400A3FF236923F00103236170BD003C024088
-:1020E400F0B50E6800220123934003EA060E9E45D4
-:1020F4002AD1550003230468AB40DB431C40046031
-:102104000C79076804FA05FC013C4CEA0707012C2A
-:10211400076011D884684F791C4084608468AF409C
-:1021240027438760446824EA0E0444608C79476836
-:102134009440A4B23C434460C4682340C360CB7958
-:10214400C468AB402343C3600132102ACBD1F0BD35
-:102154004FF6FF7303600023037143718371C371EE
-:1021640070470369194214BF0120002070470AB167
-:10217400018370474183704701F00703C90800EBEE
-:10218400810010B59B00046A0F21994024EA0101E3
-:102194000162016A9A401143016210BD08B5134BF4
-:1021A400984207D14FF40010012100F05FFA4FF478
-:1021B400001014E00E4B984207D14FF48000012127
-:1021C40000F054FA4FF4800009E00A4B98420BD116
-:1021D4004FF40000012100F049FA4FF400000021FF
-:1021E400BDE8084000F042BA08BD00BF00540040FA
-:1021F40000580040005C00407FB5868826F03F060A
-:102204000446360468460D46360C00F085F9029AF9
-:102214002C48B2FBF0F081B20E43A68023882A4EEC
-:1022240023F001031B041B0C23802B68B3420AD840
-:102234005B000131B2FBF3F39BB2032B89B298BF6D
-:102244000423218423E0EE884BF6FF718E421BBFEA
-:1022540019214B4303EB4303B2FBF3F315BF9BB2CA
-:10226400B2FBF3F343F480439BB2C3F30B020AB90A
-:1022740043F001034FF4967101FB00F24FF47A71BD
-:1022840092FBF1F2013292B243F400432284A3831D
-:1022940023886989AA889BB243F001032380238899
-:1022A40023F4816323F002031B040A431B0C13432E
-:1022B4009BB223802A89AB8913439BB2238104B048
-:1022C40070BD00BF40420F00A086010041F2883378
-:1022D4000360002383804BF6FF72038143814FF434
-:1022E4008043C28083817047038819B19BB243F055
-:1022F400010303E023F001031B041B0C038070475C
-:10230400038819B19BB243F4806303E023F4806330
-:102314001B041B0C03807047838A9AB2038B10B58D
-:1023240042EA034321F07F4404EA0300431A58427B
-:10233400584110BD014B1860704700BF0030004089
-:10234400014B5860704700BF00300040014B98605B
-:10235400704700BF00300040024B4AF6AA221A60C0
-:10236400704700BF00300040024B4CF6CC421A606C
-:10237400704700BF00300040014B1860704700BF39
-:1023840020000E4210B9034B19607047024B1960CC
-:10239400704700BFA0000E429C000E42034B5B68D6
-:1023A400184214BF01200020704700BF0070004095
-:1023B400024A136843EA80001060704700700040CE
-:1023C4000023036043608360C360036143618361EE
-:1023D4007047002343608360C3600360036143610B
-:1023E4008361C361036243628362C3627047000016
-:1023F4000E4903680A6810B544691C4383691C4389
-:1024040022F07F4323F030034268234343EA02630C
-:102414000B60C36882684C681A43054B234013431E
-:10242400026943EA02434B6010BD00BF001000A0E4
-:10243400FEF7E0FF90E80C001A4383680D491A4345
-:10244400C3681A4303691A4383691A43C3691A4365
-:10245400036A1A43436A1A43836A1A43C36A10B568
-:102464001A434C69044B23401343426943EA8243B1
-:102474004B6110BD001000A000008090044B1A684E
-:1024840010B142F0010201E022F001021A6070472B
-:10249400001000A0024B9A68920658BF98617047DA
-:1024A400001000A0024B9A68920658BF186170474A
-:1024B400001000A0014B1878704700BF201000A046
-:1024C400034B9B68184214BF01200020704700BFD3
-:1024D400001000A0014BD860704700BF001000A09E
-:1024E4000B4B1A68002142F001021A6099601A68C5
-:1024F40022F0A85222F410221A60064A5A601A687E
-:1025040022F480221A60D960C3F88C10704700BF8F
-:1025140000380240103000242C4B9A6802F00C0260
-:1025240010B50C2A38D8DFE802F0373737370737C9
-:102534003737093737371E00254B2EE05968234AB1
-:102544005B6811F4800F03F03F03516814BF204A05
-:10255400204AB2FBF3F31D4A5268C1F388114B437E
-:10256400C2F3014213E05968184A5B6811F4800F02
-:1025740003F03F03516814BF154A164AB2FBF3F344
-:10258400124A5268C1F388114B43C2F302720132FA
-:102594005200B3FBF2F300E00E4B0C4A0360936865
-:1025A4000D49C3F30313CC5C0368E34043609468B0
-:1025B400C4F382240C5D23FA04F484609268C2F3A9
-:1025C40042328A5CD340C36010BD00BF0038024071
-:1025D40000127A000024F4001E000020044B9A6BC1
-:1025E40009B1104301E022EA00009863704700BF7C
-:1025F40000380240044B1A6C09B1104301E022EA8E
-:1026040000001864704700BF00380240044B5A6C45
-:1026140009B1104301E022EA00005864704700BF8A
-:1026240000380240044B1A6909B1104301E022EA60
-:1026340000001861704700BF00380240044B5A691B
-:1026440009B1104301E022EA00005861704700BF5D
-:1026540000380240044B9A6909B1104301E022EAB0
-:1026640000009861704700BF00380240044B1A6AAA
-:1026740009B1104301E022EA00001862704700BF6C
-:1026840000380240044B5A6A09B1104301E022EABF
-:1026940000005862704700BF003802404209012A16
-:1026A400074B01D11B6803E0022A0CBF1B6F5B6F51
-:1026B40000F01F0023FA00F000F00100704700BF93
-:1026C40000380240024A536F43F0807353677047E7
-:1026D4000038024082B000230193054B0193019B13
-:1026E40003EB80000190019B196002B0704700BFAA
-:1026F4005028004082B000230193054B0193019BB5
-:1027040003EB80000190019B186802B0704700BF82
-:102714005028004008B5254B984207D14FF480500B
-:102724000121FFF7AFFF4FF4805039E0204B98426E
-:1027340007D14FF480400121FFF798FF4FF4804008
-:1027440009E01C4B98420BD14FF400400121FFF7E4
-:102754008DFF4FF400400021BDE80840FFF786BF1D
-:10276400154B984207D14FF400500121FFF78AFF1F
-:102774004FF4005014E0114B984207D14FF48010ED
-:102784000121FFF77FFF4FF4801009E00C4B9842C2
-:102794000BD14FF400100121FFF774FF4FF4001028
-:1027A4000021BDE80840FFF76DBF08BD00300140BF
-:1027B40000380040003C004000340140005001401B
-:1027C4000054014003884A8810B503F441540B882F
-:1027D40013438A881343CA8813430A8913434A89D3
-:1027E40013438A891343CA89134323439BB2038047
-:1027F400838B23F400631B041B0C83830B8A0382E7
-:1028040010BD038819B19BB243F0400303E023F0E9
-:1028140040031B041B0C03807047818170470389AC
-:10282400194214BF01200020704700007FB5038ABD
-:10283400CA889BB223F440531343038283890E4610
-:102844009BB223F4B053098923F00C02B3880B43E1
-:1028540071890B439BB213438381838AB2899BB2F0
-:1028640023F440731343838204466846FFF754FEFF
-:102874001A4B9C4203D003F580639C4201D1039D13
-:1028840000E0029DA38931681BB2002B4FF01902AE
-:1028940002FB05F2B4BF4D008D00B2FBF5F5A28931
-:1028A4006426B5FBF6F00001010912B2002A06FB0A
-:1028B4001153ADBF1A01D90032313232B5BFB1FB69
-:1028C400F6F2B2FBF6F302F0070203F00F03B4BF13
-:1028D4001043184380B2208104B070BD0010014041
-:1028E400838919B19BB243F4005303E023F40053EA
-:1028F4001B041B0C83817047C1F30801818070475E
-:102904000388194214BF01200020704710B5431EEC
-:102914000A44914204D011F8014B03F8014FF8E73F
-:1029240010BD02440346934202D003F8011BFAE7A8
-:10293400704700001D32000800080240002000001B
-:10294400020D000022320008000C024004000000C6
-:102954000302020025320008001C024001000000AE
-:10296400070002002C320008001C02400200000094
-:1029740007010200000000000000000001424F4F68
-:10298400544C4F414445520000000000002A2A00E4
-:1029940000000000000000000000000000006000D3
-:1029A40000030018000000000000000060000003A5
-:1029B4000018000000000000000060000003001880
-:1029C4000000000000000000600000030018000088
-:1029D4000000000000006000000300180000000078
-:1029E400E003001F60F800C30718C0070000F80FD9
-:1029F400C07F60FE03F31F18F01F00000C1860C0B6
-:102A04006003061B30181830000006303080E101E6
-:102A14000C0F60180C60000003601800E300180736
-:102A2400C01806C0008001400C006200100380182A
-:102A34000380008001C00C0066003003801903800D
-:102A4400018001C0FCFF670030038019FFFF018093
-:102A540001C0FCFF630030038019FFFF008001C048
-:102A64000C006000300380190300008001C00C00DA
-:102A74006000300380190300008001400C006200F4
-:102A8400100380180380008003601800C300180638
-:102A9400C01806C000800730308081010C0C60181B
-:102AA4000C6000800D1860C0000306183038183020
-:102AB4000080F90FC07F00FE03F01F70F01F00803C
-:102AC400E103001F00F800C00760C0070080010098
-:102AD4000000000000000000000000800100000071
-:102AE4000000000000000000008001000000000061
-:102AF4000000000000000080010000000000000051
-:102B04000000000000800100000000000000000040
-:102B1400000000000C00060000000060003000000F
-:102B240018000300000000C00018000030800100FD
-:102B340000000080010C000060C0000000000000E4
-:102B440003060000C060000000000000060300004F
-:102B540080310000000000008C010000001B000018
-:102B640000000000D8000000000E0000000000007B
-:102B740070000000000E0000000000007000000063
-:102B8400001B000000000000D8000000803100009D
-:102B9400000000008C010000C06000000000000084
-:102BA4000603000060C000000000000003060000EF
-:102BB4003080010000000080010C000018000300B8
-:102BC400000000C0001800000C00060000000060B7
-:102BD40000300000000000000000000000000000C1
-:102BE40000000000000000000000000000000000E1
-:102BF40000000000000000000000000000000000D1
-:102C040000000000000000000000000000000000C0
-:102C140000000000000000000000000000000000B0
-:102C240000000000000000000000000000000000A0
-:102C34000000000000000080FFFF01000000000011
-:102C4400000000FEFFFF7F00000000000000E07FA6
-:102C54000000FE07000000000000FE010000807F6D
-:102C64000000000000801F00000000F801000000C8
-:102C740000F00100000000800F000000007C000054
-:102C8400000000003E000000000F000000000000F3
-:102C9400F00000008003000000000000C0010000FC
-:102CA400E0000000000000000007000070000000C9
-:102CB40000000000000E00001800000000000000EA
-:102CC400001800000C0000000000000000300000AC
-:102CD4000600000000000000006000000300000087
-:102CE4000000000000C0008001000000000000009F
-:102CF400008001C00000000000000000000003602C
-:102D04000000000000000000000006300000000089
-:102D14000000000000000C10000000000000000093
-:102D24000000087C00FE00FF01C701C701C701C7FE
-:102D340001C701C701C701C701C701C701C701C74F
-:102D440001FF01FE007C0038003C003E003E0038DC
-:102D540000380038003800380038003800380038AF
-:102D64000038003800FE00FE00FE007C00FE00FF7C
-:102D740001C701C701C001C001E000F00078003CB8
-:102D8400001E000E000F000700FF01FF01FF017C81
-:102D940000FE00FF01C701C701C001C001F80078AF
-:102DA40000F800C001C001C001C701C701FF01FE56
-:102DB400007C00E000E000F000F000F800F800F80B
-:102DC40000FC00EC00EE00E600FF01FF01FF01E063
-:102DD40000E000E000E000FF00FF00FF0007000744
-:102DE4000007007F00FF00FF01C701C001C001C749
-:102DF40001C701C701FF01FE007C007C00FE00FF4B
-:102E040001C701C701070007007700FF00FF01C7E2
-:102E140001C701C701C701C701FF01FE007C00FF14
-:102E240001FF01FF01E000E0007000700070003855
-:102E3400003800380038001C001C001C001C001C5A
-:102E4400001C007C00FE00FF01C701C701C701C7C9
-:102E540001FE007C00FE00C701C701C701C701C70E
-:102E640001FF01FE007C007C00FE00FF01C701C7DA
-:102E740001C701C701C701FF01FE01DC01C001C098
-:102E840001C701C701FF01FE007C00000000000033
-:102E94000000007C00FE00FF01C701C701F001FC37
-:102EA40001CE01C701C701E701FF01DF01CE010720
-:102EB40000070007000700E700F701FF01CF01C783
-:102EC40001C701C701C701C701C701CF01FF01F74E
-:102ED40001E70000000000000000007C00FE00FF8D
-:102EE40001C701C7010700070007000700C701C7A2
-:102EF40001FF01FE007C00C001C001C001C001CE81
-:102F040001DF01FF01E701C701C701C701C701C70D
-:102F140001C701E701FF01DF01CE0100000000004D
-:102F24000000007C00FE00FF01C701C701C701FFCC
-:102F340001FF010700C701C701FF01FE007C00E09B
-:102F440000F000F8003800FE00FE00FE00380038F3
-:102F540000380038003800380038003800380038AD
-:102F6400003800000006830100000000000000009B
-:102F7400000000068301000000000C0000000000B7
-:102F840000068301000000000C00000000D8783621
-:102F94009B79C0E3D90C8C67DB3C1BF8FD7EBFFD3D
-:102FA400E0F7FB1FC6EFFB7E1F98CD66B3CD6036FE
-:102FB4009B19C66C18660398FD66B3FD60309B19B7
-:102FC400C66F18660398FD66B3FD60309B19C36F26
-:102FD400186603980D66B30D60369B19C3601866B6
-:102FE40003F8FD7EBFFDECF79B19C36F187E03D871
-:102FF40078369B79CCE399998167183C03180000D3
-:103004000000000000800100000000180000000023
-:103014000000000000000000001800000000000094
-:1030240000000000000000FFFFFFFFFFFFFFFFFFA5
-:10303400FFFFFF010000000000000000000080010D
-:1030440000000000000000000000800100000000FB
-:1030540000000000000080010000000000000000EB
-:10306400000080010000000000000000000080015A
-:103074000000000000000000000080FFFFFFFFFFD1
-:10308400FFFFFFFFFFFFFF000004024040000000BD
-:1030940006000A00000402400400000002000900C7
-:1030A4000008024000020000090009000008024074
-:1030B400000400000A0009000008024000010000AA
-:1030C400080009000000024002000000010009009D
-:1030D400005C004000000240000100000800040001
-:1030E4000004024000010000080009000000800004
-:1030F400801A06000040000048490000000000005B
-:1031040000000000010003008200070084000700A3
-:1031140001000300020003004000030080000700D8
-:103124008400070000000008004000080080000838
-:1031340000C00008000001080000020800000408A4
-:10314400000006080000080800000A0800000C0837
-:1031540000000E08000008001000180020002800DD
-:1031640030003800400048005000580000000000C3
-:103174006410B71DC8206E3BAC30D9269041DC7674
-:10318400F4516B6B5861B24D3C7105502083B8ED1E
-:1031940044930FF0E8A3D6D68CB361CBB0C2649B42
-:1031A400D4D2D38678E20AA01CF2BDBD53747563F1
-:1031B4006B20627574746F6E2072656769737465D1
-:1031C4007220697320696E76616C69642C20636C6B
-:1031D400656172696E672E00427574746F6E206942
-:1031E400642000697320737475636B2100427574E5
-:1031F400746F6E2077617320707573686564206FD7
-:103204006E20626F6F742E20427574746F6E20632B
-:103214006F756E7465723A20004261636B0055707D
-:103224000053656C65637400446F776E002E2E2F17
-:103234007372632F647269766572732F6932632EB9
-:1032440063004932432064657669636520494420FC
-:103254006F7574206F6620626F756E6473202564C9
-:1032640020286D61783A20256429006F6E002E2E87
-:103274002F7372632F647269766572732F706D6930
-:10328400632F617333373031622E63004661696C9A
-:10329400656420746F20737461727420504D4943C7
-:1032A40020313230487A2050574D00206973206F06
-:1032B4007574736964652073797374656D20666CC5
-:1032C400617368006661696C656420746F2065725F
-:1032D40061736520736563746F7220006661696C45
-:1032E400656420746F207772697465206164647208
-:1032F4006573732000496E76616C69642066697237
-:103304006D77617265206465736372697074696F47
-:103314006E2100436865636B73756D6D696E67201C
-:103324006669726D77617265207570646174650099
-:1033340043616C63756C6174656420636865636B79
-:1033440073756D3A2000496E76616C696420666914
-:10335400726D776172652043524320696E20535029
-:103364004920666C617368210065726173655F6FE3
-:103374006C645F6669726D776172650077726974F7
-:10338400655F6E65775F6669726D77617265005718
-:1033940065277265206465616400436865636B73C7
-:1033A400756D6D696E6720002062797465730D0A0E
-:1033B40000436865636B73756D202D2077616E74AF
-:1033C4006564200020676F7420004F757220696E59
-:1033D4007465726E616C20666C61736820636F6ED5
-:1033E40074656E7473206172652062616420286361
-:1033F4006865636B73756D206661696C656429210A
-:103404002054686973206973207265616C6C79203B
-:1034140062616421004F75722070726576696F7500
-:1034240073206669726D776172652075706461746A
-:1034340065206661696C65642C2061626F727469D1
-:103444006E67207570646174652E004E6577206622
-:1034540069726D7761726520697320617661696C48
-:1034640061626C6521004C6F6164696E67207265EE
-:10347400636F76657279206669726D776172650033
-:103484004661696C656420746F206C6F616420729E
-:1034940065636F76657279206669726D77617265AE
-:1034A4002C20737472696B65206F6E652E205472C4
-:1034B4007920616761696E2E004661696C656420DC
-:1034C400746F206C6F6164207265636F76657279C6
-:1034D400206669726D776172652C20737472696BF2
-:1034E400652074776F2E2054727920616761696E4C
-:1034F4002E004661696C656420746F206C6F616492
-:10350400207265636F76657279206669726D776182
-:1035140072652C20737472696B65207468726565BA
-:103524002E205341442057415443480048415244BB
-:10353400204641554C540065786974207374616E5B
-:1035440064627900205F5F5F20205F20205F20207D
-:103554005F202020002F205F5F3E3C5F3E7C207C6C
-:103564007C207C5F5F005C5F5F205C7C207C7C2037
-:103574007C7C202F202F003C5F5F5F2F7C5F7C7C56
-:103584005F7C7C5F5C5F5C0069326320696E697498
-:10359400656400706D696320696E697465640062B6
-:1035A4006F6F7420626974004C6173742066697271
-:1035B4006D7761726520626F6F7420776173207319
-:1035C4007461626C653B20636C6561722073747214
-:1035D400696B657300504D494320776F6B652066B6
-:1035E400726F6D207374616E6462792064756520F6
-:1035F400746F206368617267657220646973636FB6
-:103604006E6E6563740050757474696E6720504DF6
-:103614004943206261636B20696E746F2073746127
-:103624006E64627900486F6C6420646F776E205515
-:1036340050202B204241434B202B2053454C4543E3
-:103644005420666F72203520736563732E20746F67
-:1036540020666F7263652D626F6F7420505246004E
-:103664004669726D77617265206973206572617352
-:103674006564005761746368646F67206361757380
-:103684006564206120726573657400536F66747796
-:10369400617265206661696C75726520636175731A
-:1036A40065642061207265736574004661696C65A8
-:1036B4006420746F207374617274206669726D770C
-:1036C4006172652C20737472696B6520746872650D
-:1036D400652E004661696C656420746F20737461A3
-:1036E4007274206669726D776172652C20737472CE
-:1036F400696B652074776F2E004661696C65642080
-:10370400746F207374617274206669726D7761726C
-:10371400652C20737472696B65206F6E652E00537F
-:10372400687574646F776E207265717565737465FE
-:10373400642E0052656D6F766520636861726765FB
-:103744007220746F2073687574646F776E005368A9
-:10375400757474696E6720646F776E2E00426F6FA4
-:1037640074696E67206669726D77617265204020A6
-:10377400002E2E2E0D0A0D0A00466F7263652D620F
-:103784006F6F74696E67207265636F7665727920F6
-:103794006D6F64652E2E2E00426F6F742062697403
-:1037A400733A2000536F66747761726520666169AD
-:1037B4006C7572653B20726573657474696E6721FC
-:1037C400004153534552543A20003A004153534563
-:1037D4005254004153534552544E002A2A2A20572A
-:1037E4005446200053544D33320053544D33322049
-:1037F4007065726970686572616C206C696272616F
-:103804007279207472697070656420616E206173CE
-:10381400736572740043524F414B204F4F4D006902
-:10382400746F612062756666657220746F6F2073B1
-:083834006D616C6C00000000E6
-:10383C00FFFFFFFF008400000202000000C0040133
-:10384C000000000000000002100000000700000053
-:10385C00000001020304010203040607080900002A
-:04000005080001846A
-:00000001FF
diff --git a/bin/boot/boot_snowy_bb@1478015115.hex b/bin/boot/boot_snowy_bb@1478015115.hex
deleted file mode 100644
index cdc2a70cd4..0000000000
--- a/bin/boot/boot_snowy_bb@1478015115.hex
+++ /dev/null
@@ -1,874 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008B51A0008A8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0EBFF01F09BFC704707
-:1001E4004436000800000020140000201400002001
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040021FC002401902546E0B200F049FC01AA3B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F08DFF02A800F0FA
-:100234002DFE0120002102F0F5FB00201AE001331D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F071FF02A800F011FE0120214602F006
-:10027400D9FB28460BB030BD482E0008742E000868
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0B1F9003018BF8B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F0AAF991
-:1002C40020460E21052208AE02F0A4F9052220469C
-:1002D4000C2102F09FF94FF4005346F81C3D002511
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F03FF94FF417
-:10030400804320463146019302F038F94FF480537C
-:100314002046314601934FF4007802F02FF920462D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340025F94FF480632046314601938DF8085027
-:100344008DF80B5002F01AF94FF4807320463146B1
-:1003540001938DF808708DF80B5002F00FF94FF4EB
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F004F939464FF4001002F0F7FAA4F53C
-:100384004444164B164E1E60204602F06BFB03A835
-:1003940002F0DFFB4FF4827339463046ADF80E307D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F0A6FB2046394602F0CDFBE8
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F097FE012000F07B
-:1003F40045FB022001F091FE0120BDE8084000F019
-:100404002BBB000010B504460548022102F0BEFBD8
-:100414000028F9D021460248BDE8104002F0B4BBE0
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0EAF8012001F06FFE25484FF4C4
-:100444000041002202F0E1F84FF4807100222148BB
-:1004540002F0DBF8012001F060FE4FF400411D487A
-:10046400012202F0D2F8012001F057FE19484FF49E
-:10047400007102F0C4F818B11748184A6A210AE05A
-:1004840014484FF4004102F0BAF808B1254404E0DE
-:100494001148134A6B2101F0B3FDAC4204D014F8A7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F0ABF808240020FFF7A4FF013CFAD1B6
-:1004C4004FF40071034802F09AF8003018BF01207D
-:1004D40038BD00BF001802408D2E0008972E00087A
-:1004E400B22E000810B504460B4802F04AFB0A4835
-:1004F400022102F04BFB0028F9D00748214602F004
-:1005040043FB0548012102F041FB0028F9D00248D1
-:1005140002F037FBC0B210BD0054014010B54FF4D7
-:10052400807104460022054802F06FF8642001F04F
-:10053400EFFD2046BDE81040FFF764BF00180240FD
-:1005440008B50748802102F021FB0028F9D10548AD
-:100554004FF480710122BDE8084002F056B800BF94
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0C4FDF1E7012010BD00BFDF
-:10059400CF2E000810B5224C638822884FF6FF71D5
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F019F84FF4004100221548FD
-:1005E40002F013F8012001F098FD12484FF4004185
-:1005F400012202F00AF840F2E9340E484FF4007187
-:1006040001F0FDFF0028D9D1013C04D10A4800F0D3
-:100614003DFC204610BD642001F07AFDEDE700BFEB
-:1006240000000F60F22E000804000F601E2F000867
-:100634003A2F000800180240502F000810B5044655
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0B2FF642001F032FD0020FFF782
-:1006B40019FF4FF48071012204461A4801F0A5FF86
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF6C2F00087D
-:100724009B2F000800180240C4350008AA2F0008B7
-:10073400C52F0008CF2F000808B55D235843094B87
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F074BAD5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0E1FE3A4804210122A5
-:1007C40001F023FF00240223029435488DF80830F9
-:1007D400072103230C228DF80930019401F01AFF3C
-:1007E40080232F480193294601F0C8FE022C04D02F
-:1007F4002C48A1B20C2201F00DFF0134102CF5D1CC
-:100804004FF6FB7327480193294601F0B7FE0226F1
-:100814003146013624480C22B6B201F0FBFE102EFC
-:10082400F6D14FF6FC7329461F48019301F0A6FE4A
-:10083400042100221B481E4D01F0E7FE0A2001F0AE
-:1008440067FC01220421174801F0DFFE1E2001F09D
-:100854005FFC0120014602F071F80FCD03AC0FC418
-:1008640095E8070084E80700402200210AA802F066
-:100874000EFA02230B9308230C934FF48053129324
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400FBFD0020012101F061FE1AB070BD00BF14
-:1008A40000040240000C024000100240A42C000886
-:1008B400AC2C00080D4B98221A80A3F68A231B88BF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F086FBE7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0D9FB11E05AB2012A0CDCEF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0DAFD1A480621042201F0EF
-:1009D40021FE04220921174801F01CFE154800F0ED
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0BBFD0C4800F072FA042000F02E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0CEFD20464D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400BCFD2046BDE8384000F02ABA00140240EC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F0A3FD0446284600F018FACF
-:100AC400B4FA84F0400938BDC82C000838B50024B5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F03BFF04F140076568284600F001
-:100B0400DFF9684601F072FD02238DF80530A37BFE
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F02AFD284600F0E1F9BC42CB
-:100B3400E3D14FF48040314601F018FF03B0F0BD1B
-:100B4400C82C000808B5054B1B781BB90448322192
-:100B540001F062FABDE8084001F0D6BB1A0000209B
-:100B640002300008124B1B7870B505460C461BB9C1
-:100B74001048382101F050FA032906D98E0831466D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F0AABBBDE8704001F0BABBDB
-:100BB4001A00002002300008024B1A780AB90122F8
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F020FA01214FF4805059706D
-:100BE40001F0A0FEBDE8084001F082BB1A0000201D
-:100BF4000230000808B5074B1A781AB90648512183
-:100C040001F00AFA002159704FF48050BDE8084001
-:100C140001F088BE1A0000200230000870B50C46AE
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0E7FF002864
-:100CA400F9D00648214601F0DDFF0448402101F057
-:100CB400DDFF0028F9D010BD1C00002000480040D2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F0A7FF31464A46002081
-:100D340001F0CEF907F1080304F5927443F8040DA9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64008FF904465520FFF791FF6E466C44A64266
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020102D00082400002072
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0CEFD20460A21072201F006
-:100DC40029FC06AE072220460B2101F023FC4FF438
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0C3FB4FF40063204631460093A5
-:100E04008DF8048001F0BAFBADF80C50ADF80E502B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F0B6FE284639466B
-:100E340001F00CFF204600F05BF8054B1F7006B074
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4004AF901A8FFF7CEFF05B05DF804FB000076
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F006FB4C
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0C5F832
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BD302D000808
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0CFFA2046C8
-:100FE40031462A4601F016FB2046FFF781FF03B085
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0CCFB00287BD0BF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BD302D0008C7
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0FCFB684601F076
-:1011640003FB0F4A236A009393424FF48063ADF864
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F085FA2859012101F02D
-:10119400F9FA04B070BD00BF30010020302D000802
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0DAF92046B1B22A4601F051
-:1011D4001CFA2046FFF78CFE02B070BD10B5094C16
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BD302D00081C23104A434370B5D4
-:1012140005460F4CD058D61801F00EFA342305FBBE
-:1012240003440021E06901F095FB337923B9284692
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400302D00082DE9F347504C9A4694F8383065
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0CEFE494B1844CF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F06BFA2AE03046FFF79DFF30461A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0E1FEDBE719688B8823F4DB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A40008300008302D000880841E00017D036889
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F002FF06
-:1014840073788DF8043001A800F0FCFE54F8040CC5
-:1014940001F0D2F8454504F11C0406F1340601D0EC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020582D000830010020DF
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F0A0FD042807D90522009240
-:1014E4000D480E4A40F2351100F08AFD0C4A1344AF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020083000080E30000811
-:10152400302D0008104A08B592F838301BB90F481E
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F06AFD0A4B18441C2390F8880003FB42
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD3001002008300008D4
-:10157400302D000837B50D4614460093069B0193A1
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F047F90DB97A
-:10161400029805E0012D01D1039801E000F006FDD8
-:10162400B4EB500F0ED8B0FBF4F000F080FD0028AE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0EAFC01200138C00080B205B030BDD2
-:101654003A300008B0F1006F10B504460BD20C48C4
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:10169400B230000840300008C02D00082DE9F8439E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F02AFE2C464C451FDCF32000F03AFE95
-:10170400154B002133F8140000F06CFE09280BD0AF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F01FFE0DE02FB1C5F10100204410
-:1017340031464246B8470134DDE700F013FE01208C
-:10174400BDE8F8830020BDE8F88300BF5B300008E3
-:101754006F30000872300008F02D00087630000861
-:10176400C43500082DE9F0470646234814460D46C3
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400DBFDF32000F0EEFD4FEAD41805EB04095D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F04DFE09280DD01248FFF74AFB2B
-:1017C4003046FFF771FB1048FFF760FB00F0CAFDDD
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0BAFD42
-:1017F4000120BDE8F08700BF8E3000086F3000087C
-:1018040072300008A2300008C435000808B545F25B
-:10181400555000F0DDFF042000F0E0FF40F6FF70BB
-:1018240000F0E2FF002000F0D3FF4FF480500121CC
-:10183400BDE8084000F07CBD08B500F0E3FFBDE85A
-:10184400084000F0D7BF08B57D2001F0D7F800307C
-:1018540018BF012008BD4900FEF76EBF4B0803EB1B
-:101864005000FEF769BF000070B586B00546FFF76B
-:10187400A3F901210020FEF75FFF042000F020FB04
-:1018840003A8294600F06EFB03A800F07AFB08B910
-:1018940028480BE02848FFF7F9FA05F10C000499F1
-:1018A400FFF7D1F9059B984204D02448FFF7EEFADC
-:1018B40001203DE0049C2248FFF7E8FA2146214A32
-:1018C40021480023FFF7EAFE049E2048FFF7DEFAD2
-:1018D400002405F1C0411E4B009432460C311A48D5
-:1018E400FFF740FF1B48FFF7B5FA0498FFF7DCFA4F
-:1018F4001948FFF7AFFA04991348FFF78FF9054623
-:101904001648FFF7A7FA0598FFF7CEFA1448FFF731
-:10191400A1FA2846FFF7C8FA1248FFF7B7FA059B61
-:101924009D4204D01048FFF7B1FA022000E020469F
-:1019340006B070BDBB300008D9300008F63000088E
-:10194400193100085B180008004000082C31000819
-:10195400611800083F3100084D3100085631000875
-:1019640069310008C43500086F31000808B5022049
-:1019740000F0BEFAD8B3042000F0BAFA70B11C48E3
-:10198400FFF784FA042000F0A7FA022000F0A4FA7A
-:101994004FF40040BDE8084000F09EBA1548FFF738
-:1019A40075FA082000F098FA102000F095FA20202B
-:1019B40000F092FA402000F08FFA4FF48010FFF705
-:1019C40053FF022807D1082000F07AFA102000F013
-:1019D40077FA00F04DFB042000F07EFA022000F0BC
-:1019E4007BFA4FF40040BDE8084000F069BA08BD36
-:1019F400BA310008F031000810B52548FFF746FA5F
-:101A04004FF40010FFF730FF10B102283AD809E074
-:101A1400202000F061FA402000F05EFA802000F0FF
-:101A24004FFA2FE0082000F04BFA102000F048FA9B
-:101A3400202000F05DFA20B91648FFF727FA20208D
-:101A440007E0402000F054FA58B91348FFF71EFA93
-:101A5400402000F035FA4FF4007000F031FA00F045
-:101A640007FB0E48FFF712FA082000F035FA1020A1
-:101A740000F032FA202000F02FFA402000F02CFA77
-:101A8400002400E00124042000F026FA204610BDC2
-:101A94000B320008253200085E3200089732000835
-:101AA40008B50248FFF7F2F900F0E7FAD13200086E
-:101AB4001EF0040F0CBFEFF30880EFF30980FFF76B
-:101AC400EFBF70471FB504461048FFF7DFF901A9BF
-:101AD4000C22204600F037FB01A8FFF7D7F9204677
-:101AE400FEF742FEFEF7F2FF094B20F004001870E7
-:101AF4001C46FEF7EBFF237800F0FB00834201D085
-:101B040000F0B6FA0A2000F008FBF2E7C73200083A
-:101B1400690100207FB54FF08050012100F01AFFC9
-:101B2400022000F07DFE012807D1022000F082FE91
-:101B3400BC48FFF7ABF900F0A0FA00214FF0805049
-:101B440000F008FFFFF72CF9B748FFF79FF9B748F3
-:101B5400FFF79CF9B648FFF799F9B648FFF796F9ED
-:101B6400B548FFF793F9B548FFF790F9B448FFF784
-:101B74008DF9B448FFF78AF9B348FFF787F9B348FA
-:101B8400FFF784F9FFF758FCFEF708FF00F0BAF9F5
-:101B940000F0D0F900210C2201A801F078F800F03F
-:101BA400C5F901A90C2200F0CEFA01A8FFF76EF9DD
-:101BB4009D48FFF76BF99C48FFF768F94FF48040A4
-:101BC40000F096F990B1A248FFF760F94FF4804015
-:101BD40000F082F9082000F07FF9102000F07CF971
-:101BE400202000F079F9402000F076F9FEF7D0FDCE
-:101BF400FEF77AFFFEF746FDFEF7FEFA08B19548B8
-:101C040003E0FEF73DFB10B19348FFF75BFF00F0E4
-:101C14008CF9802000F06CF918B1802000F05CF998
-:101C240056E04FF4003000F063F9044620B14FF45D
-:101C3400003000F051F94DE00120FEF731FFB0B162
-:101C44002046FEF72DFF90B18448FFF71FF941F2BB
-:101C540088340120FEF724FF98B10020FEF720FF0E
-:101C640078B1012000F059FA013CF2D132E07C4B0A
-:101C74000CCB013301D0013203D17A48FFF706F9C6
-:101C840028E0FFF7E0FD48B3FFF7DDFD10B176482B
-:101C9400FFF7FCF84FF4007000F02AF910B1734814
-:101CA400FFF7F4F84FF4007000F016F9102000F07C
-:101CB4001FF9002800F0F0806D48FFF7E7F80820CE
-:101CC40000F00AF9102000F007F9FFF795FE98B923
-:101CD40068489AE76848FFF7D9F8F6E74FF40070C8
-:101CE40000F006F90028CFD1082000F0F5F8102004
-:101CF40000F0F2F8FFF73AFE4FF4005000F0F8F865
-:101D040004464FF4805000F0F3F8400040EA8400A9
-:101D1400C4B24FF4006000F0EBF82043C0B20728CF
-:101D2400C3B20DD14FF4006000F0D6F84FF48050E8
-:101D340000F0D2F84FF4005000F0CEF84F4864E7BA
-:101D44000133DBB2023B4FF40060052B11D8DFE80E
-:101D540003F00C1003100C1000F0BEF84FF4805088
-:101D640000F0BAF84FF4005003E000F0B5F84FF477
-:101D7400805000F0A5F8FFF749FDFFF75DFD384BF3
-:101D84003F485D681E68FFF765F82846FFF78CF842
-:101D94003C48FFF75FF80022930003F1604303F52A
-:101DA400614301324FF0FF31082AC3F88010C3F8B1
-:101DB4008011F1D1344B4FF4801200241A635C6318
-:101DC4009C631C645C6400F045FD3048012100F014
-:101DD400D9FD21462D4800F0D5FDF120012100F068
-:101DE400DDFD2146F12000F0D9FD0120014600F07F
-:101DF400E1FD2146012000F0DDFD2548012100F030
-:101E0400E5FD2146224800F0E1FD2248012100F0D1
-:101E1400E9FD2048214600F0E5FD63B64FF0FF3EA2
-:101E2400B5462847DC320008C4350008E93200080A
-:101E340000330008193300084733000876330008DC
-:101E4400A6330008D7330008093400083B340008DF
-:101E54006C340008014550FE024550FE99340008D8
-:101E640000400008CB340008DE340008F6340008D3
-:101E740016350008034550FE8A350008044550FE17
-:101E8400A9350008BD350008003802400010E022E2
-:101E9400FFC9FEF6337F7704082000F029F820B14B
-:101EA4000548FEF7F3FF102003E00448FEF7EEFFB9
-:101EB400082000F005F81DE73E35000864350008E9
-:101EC40010B50446002000F0BDFD40EA04010020E6
-:101ED400BDE8104000F0A6BD10B50446002000F097
-:101EE400B1FD20EA04010020BDE8104000F09ABDD5
-:101EF40010B50446002000F0A5FD204214BF0120C7
-:101F0400002010BD08B54FF08050012100F022FDE3
-:101F1400012000F07FFC0120FFF7EAFF20B9012136
-:101F2400BDE8084000F07EBD08BD7047022000F007
-:101F340089BD000008B5FFF7F9FF054B1968884211
-:101F440004D00220BDE8084000F06CBD08BD00BF0D
-:101F54008401000808B50248FEF798FF00F088F8ED
-:101F6400C53500081FB504460C2201A8FEF70CFC79
-:101F740001AB03CB20601868A0602046616004B008
-:101F840010BD0068A0F10C0358425841704700008E
-:101F940080B50646174610480D461C46FEF75AFF04
-:101FA4003846FEF757FF0D48FEF754FF3046FEF75C
-:101FB40051FF0B48FEF74EFF2846FEF775FF2CB184
-:101FC4000848FEF747FF2046FEF744FF0648FEF7A1
-:101FD4005DFFFFF7BFFF00BFE2350008EB350008E7
-:101FE400EE350008EC350008C43500081FB506AA14
-:101FF40052F8044B039200921A462346FFF7C8FF97
-:102004000CB41FB506AA52F8043B03920092014A8D
-:10201400FFF7BEFFF035000807B5002300937246B2
-:10202400014BFFF7E3FF00BFF7350008744608B51E
-:102034000548FEF70FFF2046FEF736FF0348FEF77C
-:1020440025FFFFF787FF00BFFF350008C4350008F0
-:10205400BFF34F8F0449054BCA6802F4E06213438F
-:10206400CB60BFF34F8FFEE700ED00E00400FA05FC
-:1020740008B5FEF781FBFFF7EBFF08B5FFF7E8FFB4
-:10208400F0B50646002401202546034694421DD09F
-:1020940011F804C000F1010EBCF1000F03D1735517
-:1020A400774605460DE00133DBB2FF2B774606F891
-:1020B40000C007D102F1FF3C644506D07355871C6C
-:1020C4007546012301343846E0E770467355F0BD88
-:1020D40030B5C9B1C0430A44914213D011F8013B51
-:1020E4000A4D83EA000404F00F0455F8244084EAFE
-:1020F400101080EA131303F00F0355F8233083EA1A
-:102104001010E9E7C04330BD084630BD082E000872
-:10211400162358430138FDD1704710B504462CB13D
-:102124004FF47A70FFF7F4FF013CF8E710BD10B5E7
-:10213400B0FA80F400F027F801280CBFC4F11F00A6
-:10214400C4F1200010BD0A2A10B51BDD0C46302353
-:1021540004F8023B78234B701C220F239340034066
-:10216400D340092B01D8303302E00F2B02D8573368
-:10217400DBB200E02023043A04F8013B131DECD148
-:1021840000238B7210BD00F0AA33A0EB530000F0C3
-:10219400CC3300F0333000EB930000EB101000F070
-:1021A4000F3000EB102000EB104000F03F007047B0
-:1021B4002D4AD2F8883043F47003C2F888302B4B90
-:1021C4001A68002142F001021A6099601A6822F02C
-:1021D400847222F480321A60254A5A601A6822F402
-:1021E40080221A60D9601A6C224942F080521A6423
-:1021F4000A6842F440420A609A689A609A689A604F
-:102204009A6842F480529A601B4A5A601A6842F0F3
-:1022140080721A601968154A8901FBD5174B40F280
-:1022240003611960936823F003039360936843F098
-:10223400020393600D4B9A6802F00C02082AF9D14C
-:102244009A6822F400029A600D4AC3F884201A683E
-:1022540042F080621A60054B1B681B01FBD5024BE0
-:102264004FF000629A60704700ED00E000380240D1
-:1022740010300024007000401040010F003C024068
-:1022840000300050C278037810B512B3164AD168F2
-:102294004278C943C1F30221C1F10404E4B2A2406B
-:1022A400D4B20F220A4181780A40224303F16043E9
-:1022B40003F561431201D2B283F8002303780122AB
-:1022C400590903F01F0302FA03F3084A42F82130C4
-:1022D40010BD5A09012103F01F03994002F12003A4
-:1022E400024A42F8231010BD00ED00E000E100E0D6
-:1022F400014B01229A60704700300240014B186084
-:10230400186870470030024000EB81018842044B9A
-:1023140003D050F8042B1A60F8E71868704700BF20
-:1023240000300240014B1868704700BF0030024083
-:10233400044B9A6809B1104301E022EA0000986056
-:10234400704700BF002004E0044B1A69002ABFBF95
-:10235400034A5A6002F188325A607047003C0240D6
-:1023640023016745024A136943F000431361704730
-:10237400003C0240014BD860704700BF003C024063
-:102384000E4BDA68D20310D4DA68D1060FD4DA68B7
-:10239400D2050ED4DA6812F0EF0F0CD1DB6813F01B
-:1023A400020F14BF0820092070470120704706203F
-:1023B4007047022070470720704700BF003C02406E
-:1023C40007B509238DF80730FFF7DAFF8DF807000A
-:1023D4009DF80730012BF7D09DF8070003B05DF896
-:1023E40004FB000070B5064641B1012908D002295A
-:1023F4000CBF4FF400754FF4407503E00D4601E047
-:102404004FF48075FFF7DCFF09281ED10F4C2369B8
-:1024140023F440732361216929432161236923F053
-:10242400F8032361236943F002031E4326612369F1
-:1024340043F480332361FFF7C3FF236923F00203CE
-:102444002361236923F0F803236170BD003C02403B
-:1024540070B505460E46FFF7B3FF092811D1094CA4
-:10246400236923F44073236123692361236943F0BF
-:10247400010323612E70FFF7A3FF236923F00103F7
-:10248400236170BD003C024070B543688668856A6C
-:102494000468416B46EA0302C3681A4303691A439A
-:1024A40043691A4383691A43C3691A43036A1A4383
-:1024B400436A1343C26A2B431A43036B1343A200B8
-:1024C40002F120420B43082E136002BF136843F04D
-:1024D40040031360B1F5801F816B12D18CB14FF0B2
-:1024E40020435C681E6846F480161E601E6846F42D
-:1024F40080761E600E6924F47004013E44EA06549A
-:102504005C608C690B6823434C6843EA04138C6851
-:1025140043EA0423CC6843EA04430C69496943EA67
-:10252400045343EA0163B5F5804F536010D1C16B86
-:1025340088690B680343486843EA0013886843EAE0
-:1025440000230869496943EA005343EA016301E04F
-:102554006FF07043C2F8043170BD0000800000F1D8
-:10256400204019B1036843F0010302E00268024B02
-:1025740013400360704700BFFEFF0F00F0B50E6804
-:1025840000220123934003EA060E9E452AD15500FA
-:1025940003230468AB40DB431C4004600C790768E8
-:1025A40004FA05FC013C4CEA0707012C076011D82A
-:1025B40084684F791C4084608468AF4027438760F7
-:1025C400446824EA0E0444608C7947689440A4B2B9
-:1025D4003C434460C4682340C360CB79C468AB40C7
-:1025E4002343C3600132102ACBD1F0BD4FF6FF73F1
-:1025F40003600023037143718371C37170470369DE
-:10260400194214BF0120002070470AB101837047AA
-:102614004183704701F00703C90800EB810010B53E
-:102624009B00046A0F21994024EA01010162016AB6
-:102634009A401143016210BD08B5134B984207D16B
-:102644004FF40010012100F0C1F94FF4001014E020
-:102654000E4B984207D14FF48000012100F0B6F9E7
-:102664004FF4800009E00A4B98420BD14FF400006C
-:10267400012100F0ABF94FF400000021BDE808404F
-:1026840000F0A4B908BD00BF005400400058004049
-:10269400005C00407FB5868826F03F060446360479
-:1026A40068460D46360C00F0F9F8029A2C48B2FB45
-:1026B400F0F081B20E43A68023882A4E23F0010352
-:1026C4001B041B0C23802B68B3420AD85B00013126
-:1026D400B2FBF3F39BB2032B89B298BF042321848A
-:1026E40023E0EE884BF6FF718E421BBF19214B434A
-:1026F40003EB4303B2FBF3F315BF9BB2B2FBF3F35B
-:1027040043F480439BB2C3F30B020AB943F00103C1
-:102714004FF4967101FB00F24FF47A7192FBF1F2DF
-:10272400013292B243F400432284A383238869894B
-:10273400AA889BB243F001032380238823F4816396
-:1027440023F002031B040A431B0C13439BB2238094
-:102754002A89AB8913439BB2238104B070BD00BFA7
-:1027640040420F00A086010041F288330360002339
-:1027740083804BF6FF72038143814FF48043C28010
-:1027840083817047038819B19BB243F0010303E0CE
-:1027940023F001031B041B0C03807047038819B149
-:1027A4009BB243F4806303E023F480631B041B0C9B
-:1027B40003807047838A9AB2038B10B542EA0343BD
-:1027C40021F07F4404EA0300431A5842584110BDE3
-:1027D400014B1860704700BF00300040014B586047
-:1027E400704700BF00300040014B9860704700BF45
-:1027F40000300040024B4AF6AA221A60704700BF1C
-:1028040000300040024B4CF6CC421A60704700BFC7
-:1028140000300040014B1860704700BF20000E429A
-:10282400034B5B68184214BF01200020704700BFAF
-:1028340000700040064BB0F5402F15BF1A685A6867
-:1028440042EA800042F4402214BF18605A60704784
-:10285400007000400E4B1A68002142F001021A6019
-:1028640099601A6822F0A85222F410221A60094AC8
-:102874005A60094AC3F8842002F18062C3F88820B0
-:102884001A6822F480221A60D960C3F88C10704749
-:102894000038024010300024003000201D4A9368A4
-:1028A40003F00C03042B10B503D0082B03D01A4BF0
-:1028B40018E01A4B16E05168536811F4800F03F0C6
-:1028C4003F03516814BF154A134AB2FBF3F3114A8C
-:1028D4005268C2F30142C1F3881101324B435200E2
-:1028E400B3FBF2F30B4A036093680D49C3F303137C
-:1028F400CC5C0368E34043609468C4F382240C5DB9
-:1029040023FA04F484609268C2F342328A5CD340AE
-:10291400C36010BD003802400024F40040787D01FB
-:1029240001000020044B1A6B09B1104301E022EAB4
-:1029340000001863704700BF00380240044B9A6BD4
-:1029440009B1104301E022EA00009863704700BF18
-:1029540000380240044B1A6C09B1104301E022EA2A
-:1029640000001864704700BF00380240044B5A6CE2
-:1029740009B1104301E022EA00005864704700BF27
-:1029840000380240044B1A6909B1104301E022EAFD
-:1029940000001861704700BF00380240044B5A69B8
-:1029A40009B1104301E022EA00005861704700BFFA
-:1029B40000380240044B9A6909B1104301E022EA4D
-:1029C40000009861704700BF00380240044B1A6A47
-:1029D40009B1104301E022EA00001862704700BF09
-:1029E40000380240044B5A6A09B1104301E022EA5C
-:1029F40000005862704700BF003802404209012AB3
-:102A0400074B01D11B6803E0022A0CBF1B6F5B6FED
-:102A140000F01F0023FA00F000F00100704700BF2F
-:102A24000038024082B000230193054B0193019BBF
-:102A340003EB80000190019B196002B0704700BF56
-:102A44005028004082B000230193054B0193019B61
-:102A540003EB80000190019B186802B0704700BF2F
-:102A64005028004008B5254B984207D14FF48050B8
-:102A74000121FFF7B7FF4FF4805039E0204B984213
-:102A840007D14FF480400121FFF7A0FF4FF48040AD
-:102A940009E01C4B98420BD14FF400400121FFF791
-:102AA40095FF4FF400400021BDE80840FFF78EBFBA
-:102AB400154B984207D14FF400500121FFF792FFC4
-:102AC4004FF4005014E0114B984207D14FF480109A
-:102AD4000121FFF787FF4FF4801009E00C4B984267
-:102AE4000BD14FF400100121FFF77CFF4FF40010CD
-:102AF4000021BDE80840FFF775BF08BD0030014064
-:102B040000380040003C00400034014000500140C7
-:102B14000054014003884A8810B503F441540B88DB
-:102B240013438A881343CA8813430A8913434A897F
-:102B340013438A891343CA89134323439BB20380F3
-:102B4400838B23F400631B041B0C83830B8A038293
-:102B540010BD0023038043808380C38003814381AD
-:102B64008381C381072303827047038819B19BB211
-:102B740043F0400303E023F040031B041B0C0380D9
-:102B84007047808980B270478181704703891942F8
-:102B940014BF0120002070477FB5038ACA889BB206
-:102BA40023F440531343038283890E469BB223F4D8
-:102BB400B053098923F00C02B3880B4371890B438A
-:102BC4009BB213438381838AB2899BB223F44073FB
-:102BD4001343838204466846FFF760FE1A4B9C4207
-:102BE40003D003F580639C4201D1039D00E0029D64
-:102BF400A38931681BB2002B4FF0190202FB05F2C6
-:102C0400B4BF4D008D00B2FBF5F5A2896426B5FB77
-:102C1400F6F00001010912B2002A06FB1153ADBF00
-:102C24001A01D90032313232B5BFB1FBF6F2B2FB30
-:102C3400F6F302F0070203F00F03B4BF1043184386
-:102C440080B2208104B070BD00100140838919B1A5
-:102C54009BB243F4005303E023F400531B041B0C06
-:102C640083817047C1F3080181807047038819424A
-:102C740014BF01200020704710B5431E0A4491423E
-:102C840004D011F8014B03F8014FF8E710BD0244DA
-:102C94000346934202D003F8011BFAE77047000091
-:102CA4000400000001030000010000000100000016
-:102CB40003000000010000000F0000000F000000EE
-:102CC40000000000EE2F0008001802401000000071
-:102CD40006040000F32F000800180240080000005A
-:102CE40006030000F62F000800180240020000004E
-:102CF40006010000FD2F0008001802400400000037
-:102D040006020000000000000000000001424F4FD6
-:102D1400544C4F414445520000000000002A2A0050
-:102D2400000000000000000000000000005400400B
-:102D340000040240400000000600040000040240B9
-:102D4400000200000900040000002000801A0600B0
-:102D5400004000001F2000000000000000000000F0
-:102D6400005800400014024002000000010004006A
-:102D740000140240010000000000040000004000B4
-:102D8400801A0600FFBF000021220000000000009E
-:102D940001160008010003008200070084000700F8
-:102DA400010003000200030040000300800007004C
-:102DB400840007000001010000000000000000087A
-:102DC400004000080080000800C00008000001085E
-:102DD40000000208000004080000060800000808BB
-:102DE40000000A0800000C0800000E08000008009B
-:102DF400100018002000280030003800400048006F
-:102E040050005800000000006410B71DC8206E3B3D
-:102E1400AC30D9269041DC76F4516B6B5861B24DDD
-:102E24003C7105502083B8ED44930FF0E8A3D6D647
-:102E34008CB361CBB0C2649BD4D2D38678E20AA0AF
-:102E44001CF2BDBD537475636B20627574746F6E30
-:102E540020726567697374657220697320696E7680
-:102E6400616C69642C20636C656172696E672E0005
-:102E7400427574746F6E206973207075736865642D
-:102E840020617420626F6F740069636534306C7004
-:102E94002E630043444F4E45206E6F74206C6F7751
-:102EA40020647572696E672072657365740043529D
-:102EB40045534554206E6F742068696768206475B3
-:102EC40072696E6720726573657400446973706C0F
-:102ED400617920627573792D776169742074696DE5
-:102EE400656F757420657870697265642100436F3D
-:102EF4006E6669677572696E672046504741206641
-:102F0400726F6D2062697473747265616D20696E8D
-:102F140020666C6173682E2E2E004E6F204650473B
-:102F2400412062697473747265616D20696E2066F4
-:102F34006C6173682E0046616C6C696E6720626117
-:102F4400636B20746F204E56434D2E00465047410C
-:102F54002043444F4E452074696D656F7574206538
-:102F640078706972656421004650474120636F6E32
-:102F740066696775726174696F6E206661696C65F4
-:102F8400642E204973207468697320612062696724
-:102F9400626F6172643F00465047412076657273E8
-:102FA400696F6E3A2000446973706C617920696EB0
-:102FB400697469616C697A656420616674657220FC
-:102FC4000020726574726965732E00446973706CB5
-:102FD400617920696E697469616C697A6174696F79
-:102FE4006E206661696C65642E004261636B0055F6
-:102FF400700053656C65637400446F776E00637290
-:10300400632E63006932632E630049324320646592
-:1030140076696365204944206F7574206F66206269
-:103024006F756E647320256420286D61783A2025BD
-:103034006429006F6E007370692E63002069732029
-:103044006F7574736964652073797374656D206634
-:103054006C6173680D0A0073797374656D5F666CD7
-:103064006173685F657261736528002C2000290D07
-:103074000A006661696C656420746F20657261730F
-:103084006520736563746F72200073797374656D62
-:103094005F666C6173685F77726974652800666146
-:1030A400696C656420746F2077726974652061644B
-:1030B40064726573732000496E76616C696420667E
-:1030C40069726D7761726520646573637269707487
-:1030D400696F6E2100436865636B73756D6D696E0E
-:1030E40067206669726D77617265207570646174BA
-:1030F4006500496E76616C6964206669726D7761FA
-:1031040072652043524320696E2053504920666CF7
-:10311400617368210065726173655F6F6C645F66DB
-:1031240069726D776172650077726974655F6E6547
-:10313400775F6669726D7761726500436865636B7A
-:1031440073756D6D696E6720002062797465730D07
-:103154000A00436865636B73756D202D2077616E7B
-:10316400746564200020676F7420004F75722069B5
-:103174006E7465726E616C20666C61736820636F37
-:103184006E74656E747320617265206261642028B8
-:10319400636865636B73756D206661696C6564292A
-:1031A400212054686973206973207265616C6C799D
-:1031B4002062616421004F75722070726576696FB8
-:1031C4007573206669726D776172652075706461CC
-:1031D4007465206661696C65642C2061626F727429
-:1031E400696E67207570646174652E004E65772082
-:1031F4006669726D776172652069732061766169B1
-:103204006C61626C6521004C6F6164696E67207249
-:1032140065636F76657279206669726D7761726530
-:10322400004661696C656420746F206C6F61642072
-:103234007265636F76657279206669726D77617203
-:10324400652C20737472696B65206F6E652E205433
-:10325400727920616761696E2E004661696C6564EC
-:1032640020746F206C6F6164207265636F76657281
-:1032740079206669726D776172652C207374726946
-:103284006B652074776F2E205472792061676169B1
-:103294006E2E004661696C656420746F206C6F61EA
-:1032A40064207265636F76657279206669726D77E2
-:1032B4006172652C20737472696B65207468726521
-:1032C400652E2053414420574154434800484152FD
-:1032D40044204641554C54006578697420737461E8
-:1032E4006E64627900205F5F5F5F202020202020D1
-:1032F4002020202020202020205F5F002F5C202021
-:103304005F605C20202020202020202020202F27E8
-:103314005F5F605C005C205C2C5C4C5C5F5C20202C
-:1033240020205F5F5F202F5C205C2F5C205C2020CE
-:103334005F5F20205F5F20205F5F20205F5F202091
-:103344005F5F00205C2F5F5C5F5F205C20202F2785
-:10335400205F20605C205C205C205C205C2F5C2073
-:103364005C2F5C205C2F5C205C2F5C205C2F5C203D
-:103374005C002020202F5C205C4C5C205C2F5C20B7
-:103384005C2F5C205C205C205C5F5C205C205C200B
-:103394005C5F2F205C5F2F205C205C205C5F5C20E6
-:1033A4005C002020205C20605C5F5F5F5F5C205CD1
-:1033B4005F5C205C5F5C205C5F5F5F5F2F5C205C18
-:1033C4005F5F5F785F5F5F2F275C2F605F5F5F5F8A
-:1033D400205C00202020205C2F5F5F5F5F5F2F5CFC
-:1033E4002F5F2F5C2F5F2F5C2F5F5F5F2F20205C90
-:1033F4002F5F5F2F2F5F5F2F202020602F5F5F5F85
-:103404002F3E205C0020202020202020202020206F
-:1034140020202020202020202020202020202020A8
-:103424002020202020202020202020202020202098
-:103434002F5C5F5F5F2F0020202020202020202091
-:103444002020202020202020202020202020202078
-:103454002020202020202020202020202020202068
-:1034640020205C2F5F5F2F004C61737420666972AB
-:103474006D7761726520626F6F742077617320735A
-:103484007461626C653B20636C6561722073747255
-:10349400696B657300486F6C6420646F776E2055A8
-:1034A40050202B204241434B20666F7220352073FD
-:1034B4006563732E20746F20666F7263652D626F6F
-:1034C4006F7420505246004669726D7761726520B0
-:1034D400697320657261736564005761746368641D
-:1034E4006F6720636175736564206120726573651D
-:1034F4007400536F667477617265206661696C75D8
-:1035040072652063617573656420612072657365FB
-:1035140074004661696C656420746F207374617211
-:1035240074206669726D776172652C207374726998
-:103534006B652074687265652E004661696C65640C
-:1035440020746F207374617274206669726D776180
-:1035540072652C20737472696B652074776F2E000A
-:103564004661696C656420746F20737461727420A1
-:103574006669726D776172652C20737472696B650C
-:10358400206F6E652E00466F7263652D626F6F74D7
-:10359400696E67207265636F76657279206D6F64FA
-:1035A400652E2E2E00426F6F74696E6720666972F5
-:1035B4006D77617265204020002E2E2E0D0A0D0AB3
-:1035C40000536F667477617265206661696C757209
-:1035D400653B20726573657474696E67210041539D
-:1035E400534552543A20002020003A004153534599
-:1035F4005254004153534552544E002A2A2A20570C
-:103604005446200053544D33320053544D3332202A
-:103614007065726970686572616C206C6962726150
-:103624007279207472697070656420616E206173B0
-:10363400736572740043524F414B204F4F4D00004D
-:10364400FF0000000001020304010203040607084E
-:043654000900000069
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/boot_snowy_dvt@1478015115.hex b/bin/boot/boot_snowy_dvt@1478015115.hex
deleted file mode 100644
index 73c59b6611..0000000000
--- a/bin/boot/boot_snowy_dvt@1478015115.hex
+++ /dev/null
@@ -1,874 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008B51A0008A8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0EBFF01F09BFC704707
-:1001E4004436000800000020140000201400002001
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040021FC002401902546E0B200F049FC01AA3B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F08DFF02A800F0FA
-:100234002DFE0120002102F0F5FB00201AE001331D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F071FF02A800F011FE0120214602F006
-:10027400D9FB28460BB030BD482E0008742E000868
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0B1F9003018BF8B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F0AAF991
-:1002C40020460E21052208AE02F0A4F9052220469C
-:1002D4000C2102F09FF94FF4005346F81C3D002511
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F03FF94FF417
-:10030400804320463146019302F038F94FF480537C
-:100314002046314601934FF4007802F02FF920462D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340025F94FF480632046314601938DF8085027
-:100344008DF80B5002F01AF94FF4807320463146B1
-:1003540001938DF808708DF80B5002F00FF94FF4EB
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F004F939464FF4001002F0F7FAA4F53C
-:100384004444164B164E1E60204602F06BFB03A835
-:1003940002F0DFFB4FF4827339463046ADF80E307D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F0A6FB2046394602F0CDFBE8
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F097FE012000F07B
-:1003F40045FB022001F091FE0120BDE8084000F019
-:100404002BBB000010B504460548022102F0BEFBD8
-:100414000028F9D021460248BDE8104002F0B4BBE0
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0EAF8012001F06FFE25484FF4C4
-:100444000041002202F0E1F84FF4807100222148BB
-:1004540002F0DBF8012001F060FE4FF400411D487A
-:10046400012202F0D2F8012001F057FE19484FF49E
-:10047400007102F0C4F818B11748184A6A210AE05A
-:1004840014484FF4004102F0BAF808B1254404E0DE
-:100494001148134A6B2101F0B3FDAC4204D014F8A7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F0ABF808240020FFF7A4FF013CFAD1B6
-:1004C4004FF40071034802F09AF8003018BF01207D
-:1004D40038BD00BF001802408D2E0008972E00087A
-:1004E400B22E000810B504460B4802F04AFB0A4835
-:1004F400022102F04BFB0028F9D00748214602F004
-:1005040043FB0548012102F041FB0028F9D00248D1
-:1005140002F037FBC0B210BD0054014010B54FF4D7
-:10052400807104460022054802F06FF8642001F04F
-:10053400EFFD2046BDE81040FFF764BF00180240FD
-:1005440008B50748802102F021FB0028F9D10548AD
-:100554004FF480710122BDE8084002F056B800BF94
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0C4FDF1E7012010BD00BFDF
-:10059400CF2E000810B5224C638822884FF6FF71D5
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F019F84FF4004100221548FD
-:1005E40002F013F8012001F098FD12484FF4004185
-:1005F400012202F00AF840F2E9340E484FF4007187
-:1006040001F0FDFF0028D9D1013C04D10A4800F0D3
-:100614003DFC204610BD642001F07AFDEDE700BFEB
-:1006240000000F60F22E000804000F601E2F000867
-:100634003A2F000800180240502F000810B5044655
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0B2FF642001F032FD0020FFF782
-:1006B40019FF4FF48071012204461A4801F0A5FF86
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF6C2F00087D
-:100724009B2F000800180240C4350008AA2F0008B7
-:10073400C52F0008CF2F000808B55D235843094B87
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F074BAD5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0E1FE3A4804210122A5
-:1007C40001F023FF00240223029435488DF80830F9
-:1007D400072103230C228DF80930019401F01AFF3C
-:1007E40080232F480193294601F0C8FE022C04D02F
-:1007F4002C48A1B20C2201F00DFF0134102CF5D1CC
-:100804004FF6FB7327480193294601F0B7FE0226F1
-:100814003146013624480C22B6B201F0FBFE102EFC
-:10082400F6D14FF6FC7329461F48019301F0A6FE4A
-:10083400042100221B481E4D01F0E7FE0A2001F0AE
-:1008440067FC01220421174801F0DFFE1E2001F09D
-:100854005FFC0120014602F071F80FCD03AC0FC418
-:1008640095E8070084E80700402200210AA802F066
-:100874000EFA02230B9308230C934FF48053129324
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400FBFD0020012101F061FE1AB070BD00BF14
-:1008A40000040240000C024000100240A42C000886
-:1008B400AC2C00080D4B98221A80A3F68A231B88BF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F086FBE7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0D9FB11E05AB2012A0CDCEF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0DAFD1A480621042201F0EF
-:1009D40021FE04220921174801F01CFE154800F0ED
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0BBFD0C4800F072FA042000F02E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0CEFD20464D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400BCFD2046BDE8384000F02ABA00140240EC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F0A3FD0446284600F018FACF
-:100AC400B4FA84F0400938BDC82C000838B50024B5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F03BFF04F140076568284600F001
-:100B0400DFF9684601F072FD02238DF80530A37BFE
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F02AFD284600F0E1F9BC42CB
-:100B3400E3D14FF48040314601F018FF03B0F0BD1B
-:100B4400C82C000808B5054B1B781BB90448322192
-:100B540001F062FABDE8084001F0D6BB1A0000209B
-:100B640002300008124B1B7870B505460C461BB9C1
-:100B74001048382101F050FA032906D98E0831466D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F0AABBBDE8704001F0BABBDB
-:100BB4001A00002002300008024B1A780AB90122F8
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F020FA01214FF4805059706D
-:100BE40001F0A0FEBDE8084001F082BB1A0000201D
-:100BF4000230000808B5074B1A781AB90648512183
-:100C040001F00AFA002159704FF48050BDE8084001
-:100C140001F088BE1A0000200230000870B50C46AE
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0E7FF002864
-:100CA400F9D00648214601F0DDFF0448402101F057
-:100CB400DDFF0028F9D010BD1C00002000480040D2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F0A7FF31464A46002081
-:100D340001F0CEF907F1080304F5927443F8040DA9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64008FF904465520FFF791FF6E466C44A64266
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020102D00082400002072
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0CEFD20460A21072201F006
-:100DC40029FC06AE072220460B2101F023FC4FF438
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0C3FB4FF40063204631460093A5
-:100E04008DF8048001F0BAFBADF80C50ADF80E502B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F0B6FE284639466B
-:100E340001F00CFF204600F05BF8054B1F7006B074
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4004AF901A8FFF7CEFF05B05DF804FB000076
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F006FB4C
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0C5F832
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BD302D000808
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0CFFA2046C8
-:100FE40031462A4601F016FB2046FFF781FF03B085
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0CCFB00287BD0BF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BD302D0008C7
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0FCFB684601F076
-:1011640003FB0F4A236A009393424FF48063ADF864
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F085FA2859012101F02D
-:10119400F9FA04B070BD00BF30010020302D000802
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0DAF92046B1B22A4601F051
-:1011D4001CFA2046FFF78CFE02B070BD10B5094C16
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BD302D00081C23104A434370B5D4
-:1012140005460F4CD058D61801F00EFA342305FBBE
-:1012240003440021E06901F095FB337923B9284692
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400302D00082DE9F347504C9A4694F8383065
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0CEFE494B1844CF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F06BFA2AE03046FFF79DFF30461A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0E1FEDBE719688B8823F4DB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A40008300008302D000880841E00017D036889
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F002FF06
-:1014840073788DF8043001A800F0FCFE54F8040CC5
-:1014940001F0D2F8454504F11C0406F1340601D0EC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020582D000830010020DF
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F0A0FD042807D90522009240
-:1014E4000D480E4A40F2351100F08AFD0C4A1344AF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020083000080E30000811
-:10152400302D0008104A08B592F838301BB90F481E
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F06AFD0A4B18441C2390F8880003FB42
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD3001002008300008D4
-:10157400302D000837B50D4614460093069B0193A1
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F047F90DB97A
-:10161400029805E0012D01D1039801E000F006FDD8
-:10162400B4EB500F0ED8B0FBF4F000F080FD0028AE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0EAFC01200138C00080B205B030BDD2
-:101654003A300008B0F1006F10B504460BD20C48C4
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:10169400B230000840300008C02D00082DE9F8439E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F02AFE2C464C451FDCF32000F03AFE95
-:10170400154B002133F8140000F06CFE09280BD0AF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F01FFE0DE02FB1C5F10100204410
-:1017340031464246B8470134DDE700F013FE01208C
-:10174400BDE8F8830020BDE8F88300BF5B300008E3
-:101754006F30000872300008F02D00087630000861
-:10176400C43500082DE9F0470646234814460D46C3
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400DBFDF32000F0EEFD4FEAD41805EB04095D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F04DFE09280DD01248FFF74AFB2B
-:1017C4003046FFF771FB1048FFF760FB00F0CAFDDD
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0BAFD42
-:1017F4000120BDE8F08700BF8E3000086F3000087C
-:1018040072300008A2300008C435000808B545F25B
-:10181400555000F0DDFF042000F0E0FF40F6FF70BB
-:1018240000F0E2FF002000F0D3FF4FF480500121CC
-:10183400BDE8084000F07CBD08B500F0E3FFBDE85A
-:10184400084000F0D7BF08B57D2001F0D7F800307C
-:1018540018BF012008BD4900FEF76EBF4B0803EB1B
-:101864005000FEF769BF000070B586B00546FFF76B
-:10187400A3F901210020FEF75FFF042000F020FB04
-:1018840003A8294600F06EFB03A800F07AFB08B910
-:1018940028480BE02848FFF7F9FA05F10C000499F1
-:1018A400FFF7D1F9059B984204D02448FFF7EEFADC
-:1018B40001203DE0049C2248FFF7E8FA2146214A32
-:1018C40021480023FFF7EAFE049E2048FFF7DEFAD2
-:1018D400002405F1C0411E4B009432460C311A48D5
-:1018E400FFF740FF1B48FFF7B5FA0498FFF7DCFA4F
-:1018F4001948FFF7AFFA04991348FFF78FF9054623
-:101904001648FFF7A7FA0598FFF7CEFA1448FFF731
-:10191400A1FA2846FFF7C8FA1248FFF7B7FA059B61
-:101924009D4204D01048FFF7B1FA022000E020469F
-:1019340006B070BDBB300008D9300008F63000088E
-:10194400193100085B180008004000082C31000819
-:10195400611800083F3100084D3100085631000875
-:1019640069310008C43500086F31000808B5022049
-:1019740000F0BEFAD8B3042000F0BAFA70B11C48E3
-:10198400FFF784FA042000F0A7FA022000F0A4FA7A
-:101994004FF40040BDE8084000F09EBA1548FFF738
-:1019A40075FA082000F098FA102000F095FA20202B
-:1019B40000F092FA402000F08FFA4FF48010FFF705
-:1019C40053FF022807D1082000F07AFA102000F013
-:1019D40077FA00F04DFB042000F07EFA022000F0BC
-:1019E4007BFA4FF40040BDE8084000F069BA08BD36
-:1019F400BA310008F031000810B52548FFF746FA5F
-:101A04004FF40010FFF730FF10B102283AD809E074
-:101A1400202000F061FA402000F05EFA802000F0FF
-:101A24004FFA2FE0082000F04BFA102000F048FA9B
-:101A3400202000F05DFA20B91648FFF727FA20208D
-:101A440007E0402000F054FA58B91348FFF71EFA93
-:101A5400402000F035FA4FF4007000F031FA00F045
-:101A640007FB0E48FFF712FA082000F035FA1020A1
-:101A740000F032FA202000F02FFA402000F02CFA77
-:101A8400002400E00124042000F026FA204610BDC2
-:101A94000B320008253200085E3200089732000835
-:101AA40008B50248FFF7F2F900F0E7FAD13200086E
-:101AB4001EF0040F0CBFEFF30880EFF30980FFF76B
-:101AC400EFBF70471FB504461048FFF7DFF901A9BF
-:101AD4000C22204600F037FB01A8FFF7D7F9204677
-:101AE400FEF742FEFEF7F2FF094B20F004001870E7
-:101AF4001C46FEF7EBFF237800F0FB00834201D085
-:101B040000F0B6FA0A2000F008FBF2E7C73200083A
-:101B1400690100207FB54FF08050012100F01AFFC9
-:101B2400022000F07DFE012807D1022000F082FE91
-:101B3400BC48FFF7ABF900F0A0FA00214FF0805049
-:101B440000F008FFFFF72CF9B748FFF79FF9B748F3
-:101B5400FFF79CF9B648FFF799F9B648FFF796F9ED
-:101B6400B548FFF793F9B548FFF790F9B448FFF784
-:101B74008DF9B448FFF78AF9B348FFF787F9B348FA
-:101B8400FFF784F9FFF758FCFEF708FF00F0BAF9F5
-:101B940000F0D0F900210C2201A801F078F800F03F
-:101BA400C5F901A90C2200F0CEFA01A8FFF76EF9DD
-:101BB4009D48FFF76BF99C48FFF768F94FF48040A4
-:101BC40000F096F990B1A248FFF760F94FF4804015
-:101BD40000F082F9082000F07FF9102000F07CF971
-:101BE400202000F079F9402000F076F9FEF7D0FDCE
-:101BF400FEF77AFFFEF746FDFEF7FEFA08B19548B8
-:101C040003E0FEF73DFB10B19348FFF75BFF00F0E4
-:101C14008CF9802000F06CF918B1802000F05CF998
-:101C240056E04FF4003000F063F9044620B14FF45D
-:101C3400003000F051F94DE00120FEF731FFB0B162
-:101C44002046FEF72DFF90B18448FFF71FF941F2BB
-:101C540088340120FEF724FF98B10020FEF720FF0E
-:101C640078B1012000F059FA013CF2D132E07C4B0A
-:101C74000CCB013301D0013203D17A48FFF706F9C6
-:101C840028E0FFF7E0FD48B3FFF7DDFD10B176482B
-:101C9400FFF7FCF84FF4007000F02AF910B1734814
-:101CA400FFF7F4F84FF4007000F016F9102000F07C
-:101CB4001FF9002800F0F0806D48FFF7E7F80820CE
-:101CC40000F00AF9102000F007F9FFF795FE98B923
-:101CD40068489AE76848FFF7D9F8F6E74FF40070C8
-:101CE40000F006F90028CFD1082000F0F5F8102004
-:101CF40000F0F2F8FFF73AFE4FF4005000F0F8F865
-:101D040004464FF4805000F0F3F8400040EA8400A9
-:101D1400C4B24FF4006000F0EBF82043C0B20728CF
-:101D2400C3B20DD14FF4006000F0D6F84FF48050E8
-:101D340000F0D2F84FF4005000F0CEF84F4864E7BA
-:101D44000133DBB2023B4FF40060052B11D8DFE80E
-:101D540003F00C1003100C1000F0BEF84FF4805088
-:101D640000F0BAF84FF4005003E000F0B5F84FF477
-:101D7400805000F0A5F8FFF749FDFFF75DFD384BF3
-:101D84003F485D681E68FFF765F82846FFF78CF842
-:101D94003C48FFF75FF80022930003F1604303F52A
-:101DA400614301324FF0FF31082AC3F88010C3F8B1
-:101DB4008011F1D1344B4FF4801200241A635C6318
-:101DC4009C631C645C6400F045FD3048012100F014
-:101DD400D9FD21462D4800F0D5FDF120012100F068
-:101DE400DDFD2146F12000F0D9FD0120014600F07F
-:101DF400E1FD2146012000F0DDFD2548012100F030
-:101E0400E5FD2146224800F0E1FD2248012100F0D1
-:101E1400E9FD2048214600F0E5FD63B64FF0FF3EA2
-:101E2400B5462847DC320008C4350008E93200080A
-:101E340000330008193300084733000876330008DC
-:101E4400A6330008D7330008093400083B340008DF
-:101E54006C340008014550FE024550FE99340008D8
-:101E640000400008CB340008DE340008F6340008D3
-:101E740016350008034550FE8A350008044550FE17
-:101E8400A9350008BD350008003802400010E022E2
-:101E9400FFC9FEF6337F7704082000F029F820B14B
-:101EA4000548FEF7F3FF102003E00448FEF7EEFFB9
-:101EB400082000F005F81DE73E35000864350008E9
-:101EC40010B50446002000F0BDFD40EA04010020E6
-:101ED400BDE8104000F0A6BD10B50446002000F097
-:101EE400B1FD20EA04010020BDE8104000F09ABDD5
-:101EF40010B50446002000F0A5FD204214BF0120C7
-:101F0400002010BD08B54FF08050012100F022FDE3
-:101F1400012000F07FFC0120FFF7EAFF20B9012136
-:101F2400BDE8084000F07EBD08BD7047022000F007
-:101F340089BD000008B5FFF7F9FF054B1968884211
-:101F440004D00220BDE8084000F06CBD08BD00BF0D
-:101F54008401000808B50248FEF798FF00F088F8ED
-:101F6400C53500081FB504460C2201A8FEF70CFC79
-:101F740001AB03CB20601868A0602046616004B008
-:101F840010BD0068A0F10C0358425841704700008E
-:101F940080B50646174610480D461C46FEF75AFF04
-:101FA4003846FEF757FF0D48FEF754FF3046FEF75C
-:101FB40051FF0B48FEF74EFF2846FEF775FF2CB184
-:101FC4000848FEF747FF2046FEF744FF0648FEF7A1
-:101FD4005DFFFFF7BFFF00BFE2350008EB350008E7
-:101FE400EE350008EC350008C43500081FB506AA14
-:101FF40052F8044B039200921A462346FFF7C8FF97
-:102004000CB41FB506AA52F8043B03920092014A8D
-:10201400FFF7BEFFF035000807B5002300937246B2
-:10202400014BFFF7E3FF00BFF7350008744608B51E
-:102034000548FEF70FFF2046FEF736FF0348FEF77C
-:1020440025FFFFF787FF00BFFF350008C4350008F0
-:10205400BFF34F8F0449054BCA6802F4E06213438F
-:10206400CB60BFF34F8FFEE700ED00E00400FA05FC
-:1020740008B5FEF781FBFFF7EBFF08B5FFF7E8FFB4
-:10208400F0B50646002401202546034694421DD09F
-:1020940011F804C000F1010EBCF1000F03D1735517
-:1020A400774605460DE00133DBB2FF2B774606F891
-:1020B40000C007D102F1FF3C644506D07355871C6C
-:1020C4007546012301343846E0E770467355F0BD88
-:1020D40030B5C9B1C0430A44914213D011F8013B51
-:1020E4000A4D83EA000404F00F0455F8244084EAFE
-:1020F400101080EA131303F00F0355F8233083EA1A
-:102104001010E9E7C04330BD084630BD082E000872
-:10211400162358430138FDD1704710B504462CB13D
-:102124004FF47A70FFF7F4FF013CF8E710BD10B5E7
-:10213400B0FA80F400F027F801280CBFC4F11F00A6
-:10214400C4F1200010BD0A2A10B51BDD0C46302353
-:1021540004F8023B78234B701C220F239340034066
-:10216400D340092B01D8303302E00F2B02D8573368
-:10217400DBB200E02023043A04F8013B131DECD148
-:1021840000238B7210BD00F0AA33A0EB530000F0C3
-:10219400CC3300F0333000EB930000EB101000F070
-:1021A4000F3000EB102000EB104000F03F007047B0
-:1021B4002D4AD2F8883043F47003C2F888302B4B90
-:1021C4001A68002142F001021A6099601A6822F02C
-:1021D400847222F480321A60254A5A601A6822F402
-:1021E40080221A60D9601A6C224942F080521A6423
-:1021F4000A6842F440420A609A689A609A689A604F
-:102204009A6842F480529A601B4A5A601A6842F0F3
-:1022140080721A601968154A8901FBD5174B40F280
-:1022240003611960936823F003039360936843F098
-:10223400020393600D4B9A6802F00C02082AF9D14C
-:102244009A6822F400029A600D4AC3F884201A683E
-:1022540042F080621A60054B1B681B01FBD5024BE0
-:102264004FF000629A60704700ED00E000380240D1
-:1022740010300024007000401040010F003C024068
-:1022840000300050C278037810B512B3164AD168F2
-:102294004278C943C1F30221C1F10404E4B2A2406B
-:1022A400D4B20F220A4181780A40224303F16043E9
-:1022B40003F561431201D2B283F8002303780122AB
-:1022C400590903F01F0302FA03F3084A42F82130C4
-:1022D40010BD5A09012103F01F03994002F12003A4
-:1022E400024A42F8231010BD00ED00E000E100E0D6
-:1022F400014B01229A60704700300240014B186084
-:10230400186870470030024000EB81018842044B9A
-:1023140003D050F8042B1A60F8E71868704700BF20
-:1023240000300240014B1868704700BF0030024083
-:10233400044B9A6809B1104301E022EA0000986056
-:10234400704700BF002004E0044B1A69002ABFBF95
-:10235400034A5A6002F188325A607047003C0240D6
-:1023640023016745024A136943F000431361704730
-:10237400003C0240014BD860704700BF003C024063
-:102384000E4BDA68D20310D4DA68D1060FD4DA68B7
-:10239400D2050ED4DA6812F0EF0F0CD1DB6813F01B
-:1023A400020F14BF0820092070470120704706203F
-:1023B4007047022070470720704700BF003C02406E
-:1023C40007B509238DF80730FFF7DAFF8DF807000A
-:1023D4009DF80730012BF7D09DF8070003B05DF896
-:1023E40004FB000070B5064641B1012908D002295A
-:1023F4000CBF4FF400754FF4407503E00D4601E047
-:102404004FF48075FFF7DCFF09281ED10F4C2369B8
-:1024140023F440732361216929432161236923F053
-:10242400F8032361236943F002031E4326612369F1
-:1024340043F480332361FFF7C3FF236923F00203CE
-:102444002361236923F0F803236170BD003C02403B
-:1024540070B505460E46FFF7B3FF092811D1094CA4
-:10246400236923F44073236123692361236943F0BF
-:10247400010323612E70FFF7A3FF236923F00103F7
-:10248400236170BD003C024070B543688668856A6C
-:102494000468416B46EA0302C3681A4303691A439A
-:1024A40043691A4383691A43C3691A43036A1A4383
-:1024B400436A1343C26A2B431A43036B1343A200B8
-:1024C40002F120420B43082E136002BF136843F04D
-:1024D40040031360B1F5801F816B12D18CB14FF0B2
-:1024E40020435C681E6846F480161E601E6846F42D
-:1024F40080761E600E6924F47004013E44EA06549A
-:102504005C608C690B6823434C6843EA04138C6851
-:1025140043EA0423CC6843EA04430C69496943EA67
-:10252400045343EA0163B5F5804F536010D1C16B86
-:1025340088690B680343486843EA0013886843EAE0
-:1025440000230869496943EA005343EA016301E04F
-:102554006FF07043C2F8043170BD0000800000F1D8
-:10256400204019B1036843F0010302E00268024B02
-:1025740013400360704700BFFEFF0F00F0B50E6804
-:1025840000220123934003EA060E9E452AD15500FA
-:1025940003230468AB40DB431C4004600C790768E8
-:1025A40004FA05FC013C4CEA0707012C076011D82A
-:1025B40084684F791C4084608468AF4027438760F7
-:1025C400446824EA0E0444608C7947689440A4B2B9
-:1025D4003C434460C4682340C360CB79C468AB40C7
-:1025E4002343C3600132102ACBD1F0BD4FF6FF73F1
-:1025F40003600023037143718371C37170470369DE
-:10260400194214BF0120002070470AB101837047AA
-:102614004183704701F00703C90800EB810010B53E
-:102624009B00046A0F21994024EA01010162016AB6
-:102634009A401143016210BD08B5134B984207D16B
-:102644004FF40010012100F0C1F94FF4001014E020
-:102654000E4B984207D14FF48000012100F0B6F9E7
-:102664004FF4800009E00A4B98420BD14FF400006C
-:10267400012100F0ABF94FF400000021BDE808404F
-:1026840000F0A4B908BD00BF005400400058004049
-:10269400005C00407FB5868826F03F060446360479
-:1026A40068460D46360C00F0F9F8029A2C48B2FB45
-:1026B400F0F081B20E43A68023882A4E23F0010352
-:1026C4001B041B0C23802B68B3420AD85B00013126
-:1026D400B2FBF3F39BB2032B89B298BF042321848A
-:1026E40023E0EE884BF6FF718E421BBF19214B434A
-:1026F40003EB4303B2FBF3F315BF9BB2B2FBF3F35B
-:1027040043F480439BB2C3F30B020AB943F00103C1
-:102714004FF4967101FB00F24FF47A7192FBF1F2DF
-:10272400013292B243F400432284A383238869894B
-:10273400AA889BB243F001032380238823F4816396
-:1027440023F002031B040A431B0C13439BB2238094
-:102754002A89AB8913439BB2238104B070BD00BFA7
-:1027640040420F00A086010041F288330360002339
-:1027740083804BF6FF72038143814FF48043C28010
-:1027840083817047038819B19BB243F0010303E0CE
-:1027940023F001031B041B0C03807047038819B149
-:1027A4009BB243F4806303E023F480631B041B0C9B
-:1027B40003807047838A9AB2038B10B542EA0343BD
-:1027C40021F07F4404EA0300431A5842584110BDE3
-:1027D400014B1860704700BF00300040014B586047
-:1027E400704700BF00300040014B9860704700BF45
-:1027F40000300040024B4AF6AA221A60704700BF1C
-:1028040000300040024B4CF6CC421A60704700BFC7
-:1028140000300040014B1860704700BF20000E429A
-:10282400034B5B68184214BF01200020704700BFAF
-:1028340000700040064BB0F5402F15BF1A685A6867
-:1028440042EA800042F4402214BF18605A60704784
-:10285400007000400E4B1A68002142F001021A6019
-:1028640099601A6822F0A85222F410221A60094AC8
-:102874005A60094AC3F8842002F18062C3F88820B0
-:102884001A6822F480221A60D960C3F88C10704749
-:102894000038024010300024003000201D4A9368A4
-:1028A40003F00C03042B10B503D0082B03D01A4BF0
-:1028B40018E01A4B16E05168536811F4800F03F0C6
-:1028C4003F03516814BF154A134AB2FBF3F3114A8C
-:1028D4005268C2F30142C1F3881101324B435200E2
-:1028E400B3FBF2F30B4A036093680D49C3F303137C
-:1028F400CC5C0368E34043609468C4F382240C5DB9
-:1029040023FA04F484609268C2F342328A5CD340AE
-:10291400C36010BD003802400024F40040787D01FB
-:1029240001000020044B1A6B09B1104301E022EAB4
-:1029340000001863704700BF00380240044B9A6BD4
-:1029440009B1104301E022EA00009863704700BF18
-:1029540000380240044B1A6C09B1104301E022EA2A
-:1029640000001864704700BF00380240044B5A6CE2
-:1029740009B1104301E022EA00005864704700BF27
-:1029840000380240044B1A6909B1104301E022EAFD
-:1029940000001861704700BF00380240044B5A69B8
-:1029A40009B1104301E022EA00005861704700BFFA
-:1029B40000380240044B9A6909B1104301E022EA4D
-:1029C40000009861704700BF00380240044B1A6A47
-:1029D40009B1104301E022EA00001862704700BF09
-:1029E40000380240044B5A6A09B1104301E022EA5C
-:1029F40000005862704700BF003802404209012AB3
-:102A0400074B01D11B6803E0022A0CBF1B6F5B6FED
-:102A140000F01F0023FA00F000F00100704700BF2F
-:102A24000038024082B000230193054B0193019BBF
-:102A340003EB80000190019B196002B0704700BF56
-:102A44005028004082B000230193054B0193019B61
-:102A540003EB80000190019B186802B0704700BF2F
-:102A64005028004008B5254B984207D14FF48050B8
-:102A74000121FFF7B7FF4FF4805039E0204B984213
-:102A840007D14FF480400121FFF7A0FF4FF48040AD
-:102A940009E01C4B98420BD14FF400400121FFF791
-:102AA40095FF4FF400400021BDE80840FFF78EBFBA
-:102AB400154B984207D14FF400500121FFF792FFC4
-:102AC4004FF4005014E0114B984207D14FF480109A
-:102AD4000121FFF787FF4FF4801009E00C4B984267
-:102AE4000BD14FF400100121FFF77CFF4FF40010CD
-:102AF4000021BDE80840FFF775BF08BD0030014064
-:102B040000380040003C00400034014000500140C7
-:102B14000054014003884A8810B503F441540B88DB
-:102B240013438A881343CA8813430A8913434A897F
-:102B340013438A891343CA89134323439BB20380F3
-:102B4400838B23F400631B041B0C83830B8A038293
-:102B540010BD0023038043808380C38003814381AD
-:102B64008381C381072303827047038819B19BB211
-:102B740043F0400303E023F040031B041B0C0380D9
-:102B84007047808980B270478181704703891942F8
-:102B940014BF0120002070477FB5038ACA889BB206
-:102BA40023F440531343038283890E469BB223F4D8
-:102BB400B053098923F00C02B3880B4371890B438A
-:102BC4009BB213438381838AB2899BB223F44073FB
-:102BD4001343838204466846FFF760FE1A4B9C4207
-:102BE40003D003F580639C4201D1039D00E0029D64
-:102BF400A38931681BB2002B4FF0190202FB05F2C6
-:102C0400B4BF4D008D00B2FBF5F5A2896426B5FB77
-:102C1400F6F00001010912B2002A06FB1153ADBF00
-:102C24001A01D90032313232B5BFB1FBF6F2B2FB30
-:102C3400F6F302F0070203F00F03B4BF1043184386
-:102C440080B2208104B070BD00100140838919B1A5
-:102C54009BB243F4005303E023F400531B041B0C06
-:102C640083817047C1F3080181807047038819424A
-:102C740014BF01200020704710B5431E0A4491423E
-:102C840004D011F8014B03F8014FF8E710BD0244DA
-:102C94000346934202D003F8011BFAE77047000091
-:102CA4000400000001030000010000000100000016
-:102CB40003000000010000000F0000000F000000EE
-:102CC40000000000EE2F0008001802401000000071
-:102CD40006040000F32F000800180240080000005A
-:102CE40006030100F62F000800180240020000004D
-:102CF40006010100FD2F0008001802400400000036
-:102D040006020100000000000000000001424F4FD5
-:102D1400544C4F414445520000000000002A2A0050
-:102D2400000000000000000000000000005400400B
-:102D340000040240400000000600040000040240B9
-:102D4400000200000900040000002000801A0600B0
-:102D5400004000001F2000000000000000000000F0
-:102D6400005800400014024002000000010004006A
-:102D740000140240010000000000040000004000B4
-:102D8400801A0600FFBF000021220000000000009E
-:102D940001160008010003008200070084000700F8
-:102DA400010003000200030040000300800007004C
-:102DB400840007000000010000000000000000087B
-:102DC400004000080080000800C00008000001085E
-:102DD40000000208000004080000060800000808BB
-:102DE40000000A0800000C0800000E08000008009B
-:102DF400100018002000280030003800400048006F
-:102E040050005800000000006410B71DC8206E3B3D
-:102E1400AC30D9269041DC76F4516B6B5861B24DDD
-:102E24003C7105502083B8ED44930FF0E8A3D6D647
-:102E34008CB361CBB0C2649BD4D2D38678E20AA0AF
-:102E44001CF2BDBD537475636B20627574746F6E30
-:102E540020726567697374657220697320696E7680
-:102E6400616C69642C20636C656172696E672E0005
-:102E7400427574746F6E206973207075736865642D
-:102E840020617420626F6F740069636534306C7004
-:102E94002E630043444F4E45206E6F74206C6F7751
-:102EA40020647572696E672072657365740043529D
-:102EB40045534554206E6F742068696768206475B3
-:102EC40072696E6720726573657400446973706C0F
-:102ED400617920627573792D776169742074696DE5
-:102EE400656F757420657870697265642100436F3D
-:102EF4006E6669677572696E672046504741206641
-:102F0400726F6D2062697473747265616D20696E8D
-:102F140020666C6173682E2E2E004E6F204650473B
-:102F2400412062697473747265616D20696E2066F4
-:102F34006C6173682E0046616C6C696E6720626117
-:102F4400636B20746F204E56434D2E00465047410C
-:102F54002043444F4E452074696D656F7574206538
-:102F640078706972656421004650474120636F6E32
-:102F740066696775726174696F6E206661696C65F4
-:102F8400642E204973207468697320612062696724
-:102F9400626F6172643F00465047412076657273E8
-:102FA400696F6E3A2000446973706C617920696EB0
-:102FB400697469616C697A656420616674657220FC
-:102FC4000020726574726965732E00446973706CB5
-:102FD400617920696E697469616C697A6174696F79
-:102FE4006E206661696C65642E004261636B0055F6
-:102FF400700053656C65637400446F776E00637290
-:10300400632E63006932632E630049324320646592
-:1030140076696365204944206F7574206F66206269
-:103024006F756E647320256420286D61783A2025BD
-:103034006429006F6E007370692E63002069732029
-:103044006F7574736964652073797374656D206634
-:103054006C6173680D0A0073797374656D5F666CD7
-:103064006173685F657261736528002C2000290D07
-:103074000A006661696C656420746F20657261730F
-:103084006520736563746F72200073797374656D62
-:103094005F666C6173685F77726974652800666146
-:1030A400696C656420746F2077726974652061644B
-:1030B40064726573732000496E76616C696420667E
-:1030C40069726D7761726520646573637269707487
-:1030D400696F6E2100436865636B73756D6D696E0E
-:1030E40067206669726D77617265207570646174BA
-:1030F4006500496E76616C6964206669726D7761FA
-:1031040072652043524320696E2053504920666CF7
-:10311400617368210065726173655F6F6C645F66DB
-:1031240069726D776172650077726974655F6E6547
-:10313400775F6669726D7761726500436865636B7A
-:1031440073756D6D696E6720002062797465730D07
-:103154000A00436865636B73756D202D2077616E7B
-:10316400746564200020676F7420004F75722069B5
-:103174006E7465726E616C20666C61736820636F37
-:103184006E74656E747320617265206261642028B8
-:10319400636865636B73756D206661696C6564292A
-:1031A400212054686973206973207265616C6C799D
-:1031B4002062616421004F75722070726576696FB8
-:1031C4007573206669726D776172652075706461CC
-:1031D4007465206661696C65642C2061626F727429
-:1031E400696E67207570646174652E004E65772082
-:1031F4006669726D776172652069732061766169B1
-:103204006C61626C6521004C6F6164696E67207249
-:1032140065636F76657279206669726D7761726530
-:10322400004661696C656420746F206C6F61642072
-:103234007265636F76657279206669726D77617203
-:10324400652C20737472696B65206F6E652E205433
-:10325400727920616761696E2E004661696C6564EC
-:1032640020746F206C6F6164207265636F76657281
-:1032740079206669726D776172652C207374726946
-:103284006B652074776F2E205472792061676169B1
-:103294006E2E004661696C656420746F206C6F61EA
-:1032A40064207265636F76657279206669726D77E2
-:1032B4006172652C20737472696B65207468726521
-:1032C400652E2053414420574154434800484152FD
-:1032D40044204641554C54006578697420737461E8
-:1032E4006E64627900205F5F5F5F202020202020D1
-:1032F4002020202020202020205F5F002F5C202021
-:103304005F605C20202020202020202020202F27E8
-:103314005F5F605C005C205C2C5C4C5C5F5C20202C
-:1033240020205F5F5F202F5C205C2F5C205C2020CE
-:103334005F5F20205F5F20205F5F20205F5F202091
-:103344005F5F00205C2F5F5C5F5F205C20202F2785
-:10335400205F20605C205C205C205C205C2F5C2073
-:103364005C2F5C205C2F5C205C2F5C205C2F5C203D
-:103374005C002020202F5C205C4C5C205C2F5C20B7
-:103384005C2F5C205C205C205C5F5C205C205C200B
-:103394005C5F2F205C5F2F205C205C205C5F5C20E6
-:1033A4005C002020205C20605C5F5F5F5F5C205CD1
-:1033B4005F5C205C5F5C205C5F5F5F5F2F5C205C18
-:1033C4005F5F5F785F5F5F2F275C2F605F5F5F5F8A
-:1033D400205C00202020205C2F5F5F5F5F5F2F5CFC
-:1033E4002F5F2F5C2F5F2F5C2F5F5F5F2F20205C90
-:1033F4002F5F5F2F2F5F5F2F202020602F5F5F5F85
-:103404002F3E205C0020202020202020202020206F
-:1034140020202020202020202020202020202020A8
-:103424002020202020202020202020202020202098
-:103434002F5C5F5F5F2F0020202020202020202091
-:103444002020202020202020202020202020202078
-:103454002020202020202020202020202020202068
-:1034640020205C2F5F5F2F004C61737420666972AB
-:103474006D7761726520626F6F742077617320735A
-:103484007461626C653B20636C6561722073747255
-:10349400696B657300486F6C6420646F776E2055A8
-:1034A40050202B204241434B20666F7220352073FD
-:1034B4006563732E20746F20666F7263652D626F6F
-:1034C4006F7420505246004669726D7761726520B0
-:1034D400697320657261736564005761746368641D
-:1034E4006F6720636175736564206120726573651D
-:1034F4007400536F667477617265206661696C75D8
-:1035040072652063617573656420612072657365FB
-:1035140074004661696C656420746F207374617211
-:1035240074206669726D776172652C207374726998
-:103534006B652074687265652E004661696C65640C
-:1035440020746F207374617274206669726D776180
-:1035540072652C20737472696B652074776F2E000A
-:103564004661696C656420746F20737461727420A1
-:103574006669726D776172652C20737472696B650C
-:10358400206F6E652E00466F7263652D626F6F74D7
-:10359400696E67207265636F76657279206D6F64FA
-:1035A400652E2E2E00426F6F74696E6720666972F5
-:1035B4006D77617265204020002E2E2E0D0A0D0AB3
-:1035C40000536F667477617265206661696C757209
-:1035D400653B20726573657474696E67210041539D
-:1035E400534552543A20002020003A004153534599
-:1035F4005254004153534552544E002A2A2A20570C
-:103604005446200053544D33320053544D3332202A
-:103614007065726970686572616C206C6962726150
-:103624007279207472697070656420616E206173B0
-:10363400736572740043524F414B204F4F4D00004D
-:10364400FF0000000001020304010203040607084E
-:043654000900000069
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/boot_snowy_evt2@1478015115.hex b/bin/boot/boot_snowy_evt2@1478015115.hex
deleted file mode 100644
index 73c59b6611..0000000000
--- a/bin/boot/boot_snowy_evt2@1478015115.hex
+++ /dev/null
@@ -1,874 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008B51A0008A8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0EBFF01F09BFC704707
-:1001E4004436000800000020140000201400002001
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040021FC002401902546E0B200F049FC01AA3B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F08DFF02A800F0FA
-:100234002DFE0120002102F0F5FB00201AE001331D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F071FF02A800F011FE0120214602F006
-:10027400D9FB28460BB030BD482E0008742E000868
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0B1F9003018BF8B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F0AAF991
-:1002C40020460E21052208AE02F0A4F9052220469C
-:1002D4000C2102F09FF94FF4005346F81C3D002511
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F03FF94FF417
-:10030400804320463146019302F038F94FF480537C
-:100314002046314601934FF4007802F02FF920462D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340025F94FF480632046314601938DF8085027
-:100344008DF80B5002F01AF94FF4807320463146B1
-:1003540001938DF808708DF80B5002F00FF94FF4EB
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F004F939464FF4001002F0F7FAA4F53C
-:100384004444164B164E1E60204602F06BFB03A835
-:1003940002F0DFFB4FF4827339463046ADF80E307D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F0A6FB2046394602F0CDFBE8
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F097FE012000F07B
-:1003F40045FB022001F091FE0120BDE8084000F019
-:100404002BBB000010B504460548022102F0BEFBD8
-:100414000028F9D021460248BDE8104002F0B4BBE0
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0EAF8012001F06FFE25484FF4C4
-:100444000041002202F0E1F84FF4807100222148BB
-:1004540002F0DBF8012001F060FE4FF400411D487A
-:10046400012202F0D2F8012001F057FE19484FF49E
-:10047400007102F0C4F818B11748184A6A210AE05A
-:1004840014484FF4004102F0BAF808B1254404E0DE
-:100494001148134A6B2101F0B3FDAC4204D014F8A7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F0ABF808240020FFF7A4FF013CFAD1B6
-:1004C4004FF40071034802F09AF8003018BF01207D
-:1004D40038BD00BF001802408D2E0008972E00087A
-:1004E400B22E000810B504460B4802F04AFB0A4835
-:1004F400022102F04BFB0028F9D00748214602F004
-:1005040043FB0548012102F041FB0028F9D00248D1
-:1005140002F037FBC0B210BD0054014010B54FF4D7
-:10052400807104460022054802F06FF8642001F04F
-:10053400EFFD2046BDE81040FFF764BF00180240FD
-:1005440008B50748802102F021FB0028F9D10548AD
-:100554004FF480710122BDE8084002F056B800BF94
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0C4FDF1E7012010BD00BFDF
-:10059400CF2E000810B5224C638822884FF6FF71D5
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F019F84FF4004100221548FD
-:1005E40002F013F8012001F098FD12484FF4004185
-:1005F400012202F00AF840F2E9340E484FF4007187
-:1006040001F0FDFF0028D9D1013C04D10A4800F0D3
-:100614003DFC204610BD642001F07AFDEDE700BFEB
-:1006240000000F60F22E000804000F601E2F000867
-:100634003A2F000800180240502F000810B5044655
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0B2FF642001F032FD0020FFF782
-:1006B40019FF4FF48071012204461A4801F0A5FF86
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF6C2F00087D
-:100724009B2F000800180240C4350008AA2F0008B7
-:10073400C52F0008CF2F000808B55D235843094B87
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F074BAD5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0E1FE3A4804210122A5
-:1007C40001F023FF00240223029435488DF80830F9
-:1007D400072103230C228DF80930019401F01AFF3C
-:1007E40080232F480193294601F0C8FE022C04D02F
-:1007F4002C48A1B20C2201F00DFF0134102CF5D1CC
-:100804004FF6FB7327480193294601F0B7FE0226F1
-:100814003146013624480C22B6B201F0FBFE102EFC
-:10082400F6D14FF6FC7329461F48019301F0A6FE4A
-:10083400042100221B481E4D01F0E7FE0A2001F0AE
-:1008440067FC01220421174801F0DFFE1E2001F09D
-:100854005FFC0120014602F071F80FCD03AC0FC418
-:1008640095E8070084E80700402200210AA802F066
-:100874000EFA02230B9308230C934FF48053129324
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400FBFD0020012101F061FE1AB070BD00BF14
-:1008A40000040240000C024000100240A42C000886
-:1008B400AC2C00080D4B98221A80A3F68A231B88BF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F086FBE7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0D9FB11E05AB2012A0CDCEF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0DAFD1A480621042201F0EF
-:1009D40021FE04220921174801F01CFE154800F0ED
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0BBFD0C4800F072FA042000F02E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0CEFD20464D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400BCFD2046BDE8384000F02ABA00140240EC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F0A3FD0446284600F018FACF
-:100AC400B4FA84F0400938BDC82C000838B50024B5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F03BFF04F140076568284600F001
-:100B0400DFF9684601F072FD02238DF80530A37BFE
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F02AFD284600F0E1F9BC42CB
-:100B3400E3D14FF48040314601F018FF03B0F0BD1B
-:100B4400C82C000808B5054B1B781BB90448322192
-:100B540001F062FABDE8084001F0D6BB1A0000209B
-:100B640002300008124B1B7870B505460C461BB9C1
-:100B74001048382101F050FA032906D98E0831466D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F0AABBBDE8704001F0BABBDB
-:100BB4001A00002002300008024B1A780AB90122F8
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F020FA01214FF4805059706D
-:100BE40001F0A0FEBDE8084001F082BB1A0000201D
-:100BF4000230000808B5074B1A781AB90648512183
-:100C040001F00AFA002159704FF48050BDE8084001
-:100C140001F088BE1A0000200230000870B50C46AE
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0E7FF002864
-:100CA400F9D00648214601F0DDFF0448402101F057
-:100CB400DDFF0028F9D010BD1C00002000480040D2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F0A7FF31464A46002081
-:100D340001F0CEF907F1080304F5927443F8040DA9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64008FF904465520FFF791FF6E466C44A64266
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020102D00082400002072
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0CEFD20460A21072201F006
-:100DC40029FC06AE072220460B2101F023FC4FF438
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0C3FB4FF40063204631460093A5
-:100E04008DF8048001F0BAFBADF80C50ADF80E502B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F0B6FE284639466B
-:100E340001F00CFF204600F05BF8054B1F7006B074
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4004AF901A8FFF7CEFF05B05DF804FB000076
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F006FB4C
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0C5F832
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BD302D000808
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0CFFA2046C8
-:100FE40031462A4601F016FB2046FFF781FF03B085
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0CCFB00287BD0BF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BD302D0008C7
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0FCFB684601F076
-:1011640003FB0F4A236A009393424FF48063ADF864
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F085FA2859012101F02D
-:10119400F9FA04B070BD00BF30010020302D000802
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0DAF92046B1B22A4601F051
-:1011D4001CFA2046FFF78CFE02B070BD10B5094C16
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BD302D00081C23104A434370B5D4
-:1012140005460F4CD058D61801F00EFA342305FBBE
-:1012240003440021E06901F095FB337923B9284692
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400302D00082DE9F347504C9A4694F8383065
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0CEFE494B1844CF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F06BFA2AE03046FFF79DFF30461A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0E1FEDBE719688B8823F4DB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A40008300008302D000880841E00017D036889
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F002FF06
-:1014840073788DF8043001A800F0FCFE54F8040CC5
-:1014940001F0D2F8454504F11C0406F1340601D0EC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020582D000830010020DF
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F0A0FD042807D90522009240
-:1014E4000D480E4A40F2351100F08AFD0C4A1344AF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020083000080E30000811
-:10152400302D0008104A08B592F838301BB90F481E
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F06AFD0A4B18441C2390F8880003FB42
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD3001002008300008D4
-:10157400302D000837B50D4614460093069B0193A1
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F047F90DB97A
-:10161400029805E0012D01D1039801E000F006FDD8
-:10162400B4EB500F0ED8B0FBF4F000F080FD0028AE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0EAFC01200138C00080B205B030BDD2
-:101654003A300008B0F1006F10B504460BD20C48C4
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:10169400B230000840300008C02D00082DE9F8439E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F02AFE2C464C451FDCF32000F03AFE95
-:10170400154B002133F8140000F06CFE09280BD0AF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F01FFE0DE02FB1C5F10100204410
-:1017340031464246B8470134DDE700F013FE01208C
-:10174400BDE8F8830020BDE8F88300BF5B300008E3
-:101754006F30000872300008F02D00087630000861
-:10176400C43500082DE9F0470646234814460D46C3
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400DBFDF32000F0EEFD4FEAD41805EB04095D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F04DFE09280DD01248FFF74AFB2B
-:1017C4003046FFF771FB1048FFF760FB00F0CAFDDD
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0BAFD42
-:1017F4000120BDE8F08700BF8E3000086F3000087C
-:1018040072300008A2300008C435000808B545F25B
-:10181400555000F0DDFF042000F0E0FF40F6FF70BB
-:1018240000F0E2FF002000F0D3FF4FF480500121CC
-:10183400BDE8084000F07CBD08B500F0E3FFBDE85A
-:10184400084000F0D7BF08B57D2001F0D7F800307C
-:1018540018BF012008BD4900FEF76EBF4B0803EB1B
-:101864005000FEF769BF000070B586B00546FFF76B
-:10187400A3F901210020FEF75FFF042000F020FB04
-:1018840003A8294600F06EFB03A800F07AFB08B910
-:1018940028480BE02848FFF7F9FA05F10C000499F1
-:1018A400FFF7D1F9059B984204D02448FFF7EEFADC
-:1018B40001203DE0049C2248FFF7E8FA2146214A32
-:1018C40021480023FFF7EAFE049E2048FFF7DEFAD2
-:1018D400002405F1C0411E4B009432460C311A48D5
-:1018E400FFF740FF1B48FFF7B5FA0498FFF7DCFA4F
-:1018F4001948FFF7AFFA04991348FFF78FF9054623
-:101904001648FFF7A7FA0598FFF7CEFA1448FFF731
-:10191400A1FA2846FFF7C8FA1248FFF7B7FA059B61
-:101924009D4204D01048FFF7B1FA022000E020469F
-:1019340006B070BDBB300008D9300008F63000088E
-:10194400193100085B180008004000082C31000819
-:10195400611800083F3100084D3100085631000875
-:1019640069310008C43500086F31000808B5022049
-:1019740000F0BEFAD8B3042000F0BAFA70B11C48E3
-:10198400FFF784FA042000F0A7FA022000F0A4FA7A
-:101994004FF40040BDE8084000F09EBA1548FFF738
-:1019A40075FA082000F098FA102000F095FA20202B
-:1019B40000F092FA402000F08FFA4FF48010FFF705
-:1019C40053FF022807D1082000F07AFA102000F013
-:1019D40077FA00F04DFB042000F07EFA022000F0BC
-:1019E4007BFA4FF40040BDE8084000F069BA08BD36
-:1019F400BA310008F031000810B52548FFF746FA5F
-:101A04004FF40010FFF730FF10B102283AD809E074
-:101A1400202000F061FA402000F05EFA802000F0FF
-:101A24004FFA2FE0082000F04BFA102000F048FA9B
-:101A3400202000F05DFA20B91648FFF727FA20208D
-:101A440007E0402000F054FA58B91348FFF71EFA93
-:101A5400402000F035FA4FF4007000F031FA00F045
-:101A640007FB0E48FFF712FA082000F035FA1020A1
-:101A740000F032FA202000F02FFA402000F02CFA77
-:101A8400002400E00124042000F026FA204610BDC2
-:101A94000B320008253200085E3200089732000835
-:101AA40008B50248FFF7F2F900F0E7FAD13200086E
-:101AB4001EF0040F0CBFEFF30880EFF30980FFF76B
-:101AC400EFBF70471FB504461048FFF7DFF901A9BF
-:101AD4000C22204600F037FB01A8FFF7D7F9204677
-:101AE400FEF742FEFEF7F2FF094B20F004001870E7
-:101AF4001C46FEF7EBFF237800F0FB00834201D085
-:101B040000F0B6FA0A2000F008FBF2E7C73200083A
-:101B1400690100207FB54FF08050012100F01AFFC9
-:101B2400022000F07DFE012807D1022000F082FE91
-:101B3400BC48FFF7ABF900F0A0FA00214FF0805049
-:101B440000F008FFFFF72CF9B748FFF79FF9B748F3
-:101B5400FFF79CF9B648FFF799F9B648FFF796F9ED
-:101B6400B548FFF793F9B548FFF790F9B448FFF784
-:101B74008DF9B448FFF78AF9B348FFF787F9B348FA
-:101B8400FFF784F9FFF758FCFEF708FF00F0BAF9F5
-:101B940000F0D0F900210C2201A801F078F800F03F
-:101BA400C5F901A90C2200F0CEFA01A8FFF76EF9DD
-:101BB4009D48FFF76BF99C48FFF768F94FF48040A4
-:101BC40000F096F990B1A248FFF760F94FF4804015
-:101BD40000F082F9082000F07FF9102000F07CF971
-:101BE400202000F079F9402000F076F9FEF7D0FDCE
-:101BF400FEF77AFFFEF746FDFEF7FEFA08B19548B8
-:101C040003E0FEF73DFB10B19348FFF75BFF00F0E4
-:101C14008CF9802000F06CF918B1802000F05CF998
-:101C240056E04FF4003000F063F9044620B14FF45D
-:101C3400003000F051F94DE00120FEF731FFB0B162
-:101C44002046FEF72DFF90B18448FFF71FF941F2BB
-:101C540088340120FEF724FF98B10020FEF720FF0E
-:101C640078B1012000F059FA013CF2D132E07C4B0A
-:101C74000CCB013301D0013203D17A48FFF706F9C6
-:101C840028E0FFF7E0FD48B3FFF7DDFD10B176482B
-:101C9400FFF7FCF84FF4007000F02AF910B1734814
-:101CA400FFF7F4F84FF4007000F016F9102000F07C
-:101CB4001FF9002800F0F0806D48FFF7E7F80820CE
-:101CC40000F00AF9102000F007F9FFF795FE98B923
-:101CD40068489AE76848FFF7D9F8F6E74FF40070C8
-:101CE40000F006F90028CFD1082000F0F5F8102004
-:101CF40000F0F2F8FFF73AFE4FF4005000F0F8F865
-:101D040004464FF4805000F0F3F8400040EA8400A9
-:101D1400C4B24FF4006000F0EBF82043C0B20728CF
-:101D2400C3B20DD14FF4006000F0D6F84FF48050E8
-:101D340000F0D2F84FF4005000F0CEF84F4864E7BA
-:101D44000133DBB2023B4FF40060052B11D8DFE80E
-:101D540003F00C1003100C1000F0BEF84FF4805088
-:101D640000F0BAF84FF4005003E000F0B5F84FF477
-:101D7400805000F0A5F8FFF749FDFFF75DFD384BF3
-:101D84003F485D681E68FFF765F82846FFF78CF842
-:101D94003C48FFF75FF80022930003F1604303F52A
-:101DA400614301324FF0FF31082AC3F88010C3F8B1
-:101DB4008011F1D1344B4FF4801200241A635C6318
-:101DC4009C631C645C6400F045FD3048012100F014
-:101DD400D9FD21462D4800F0D5FDF120012100F068
-:101DE400DDFD2146F12000F0D9FD0120014600F07F
-:101DF400E1FD2146012000F0DDFD2548012100F030
-:101E0400E5FD2146224800F0E1FD2248012100F0D1
-:101E1400E9FD2048214600F0E5FD63B64FF0FF3EA2
-:101E2400B5462847DC320008C4350008E93200080A
-:101E340000330008193300084733000876330008DC
-:101E4400A6330008D7330008093400083B340008DF
-:101E54006C340008014550FE024550FE99340008D8
-:101E640000400008CB340008DE340008F6340008D3
-:101E740016350008034550FE8A350008044550FE17
-:101E8400A9350008BD350008003802400010E022E2
-:101E9400FFC9FEF6337F7704082000F029F820B14B
-:101EA4000548FEF7F3FF102003E00448FEF7EEFFB9
-:101EB400082000F005F81DE73E35000864350008E9
-:101EC40010B50446002000F0BDFD40EA04010020E6
-:101ED400BDE8104000F0A6BD10B50446002000F097
-:101EE400B1FD20EA04010020BDE8104000F09ABDD5
-:101EF40010B50446002000F0A5FD204214BF0120C7
-:101F0400002010BD08B54FF08050012100F022FDE3
-:101F1400012000F07FFC0120FFF7EAFF20B9012136
-:101F2400BDE8084000F07EBD08BD7047022000F007
-:101F340089BD000008B5FFF7F9FF054B1968884211
-:101F440004D00220BDE8084000F06CBD08BD00BF0D
-:101F54008401000808B50248FEF798FF00F088F8ED
-:101F6400C53500081FB504460C2201A8FEF70CFC79
-:101F740001AB03CB20601868A0602046616004B008
-:101F840010BD0068A0F10C0358425841704700008E
-:101F940080B50646174610480D461C46FEF75AFF04
-:101FA4003846FEF757FF0D48FEF754FF3046FEF75C
-:101FB40051FF0B48FEF74EFF2846FEF775FF2CB184
-:101FC4000848FEF747FF2046FEF744FF0648FEF7A1
-:101FD4005DFFFFF7BFFF00BFE2350008EB350008E7
-:101FE400EE350008EC350008C43500081FB506AA14
-:101FF40052F8044B039200921A462346FFF7C8FF97
-:102004000CB41FB506AA52F8043B03920092014A8D
-:10201400FFF7BEFFF035000807B5002300937246B2
-:10202400014BFFF7E3FF00BFF7350008744608B51E
-:102034000548FEF70FFF2046FEF736FF0348FEF77C
-:1020440025FFFFF787FF00BFFF350008C4350008F0
-:10205400BFF34F8F0449054BCA6802F4E06213438F
-:10206400CB60BFF34F8FFEE700ED00E00400FA05FC
-:1020740008B5FEF781FBFFF7EBFF08B5FFF7E8FFB4
-:10208400F0B50646002401202546034694421DD09F
-:1020940011F804C000F1010EBCF1000F03D1735517
-:1020A400774605460DE00133DBB2FF2B774606F891
-:1020B40000C007D102F1FF3C644506D07355871C6C
-:1020C4007546012301343846E0E770467355F0BD88
-:1020D40030B5C9B1C0430A44914213D011F8013B51
-:1020E4000A4D83EA000404F00F0455F8244084EAFE
-:1020F400101080EA131303F00F0355F8233083EA1A
-:102104001010E9E7C04330BD084630BD082E000872
-:10211400162358430138FDD1704710B504462CB13D
-:102124004FF47A70FFF7F4FF013CF8E710BD10B5E7
-:10213400B0FA80F400F027F801280CBFC4F11F00A6
-:10214400C4F1200010BD0A2A10B51BDD0C46302353
-:1021540004F8023B78234B701C220F239340034066
-:10216400D340092B01D8303302E00F2B02D8573368
-:10217400DBB200E02023043A04F8013B131DECD148
-:1021840000238B7210BD00F0AA33A0EB530000F0C3
-:10219400CC3300F0333000EB930000EB101000F070
-:1021A4000F3000EB102000EB104000F03F007047B0
-:1021B4002D4AD2F8883043F47003C2F888302B4B90
-:1021C4001A68002142F001021A6099601A6822F02C
-:1021D400847222F480321A60254A5A601A6822F402
-:1021E40080221A60D9601A6C224942F080521A6423
-:1021F4000A6842F440420A609A689A609A689A604F
-:102204009A6842F480529A601B4A5A601A6842F0F3
-:1022140080721A601968154A8901FBD5174B40F280
-:1022240003611960936823F003039360936843F098
-:10223400020393600D4B9A6802F00C02082AF9D14C
-:102244009A6822F400029A600D4AC3F884201A683E
-:1022540042F080621A60054B1B681B01FBD5024BE0
-:102264004FF000629A60704700ED00E000380240D1
-:1022740010300024007000401040010F003C024068
-:1022840000300050C278037810B512B3164AD168F2
-:102294004278C943C1F30221C1F10404E4B2A2406B
-:1022A400D4B20F220A4181780A40224303F16043E9
-:1022B40003F561431201D2B283F8002303780122AB
-:1022C400590903F01F0302FA03F3084A42F82130C4
-:1022D40010BD5A09012103F01F03994002F12003A4
-:1022E400024A42F8231010BD00ED00E000E100E0D6
-:1022F400014B01229A60704700300240014B186084
-:10230400186870470030024000EB81018842044B9A
-:1023140003D050F8042B1A60F8E71868704700BF20
-:1023240000300240014B1868704700BF0030024083
-:10233400044B9A6809B1104301E022EA0000986056
-:10234400704700BF002004E0044B1A69002ABFBF95
-:10235400034A5A6002F188325A607047003C0240D6
-:1023640023016745024A136943F000431361704730
-:10237400003C0240014BD860704700BF003C024063
-:102384000E4BDA68D20310D4DA68D1060FD4DA68B7
-:10239400D2050ED4DA6812F0EF0F0CD1DB6813F01B
-:1023A400020F14BF0820092070470120704706203F
-:1023B4007047022070470720704700BF003C02406E
-:1023C40007B509238DF80730FFF7DAFF8DF807000A
-:1023D4009DF80730012BF7D09DF8070003B05DF896
-:1023E40004FB000070B5064641B1012908D002295A
-:1023F4000CBF4FF400754FF4407503E00D4601E047
-:102404004FF48075FFF7DCFF09281ED10F4C2369B8
-:1024140023F440732361216929432161236923F053
-:10242400F8032361236943F002031E4326612369F1
-:1024340043F480332361FFF7C3FF236923F00203CE
-:102444002361236923F0F803236170BD003C02403B
-:1024540070B505460E46FFF7B3FF092811D1094CA4
-:10246400236923F44073236123692361236943F0BF
-:10247400010323612E70FFF7A3FF236923F00103F7
-:10248400236170BD003C024070B543688668856A6C
-:102494000468416B46EA0302C3681A4303691A439A
-:1024A40043691A4383691A43C3691A43036A1A4383
-:1024B400436A1343C26A2B431A43036B1343A200B8
-:1024C40002F120420B43082E136002BF136843F04D
-:1024D40040031360B1F5801F816B12D18CB14FF0B2
-:1024E40020435C681E6846F480161E601E6846F42D
-:1024F40080761E600E6924F47004013E44EA06549A
-:102504005C608C690B6823434C6843EA04138C6851
-:1025140043EA0423CC6843EA04430C69496943EA67
-:10252400045343EA0163B5F5804F536010D1C16B86
-:1025340088690B680343486843EA0013886843EAE0
-:1025440000230869496943EA005343EA016301E04F
-:102554006FF07043C2F8043170BD0000800000F1D8
-:10256400204019B1036843F0010302E00268024B02
-:1025740013400360704700BFFEFF0F00F0B50E6804
-:1025840000220123934003EA060E9E452AD15500FA
-:1025940003230468AB40DB431C4004600C790768E8
-:1025A40004FA05FC013C4CEA0707012C076011D82A
-:1025B40084684F791C4084608468AF4027438760F7
-:1025C400446824EA0E0444608C7947689440A4B2B9
-:1025D4003C434460C4682340C360CB79C468AB40C7
-:1025E4002343C3600132102ACBD1F0BD4FF6FF73F1
-:1025F40003600023037143718371C37170470369DE
-:10260400194214BF0120002070470AB101837047AA
-:102614004183704701F00703C90800EB810010B53E
-:102624009B00046A0F21994024EA01010162016AB6
-:102634009A401143016210BD08B5134B984207D16B
-:102644004FF40010012100F0C1F94FF4001014E020
-:102654000E4B984207D14FF48000012100F0B6F9E7
-:102664004FF4800009E00A4B98420BD14FF400006C
-:10267400012100F0ABF94FF400000021BDE808404F
-:1026840000F0A4B908BD00BF005400400058004049
-:10269400005C00407FB5868826F03F060446360479
-:1026A40068460D46360C00F0F9F8029A2C48B2FB45
-:1026B400F0F081B20E43A68023882A4E23F0010352
-:1026C4001B041B0C23802B68B3420AD85B00013126
-:1026D400B2FBF3F39BB2032B89B298BF042321848A
-:1026E40023E0EE884BF6FF718E421BBF19214B434A
-:1026F40003EB4303B2FBF3F315BF9BB2B2FBF3F35B
-:1027040043F480439BB2C3F30B020AB943F00103C1
-:102714004FF4967101FB00F24FF47A7192FBF1F2DF
-:10272400013292B243F400432284A383238869894B
-:10273400AA889BB243F001032380238823F4816396
-:1027440023F002031B040A431B0C13439BB2238094
-:102754002A89AB8913439BB2238104B070BD00BFA7
-:1027640040420F00A086010041F288330360002339
-:1027740083804BF6FF72038143814FF48043C28010
-:1027840083817047038819B19BB243F0010303E0CE
-:1027940023F001031B041B0C03807047038819B149
-:1027A4009BB243F4806303E023F480631B041B0C9B
-:1027B40003807047838A9AB2038B10B542EA0343BD
-:1027C40021F07F4404EA0300431A5842584110BDE3
-:1027D400014B1860704700BF00300040014B586047
-:1027E400704700BF00300040014B9860704700BF45
-:1027F40000300040024B4AF6AA221A60704700BF1C
-:1028040000300040024B4CF6CC421A60704700BFC7
-:1028140000300040014B1860704700BF20000E429A
-:10282400034B5B68184214BF01200020704700BFAF
-:1028340000700040064BB0F5402F15BF1A685A6867
-:1028440042EA800042F4402214BF18605A60704784
-:10285400007000400E4B1A68002142F001021A6019
-:1028640099601A6822F0A85222F410221A60094AC8
-:102874005A60094AC3F8842002F18062C3F88820B0
-:102884001A6822F480221A60D960C3F88C10704749
-:102894000038024010300024003000201D4A9368A4
-:1028A40003F00C03042B10B503D0082B03D01A4BF0
-:1028B40018E01A4B16E05168536811F4800F03F0C6
-:1028C4003F03516814BF154A134AB2FBF3F3114A8C
-:1028D4005268C2F30142C1F3881101324B435200E2
-:1028E400B3FBF2F30B4A036093680D49C3F303137C
-:1028F400CC5C0368E34043609468C4F382240C5DB9
-:1029040023FA04F484609268C2F342328A5CD340AE
-:10291400C36010BD003802400024F40040787D01FB
-:1029240001000020044B1A6B09B1104301E022EAB4
-:1029340000001863704700BF00380240044B9A6BD4
-:1029440009B1104301E022EA00009863704700BF18
-:1029540000380240044B1A6C09B1104301E022EA2A
-:1029640000001864704700BF00380240044B5A6CE2
-:1029740009B1104301E022EA00005864704700BF27
-:1029840000380240044B1A6909B1104301E022EAFD
-:1029940000001861704700BF00380240044B5A69B8
-:1029A40009B1104301E022EA00005861704700BFFA
-:1029B40000380240044B9A6909B1104301E022EA4D
-:1029C40000009861704700BF00380240044B1A6A47
-:1029D40009B1104301E022EA00001862704700BF09
-:1029E40000380240044B5A6A09B1104301E022EA5C
-:1029F40000005862704700BF003802404209012AB3
-:102A0400074B01D11B6803E0022A0CBF1B6F5B6FED
-:102A140000F01F0023FA00F000F00100704700BF2F
-:102A24000038024082B000230193054B0193019BBF
-:102A340003EB80000190019B196002B0704700BF56
-:102A44005028004082B000230193054B0193019B61
-:102A540003EB80000190019B186802B0704700BF2F
-:102A64005028004008B5254B984207D14FF48050B8
-:102A74000121FFF7B7FF4FF4805039E0204B984213
-:102A840007D14FF480400121FFF7A0FF4FF48040AD
-:102A940009E01C4B98420BD14FF400400121FFF791
-:102AA40095FF4FF400400021BDE80840FFF78EBFBA
-:102AB400154B984207D14FF400500121FFF792FFC4
-:102AC4004FF4005014E0114B984207D14FF480109A
-:102AD4000121FFF787FF4FF4801009E00C4B984267
-:102AE4000BD14FF400100121FFF77CFF4FF40010CD
-:102AF4000021BDE80840FFF775BF08BD0030014064
-:102B040000380040003C00400034014000500140C7
-:102B14000054014003884A8810B503F441540B88DB
-:102B240013438A881343CA8813430A8913434A897F
-:102B340013438A891343CA89134323439BB20380F3
-:102B4400838B23F400631B041B0C83830B8A038293
-:102B540010BD0023038043808380C38003814381AD
-:102B64008381C381072303827047038819B19BB211
-:102B740043F0400303E023F040031B041B0C0380D9
-:102B84007047808980B270478181704703891942F8
-:102B940014BF0120002070477FB5038ACA889BB206
-:102BA40023F440531343038283890E469BB223F4D8
-:102BB400B053098923F00C02B3880B4371890B438A
-:102BC4009BB213438381838AB2899BB223F44073FB
-:102BD4001343838204466846FFF760FE1A4B9C4207
-:102BE40003D003F580639C4201D1039D00E0029D64
-:102BF400A38931681BB2002B4FF0190202FB05F2C6
-:102C0400B4BF4D008D00B2FBF5F5A2896426B5FB77
-:102C1400F6F00001010912B2002A06FB1153ADBF00
-:102C24001A01D90032313232B5BFB1FBF6F2B2FB30
-:102C3400F6F302F0070203F00F03B4BF1043184386
-:102C440080B2208104B070BD00100140838919B1A5
-:102C54009BB243F4005303E023F400531B041B0C06
-:102C640083817047C1F3080181807047038819424A
-:102C740014BF01200020704710B5431E0A4491423E
-:102C840004D011F8014B03F8014FF8E710BD0244DA
-:102C94000346934202D003F8011BFAE77047000091
-:102CA4000400000001030000010000000100000016
-:102CB40003000000010000000F0000000F000000EE
-:102CC40000000000EE2F0008001802401000000071
-:102CD40006040000F32F000800180240080000005A
-:102CE40006030100F62F000800180240020000004D
-:102CF40006010100FD2F0008001802400400000036
-:102D040006020100000000000000000001424F4FD5
-:102D1400544C4F414445520000000000002A2A0050
-:102D2400000000000000000000000000005400400B
-:102D340000040240400000000600040000040240B9
-:102D4400000200000900040000002000801A0600B0
-:102D5400004000001F2000000000000000000000F0
-:102D6400005800400014024002000000010004006A
-:102D740000140240010000000000040000004000B4
-:102D8400801A0600FFBF000021220000000000009E
-:102D940001160008010003008200070084000700F8
-:102DA400010003000200030040000300800007004C
-:102DB400840007000000010000000000000000087B
-:102DC400004000080080000800C00008000001085E
-:102DD40000000208000004080000060800000808BB
-:102DE40000000A0800000C0800000E08000008009B
-:102DF400100018002000280030003800400048006F
-:102E040050005800000000006410B71DC8206E3B3D
-:102E1400AC30D9269041DC76F4516B6B5861B24DDD
-:102E24003C7105502083B8ED44930FF0E8A3D6D647
-:102E34008CB361CBB0C2649BD4D2D38678E20AA0AF
-:102E44001CF2BDBD537475636B20627574746F6E30
-:102E540020726567697374657220697320696E7680
-:102E6400616C69642C20636C656172696E672E0005
-:102E7400427574746F6E206973207075736865642D
-:102E840020617420626F6F740069636534306C7004
-:102E94002E630043444F4E45206E6F74206C6F7751
-:102EA40020647572696E672072657365740043529D
-:102EB40045534554206E6F742068696768206475B3
-:102EC40072696E6720726573657400446973706C0F
-:102ED400617920627573792D776169742074696DE5
-:102EE400656F757420657870697265642100436F3D
-:102EF4006E6669677572696E672046504741206641
-:102F0400726F6D2062697473747265616D20696E8D
-:102F140020666C6173682E2E2E004E6F204650473B
-:102F2400412062697473747265616D20696E2066F4
-:102F34006C6173682E0046616C6C696E6720626117
-:102F4400636B20746F204E56434D2E00465047410C
-:102F54002043444F4E452074696D656F7574206538
-:102F640078706972656421004650474120636F6E32
-:102F740066696775726174696F6E206661696C65F4
-:102F8400642E204973207468697320612062696724
-:102F9400626F6172643F00465047412076657273E8
-:102FA400696F6E3A2000446973706C617920696EB0
-:102FB400697469616C697A656420616674657220FC
-:102FC4000020726574726965732E00446973706CB5
-:102FD400617920696E697469616C697A6174696F79
-:102FE4006E206661696C65642E004261636B0055F6
-:102FF400700053656C65637400446F776E00637290
-:10300400632E63006932632E630049324320646592
-:1030140076696365204944206F7574206F66206269
-:103024006F756E647320256420286D61783A2025BD
-:103034006429006F6E007370692E63002069732029
-:103044006F7574736964652073797374656D206634
-:103054006C6173680D0A0073797374656D5F666CD7
-:103064006173685F657261736528002C2000290D07
-:103074000A006661696C656420746F20657261730F
-:103084006520736563746F72200073797374656D62
-:103094005F666C6173685F77726974652800666146
-:1030A400696C656420746F2077726974652061644B
-:1030B40064726573732000496E76616C696420667E
-:1030C40069726D7761726520646573637269707487
-:1030D400696F6E2100436865636B73756D6D696E0E
-:1030E40067206669726D77617265207570646174BA
-:1030F4006500496E76616C6964206669726D7761FA
-:1031040072652043524320696E2053504920666CF7
-:10311400617368210065726173655F6F6C645F66DB
-:1031240069726D776172650077726974655F6E6547
-:10313400775F6669726D7761726500436865636B7A
-:1031440073756D6D696E6720002062797465730D07
-:103154000A00436865636B73756D202D2077616E7B
-:10316400746564200020676F7420004F75722069B5
-:103174006E7465726E616C20666C61736820636F37
-:103184006E74656E747320617265206261642028B8
-:10319400636865636B73756D206661696C6564292A
-:1031A400212054686973206973207265616C6C799D
-:1031B4002062616421004F75722070726576696FB8
-:1031C4007573206669726D776172652075706461CC
-:1031D4007465206661696C65642C2061626F727429
-:1031E400696E67207570646174652E004E65772082
-:1031F4006669726D776172652069732061766169B1
-:103204006C61626C6521004C6F6164696E67207249
-:1032140065636F76657279206669726D7761726530
-:10322400004661696C656420746F206C6F61642072
-:103234007265636F76657279206669726D77617203
-:10324400652C20737472696B65206F6E652E205433
-:10325400727920616761696E2E004661696C6564EC
-:1032640020746F206C6F6164207265636F76657281
-:1032740079206669726D776172652C207374726946
-:103284006B652074776F2E205472792061676169B1
-:103294006E2E004661696C656420746F206C6F61EA
-:1032A40064207265636F76657279206669726D77E2
-:1032B4006172652C20737472696B65207468726521
-:1032C400652E2053414420574154434800484152FD
-:1032D40044204641554C54006578697420737461E8
-:1032E4006E64627900205F5F5F5F202020202020D1
-:1032F4002020202020202020205F5F002F5C202021
-:103304005F605C20202020202020202020202F27E8
-:103314005F5F605C005C205C2C5C4C5C5F5C20202C
-:1033240020205F5F5F202F5C205C2F5C205C2020CE
-:103334005F5F20205F5F20205F5F20205F5F202091
-:103344005F5F00205C2F5F5C5F5F205C20202F2785
-:10335400205F20605C205C205C205C205C2F5C2073
-:103364005C2F5C205C2F5C205C2F5C205C2F5C203D
-:103374005C002020202F5C205C4C5C205C2F5C20B7
-:103384005C2F5C205C205C205C5F5C205C205C200B
-:103394005C5F2F205C5F2F205C205C205C5F5C20E6
-:1033A4005C002020205C20605C5F5F5F5F5C205CD1
-:1033B4005F5C205C5F5C205C5F5F5F5F2F5C205C18
-:1033C4005F5F5F785F5F5F2F275C2F605F5F5F5F8A
-:1033D400205C00202020205C2F5F5F5F5F5F2F5CFC
-:1033E4002F5F2F5C2F5F2F5C2F5F5F5F2F20205C90
-:1033F4002F5F5F2F2F5F5F2F202020602F5F5F5F85
-:103404002F3E205C0020202020202020202020206F
-:1034140020202020202020202020202020202020A8
-:103424002020202020202020202020202020202098
-:103434002F5C5F5F5F2F0020202020202020202091
-:103444002020202020202020202020202020202078
-:103454002020202020202020202020202020202068
-:1034640020205C2F5F5F2F004C61737420666972AB
-:103474006D7761726520626F6F742077617320735A
-:103484007461626C653B20636C6561722073747255
-:10349400696B657300486F6C6420646F776E2055A8
-:1034A40050202B204241434B20666F7220352073FD
-:1034B4006563732E20746F20666F7263652D626F6F
-:1034C4006F7420505246004669726D7761726520B0
-:1034D400697320657261736564005761746368641D
-:1034E4006F6720636175736564206120726573651D
-:1034F4007400536F667477617265206661696C75D8
-:1035040072652063617573656420612072657365FB
-:1035140074004661696C656420746F207374617211
-:1035240074206669726D776172652C207374726998
-:103534006B652074687265652E004661696C65640C
-:1035440020746F207374617274206669726D776180
-:1035540072652C20737472696B652074776F2E000A
-:103564004661696C656420746F20737461727420A1
-:103574006669726D776172652C20737472696B650C
-:10358400206F6E652E00466F7263652D626F6F74D7
-:10359400696E67207265636F76657279206D6F64FA
-:1035A400652E2E2E00426F6F74696E6720666972F5
-:1035B4006D77617265204020002E2E2E0D0A0D0AB3
-:1035C40000536F667477617265206661696C757209
-:1035D400653B20726573657474696E67210041539D
-:1035E400534552543A20002020003A004153534599
-:1035F4005254004153534552544E002A2A2A20570C
-:103604005446200053544D33320053544D3332202A
-:103614007065726970686572616C206C6962726150
-:103624007279207472697070656420616E206173B0
-:10363400736572740043524F414B204F4F4D00004D
-:10364400FF0000000001020304010203040607084E
-:043654000900000069
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/boot_spalding@1478015115.hex b/bin/boot/boot_spalding@1478015115.hex
deleted file mode 100644
index 73c59b6611..0000000000
--- a/bin/boot/boot_spalding@1478015115.hex
+++ /dev/null
@@ -1,874 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008B51A0008A8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0EBFF01F09BFC704707
-:1001E4004436000800000020140000201400002001
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040021FC002401902546E0B200F049FC01AA3B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F08DFF02A800F0FA
-:100234002DFE0120002102F0F5FB00201AE001331D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F071FF02A800F011FE0120214602F006
-:10027400D9FB28460BB030BD482E0008742E000868
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0B1F9003018BF8B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F0AAF991
-:1002C40020460E21052208AE02F0A4F9052220469C
-:1002D4000C2102F09FF94FF4005346F81C3D002511
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F03FF94FF417
-:10030400804320463146019302F038F94FF480537C
-:100314002046314601934FF4007802F02FF920462D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340025F94FF480632046314601938DF8085027
-:100344008DF80B5002F01AF94FF4807320463146B1
-:1003540001938DF808708DF80B5002F00FF94FF4EB
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F004F939464FF4001002F0F7FAA4F53C
-:100384004444164B164E1E60204602F06BFB03A835
-:1003940002F0DFFB4FF4827339463046ADF80E307D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F0A6FB2046394602F0CDFBE8
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F097FE012000F07B
-:1003F40045FB022001F091FE0120BDE8084000F019
-:100404002BBB000010B504460548022102F0BEFBD8
-:100414000028F9D021460248BDE8104002F0B4BBE0
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0EAF8012001F06FFE25484FF4C4
-:100444000041002202F0E1F84FF4807100222148BB
-:1004540002F0DBF8012001F060FE4FF400411D487A
-:10046400012202F0D2F8012001F057FE19484FF49E
-:10047400007102F0C4F818B11748184A6A210AE05A
-:1004840014484FF4004102F0BAF808B1254404E0DE
-:100494001148134A6B2101F0B3FDAC4204D014F8A7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F0ABF808240020FFF7A4FF013CFAD1B6
-:1004C4004FF40071034802F09AF8003018BF01207D
-:1004D40038BD00BF001802408D2E0008972E00087A
-:1004E400B22E000810B504460B4802F04AFB0A4835
-:1004F400022102F04BFB0028F9D00748214602F004
-:1005040043FB0548012102F041FB0028F9D00248D1
-:1005140002F037FBC0B210BD0054014010B54FF4D7
-:10052400807104460022054802F06FF8642001F04F
-:10053400EFFD2046BDE81040FFF764BF00180240FD
-:1005440008B50748802102F021FB0028F9D10548AD
-:100554004FF480710122BDE8084002F056B800BF94
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0C4FDF1E7012010BD00BFDF
-:10059400CF2E000810B5224C638822884FF6FF71D5
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F019F84FF4004100221548FD
-:1005E40002F013F8012001F098FD12484FF4004185
-:1005F400012202F00AF840F2E9340E484FF4007187
-:1006040001F0FDFF0028D9D1013C04D10A4800F0D3
-:100614003DFC204610BD642001F07AFDEDE700BFEB
-:1006240000000F60F22E000804000F601E2F000867
-:100634003A2F000800180240502F000810B5044655
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0B2FF642001F032FD0020FFF782
-:1006B40019FF4FF48071012204461A4801F0A5FF86
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF6C2F00087D
-:100724009B2F000800180240C4350008AA2F0008B7
-:10073400C52F0008CF2F000808B55D235843094B87
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F074BAD5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0E1FE3A4804210122A5
-:1007C40001F023FF00240223029435488DF80830F9
-:1007D400072103230C228DF80930019401F01AFF3C
-:1007E40080232F480193294601F0C8FE022C04D02F
-:1007F4002C48A1B20C2201F00DFF0134102CF5D1CC
-:100804004FF6FB7327480193294601F0B7FE0226F1
-:100814003146013624480C22B6B201F0FBFE102EFC
-:10082400F6D14FF6FC7329461F48019301F0A6FE4A
-:10083400042100221B481E4D01F0E7FE0A2001F0AE
-:1008440067FC01220421174801F0DFFE1E2001F09D
-:100854005FFC0120014602F071F80FCD03AC0FC418
-:1008640095E8070084E80700402200210AA802F066
-:100874000EFA02230B9308230C934FF48053129324
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400FBFD0020012101F061FE1AB070BD00BF14
-:1008A40000040240000C024000100240A42C000886
-:1008B400AC2C00080D4B98221A80A3F68A231B88BF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F086FBE7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0D9FB11E05AB2012A0CDCEF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0DAFD1A480621042201F0EF
-:1009D40021FE04220921174801F01CFE154800F0ED
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0BBFD0C4800F072FA042000F02E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0CEFD20464D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400BCFD2046BDE8384000F02ABA00140240EC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F0A3FD0446284600F018FACF
-:100AC400B4FA84F0400938BDC82C000838B50024B5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F03BFF04F140076568284600F001
-:100B0400DFF9684601F072FD02238DF80530A37BFE
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F02AFD284600F0E1F9BC42CB
-:100B3400E3D14FF48040314601F018FF03B0F0BD1B
-:100B4400C82C000808B5054B1B781BB90448322192
-:100B540001F062FABDE8084001F0D6BB1A0000209B
-:100B640002300008124B1B7870B505460C461BB9C1
-:100B74001048382101F050FA032906D98E0831466D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F0AABBBDE8704001F0BABBDB
-:100BB4001A00002002300008024B1A780AB90122F8
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F020FA01214FF4805059706D
-:100BE40001F0A0FEBDE8084001F082BB1A0000201D
-:100BF4000230000808B5074B1A781AB90648512183
-:100C040001F00AFA002159704FF48050BDE8084001
-:100C140001F088BE1A0000200230000870B50C46AE
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0E7FF002864
-:100CA400F9D00648214601F0DDFF0448402101F057
-:100CB400DDFF0028F9D010BD1C00002000480040D2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F0A7FF31464A46002081
-:100D340001F0CEF907F1080304F5927443F8040DA9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64008FF904465520FFF791FF6E466C44A64266
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020102D00082400002072
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0CEFD20460A21072201F006
-:100DC40029FC06AE072220460B2101F023FC4FF438
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0C3FB4FF40063204631460093A5
-:100E04008DF8048001F0BAFBADF80C50ADF80E502B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F0B6FE284639466B
-:100E340001F00CFF204600F05BF8054B1F7006B074
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4004AF901A8FFF7CEFF05B05DF804FB000076
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F006FB4C
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0C5F832
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BD302D000808
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0CFFA2046C8
-:100FE40031462A4601F016FB2046FFF781FF03B085
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0CCFB00287BD0BF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BD302D0008C7
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0FCFB684601F076
-:1011640003FB0F4A236A009393424FF48063ADF864
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F085FA2859012101F02D
-:10119400F9FA04B070BD00BF30010020302D000802
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0DAF92046B1B22A4601F051
-:1011D4001CFA2046FFF78CFE02B070BD10B5094C16
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BD302D00081C23104A434370B5D4
-:1012140005460F4CD058D61801F00EFA342305FBBE
-:1012240003440021E06901F095FB337923B9284692
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400302D00082DE9F347504C9A4694F8383065
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0CEFE494B1844CF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F06BFA2AE03046FFF79DFF30461A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0E1FEDBE719688B8823F4DB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A40008300008302D000880841E00017D036889
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F002FF06
-:1014840073788DF8043001A800F0FCFE54F8040CC5
-:1014940001F0D2F8454504F11C0406F1340601D0EC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020582D000830010020DF
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F0A0FD042807D90522009240
-:1014E4000D480E4A40F2351100F08AFD0C4A1344AF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020083000080E30000811
-:10152400302D0008104A08B592F838301BB90F481E
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F06AFD0A4B18441C2390F8880003FB42
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD3001002008300008D4
-:10157400302D000837B50D4614460093069B0193A1
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F047F90DB97A
-:10161400029805E0012D01D1039801E000F006FDD8
-:10162400B4EB500F0ED8B0FBF4F000F080FD0028AE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0EAFC01200138C00080B205B030BDD2
-:101654003A300008B0F1006F10B504460BD20C48C4
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:10169400B230000840300008C02D00082DE9F8439E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F02AFE2C464C451FDCF32000F03AFE95
-:10170400154B002133F8140000F06CFE09280BD0AF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F01FFE0DE02FB1C5F10100204410
-:1017340031464246B8470134DDE700F013FE01208C
-:10174400BDE8F8830020BDE8F88300BF5B300008E3
-:101754006F30000872300008F02D00087630000861
-:10176400C43500082DE9F0470646234814460D46C3
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400DBFDF32000F0EEFD4FEAD41805EB04095D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F04DFE09280DD01248FFF74AFB2B
-:1017C4003046FFF771FB1048FFF760FB00F0CAFDDD
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0BAFD42
-:1017F4000120BDE8F08700BF8E3000086F3000087C
-:1018040072300008A2300008C435000808B545F25B
-:10181400555000F0DDFF042000F0E0FF40F6FF70BB
-:1018240000F0E2FF002000F0D3FF4FF480500121CC
-:10183400BDE8084000F07CBD08B500F0E3FFBDE85A
-:10184400084000F0D7BF08B57D2001F0D7F800307C
-:1018540018BF012008BD4900FEF76EBF4B0803EB1B
-:101864005000FEF769BF000070B586B00546FFF76B
-:10187400A3F901210020FEF75FFF042000F020FB04
-:1018840003A8294600F06EFB03A800F07AFB08B910
-:1018940028480BE02848FFF7F9FA05F10C000499F1
-:1018A400FFF7D1F9059B984204D02448FFF7EEFADC
-:1018B40001203DE0049C2248FFF7E8FA2146214A32
-:1018C40021480023FFF7EAFE049E2048FFF7DEFAD2
-:1018D400002405F1C0411E4B009432460C311A48D5
-:1018E400FFF740FF1B48FFF7B5FA0498FFF7DCFA4F
-:1018F4001948FFF7AFFA04991348FFF78FF9054623
-:101904001648FFF7A7FA0598FFF7CEFA1448FFF731
-:10191400A1FA2846FFF7C8FA1248FFF7B7FA059B61
-:101924009D4204D01048FFF7B1FA022000E020469F
-:1019340006B070BDBB300008D9300008F63000088E
-:10194400193100085B180008004000082C31000819
-:10195400611800083F3100084D3100085631000875
-:1019640069310008C43500086F31000808B5022049
-:1019740000F0BEFAD8B3042000F0BAFA70B11C48E3
-:10198400FFF784FA042000F0A7FA022000F0A4FA7A
-:101994004FF40040BDE8084000F09EBA1548FFF738
-:1019A40075FA082000F098FA102000F095FA20202B
-:1019B40000F092FA402000F08FFA4FF48010FFF705
-:1019C40053FF022807D1082000F07AFA102000F013
-:1019D40077FA00F04DFB042000F07EFA022000F0BC
-:1019E4007BFA4FF40040BDE8084000F069BA08BD36
-:1019F400BA310008F031000810B52548FFF746FA5F
-:101A04004FF40010FFF730FF10B102283AD809E074
-:101A1400202000F061FA402000F05EFA802000F0FF
-:101A24004FFA2FE0082000F04BFA102000F048FA9B
-:101A3400202000F05DFA20B91648FFF727FA20208D
-:101A440007E0402000F054FA58B91348FFF71EFA93
-:101A5400402000F035FA4FF4007000F031FA00F045
-:101A640007FB0E48FFF712FA082000F035FA1020A1
-:101A740000F032FA202000F02FFA402000F02CFA77
-:101A8400002400E00124042000F026FA204610BDC2
-:101A94000B320008253200085E3200089732000835
-:101AA40008B50248FFF7F2F900F0E7FAD13200086E
-:101AB4001EF0040F0CBFEFF30880EFF30980FFF76B
-:101AC400EFBF70471FB504461048FFF7DFF901A9BF
-:101AD4000C22204600F037FB01A8FFF7D7F9204677
-:101AE400FEF742FEFEF7F2FF094B20F004001870E7
-:101AF4001C46FEF7EBFF237800F0FB00834201D085
-:101B040000F0B6FA0A2000F008FBF2E7C73200083A
-:101B1400690100207FB54FF08050012100F01AFFC9
-:101B2400022000F07DFE012807D1022000F082FE91
-:101B3400BC48FFF7ABF900F0A0FA00214FF0805049
-:101B440000F008FFFFF72CF9B748FFF79FF9B748F3
-:101B5400FFF79CF9B648FFF799F9B648FFF796F9ED
-:101B6400B548FFF793F9B548FFF790F9B448FFF784
-:101B74008DF9B448FFF78AF9B348FFF787F9B348FA
-:101B8400FFF784F9FFF758FCFEF708FF00F0BAF9F5
-:101B940000F0D0F900210C2201A801F078F800F03F
-:101BA400C5F901A90C2200F0CEFA01A8FFF76EF9DD
-:101BB4009D48FFF76BF99C48FFF768F94FF48040A4
-:101BC40000F096F990B1A248FFF760F94FF4804015
-:101BD40000F082F9082000F07FF9102000F07CF971
-:101BE400202000F079F9402000F076F9FEF7D0FDCE
-:101BF400FEF77AFFFEF746FDFEF7FEFA08B19548B8
-:101C040003E0FEF73DFB10B19348FFF75BFF00F0E4
-:101C14008CF9802000F06CF918B1802000F05CF998
-:101C240056E04FF4003000F063F9044620B14FF45D
-:101C3400003000F051F94DE00120FEF731FFB0B162
-:101C44002046FEF72DFF90B18448FFF71FF941F2BB
-:101C540088340120FEF724FF98B10020FEF720FF0E
-:101C640078B1012000F059FA013CF2D132E07C4B0A
-:101C74000CCB013301D0013203D17A48FFF706F9C6
-:101C840028E0FFF7E0FD48B3FFF7DDFD10B176482B
-:101C9400FFF7FCF84FF4007000F02AF910B1734814
-:101CA400FFF7F4F84FF4007000F016F9102000F07C
-:101CB4001FF9002800F0F0806D48FFF7E7F80820CE
-:101CC40000F00AF9102000F007F9FFF795FE98B923
-:101CD40068489AE76848FFF7D9F8F6E74FF40070C8
-:101CE40000F006F90028CFD1082000F0F5F8102004
-:101CF40000F0F2F8FFF73AFE4FF4005000F0F8F865
-:101D040004464FF4805000F0F3F8400040EA8400A9
-:101D1400C4B24FF4006000F0EBF82043C0B20728CF
-:101D2400C3B20DD14FF4006000F0D6F84FF48050E8
-:101D340000F0D2F84FF4005000F0CEF84F4864E7BA
-:101D44000133DBB2023B4FF40060052B11D8DFE80E
-:101D540003F00C1003100C1000F0BEF84FF4805088
-:101D640000F0BAF84FF4005003E000F0B5F84FF477
-:101D7400805000F0A5F8FFF749FDFFF75DFD384BF3
-:101D84003F485D681E68FFF765F82846FFF78CF842
-:101D94003C48FFF75FF80022930003F1604303F52A
-:101DA400614301324FF0FF31082AC3F88010C3F8B1
-:101DB4008011F1D1344B4FF4801200241A635C6318
-:101DC4009C631C645C6400F045FD3048012100F014
-:101DD400D9FD21462D4800F0D5FDF120012100F068
-:101DE400DDFD2146F12000F0D9FD0120014600F07F
-:101DF400E1FD2146012000F0DDFD2548012100F030
-:101E0400E5FD2146224800F0E1FD2248012100F0D1
-:101E1400E9FD2048214600F0E5FD63B64FF0FF3EA2
-:101E2400B5462847DC320008C4350008E93200080A
-:101E340000330008193300084733000876330008DC
-:101E4400A6330008D7330008093400083B340008DF
-:101E54006C340008014550FE024550FE99340008D8
-:101E640000400008CB340008DE340008F6340008D3
-:101E740016350008034550FE8A350008044550FE17
-:101E8400A9350008BD350008003802400010E022E2
-:101E9400FFC9FEF6337F7704082000F029F820B14B
-:101EA4000548FEF7F3FF102003E00448FEF7EEFFB9
-:101EB400082000F005F81DE73E35000864350008E9
-:101EC40010B50446002000F0BDFD40EA04010020E6
-:101ED400BDE8104000F0A6BD10B50446002000F097
-:101EE400B1FD20EA04010020BDE8104000F09ABDD5
-:101EF40010B50446002000F0A5FD204214BF0120C7
-:101F0400002010BD08B54FF08050012100F022FDE3
-:101F1400012000F07FFC0120FFF7EAFF20B9012136
-:101F2400BDE8084000F07EBD08BD7047022000F007
-:101F340089BD000008B5FFF7F9FF054B1968884211
-:101F440004D00220BDE8084000F06CBD08BD00BF0D
-:101F54008401000808B50248FEF798FF00F088F8ED
-:101F6400C53500081FB504460C2201A8FEF70CFC79
-:101F740001AB03CB20601868A0602046616004B008
-:101F840010BD0068A0F10C0358425841704700008E
-:101F940080B50646174610480D461C46FEF75AFF04
-:101FA4003846FEF757FF0D48FEF754FF3046FEF75C
-:101FB40051FF0B48FEF74EFF2846FEF775FF2CB184
-:101FC4000848FEF747FF2046FEF744FF0648FEF7A1
-:101FD4005DFFFFF7BFFF00BFE2350008EB350008E7
-:101FE400EE350008EC350008C43500081FB506AA14
-:101FF40052F8044B039200921A462346FFF7C8FF97
-:102004000CB41FB506AA52F8043B03920092014A8D
-:10201400FFF7BEFFF035000807B5002300937246B2
-:10202400014BFFF7E3FF00BFF7350008744608B51E
-:102034000548FEF70FFF2046FEF736FF0348FEF77C
-:1020440025FFFFF787FF00BFFF350008C4350008F0
-:10205400BFF34F8F0449054BCA6802F4E06213438F
-:10206400CB60BFF34F8FFEE700ED00E00400FA05FC
-:1020740008B5FEF781FBFFF7EBFF08B5FFF7E8FFB4
-:10208400F0B50646002401202546034694421DD09F
-:1020940011F804C000F1010EBCF1000F03D1735517
-:1020A400774605460DE00133DBB2FF2B774606F891
-:1020B40000C007D102F1FF3C644506D07355871C6C
-:1020C4007546012301343846E0E770467355F0BD88
-:1020D40030B5C9B1C0430A44914213D011F8013B51
-:1020E4000A4D83EA000404F00F0455F8244084EAFE
-:1020F400101080EA131303F00F0355F8233083EA1A
-:102104001010E9E7C04330BD084630BD082E000872
-:10211400162358430138FDD1704710B504462CB13D
-:102124004FF47A70FFF7F4FF013CF8E710BD10B5E7
-:10213400B0FA80F400F027F801280CBFC4F11F00A6
-:10214400C4F1200010BD0A2A10B51BDD0C46302353
-:1021540004F8023B78234B701C220F239340034066
-:10216400D340092B01D8303302E00F2B02D8573368
-:10217400DBB200E02023043A04F8013B131DECD148
-:1021840000238B7210BD00F0AA33A0EB530000F0C3
-:10219400CC3300F0333000EB930000EB101000F070
-:1021A4000F3000EB102000EB104000F03F007047B0
-:1021B4002D4AD2F8883043F47003C2F888302B4B90
-:1021C4001A68002142F001021A6099601A6822F02C
-:1021D400847222F480321A60254A5A601A6822F402
-:1021E40080221A60D9601A6C224942F080521A6423
-:1021F4000A6842F440420A609A689A609A689A604F
-:102204009A6842F480529A601B4A5A601A6842F0F3
-:1022140080721A601968154A8901FBD5174B40F280
-:1022240003611960936823F003039360936843F098
-:10223400020393600D4B9A6802F00C02082AF9D14C
-:102244009A6822F400029A600D4AC3F884201A683E
-:1022540042F080621A60054B1B681B01FBD5024BE0
-:102264004FF000629A60704700ED00E000380240D1
-:1022740010300024007000401040010F003C024068
-:1022840000300050C278037810B512B3164AD168F2
-:102294004278C943C1F30221C1F10404E4B2A2406B
-:1022A400D4B20F220A4181780A40224303F16043E9
-:1022B40003F561431201D2B283F8002303780122AB
-:1022C400590903F01F0302FA03F3084A42F82130C4
-:1022D40010BD5A09012103F01F03994002F12003A4
-:1022E400024A42F8231010BD00ED00E000E100E0D6
-:1022F400014B01229A60704700300240014B186084
-:10230400186870470030024000EB81018842044B9A
-:1023140003D050F8042B1A60F8E71868704700BF20
-:1023240000300240014B1868704700BF0030024083
-:10233400044B9A6809B1104301E022EA0000986056
-:10234400704700BF002004E0044B1A69002ABFBF95
-:10235400034A5A6002F188325A607047003C0240D6
-:1023640023016745024A136943F000431361704730
-:10237400003C0240014BD860704700BF003C024063
-:102384000E4BDA68D20310D4DA68D1060FD4DA68B7
-:10239400D2050ED4DA6812F0EF0F0CD1DB6813F01B
-:1023A400020F14BF0820092070470120704706203F
-:1023B4007047022070470720704700BF003C02406E
-:1023C40007B509238DF80730FFF7DAFF8DF807000A
-:1023D4009DF80730012BF7D09DF8070003B05DF896
-:1023E40004FB000070B5064641B1012908D002295A
-:1023F4000CBF4FF400754FF4407503E00D4601E047
-:102404004FF48075FFF7DCFF09281ED10F4C2369B8
-:1024140023F440732361216929432161236923F053
-:10242400F8032361236943F002031E4326612369F1
-:1024340043F480332361FFF7C3FF236923F00203CE
-:102444002361236923F0F803236170BD003C02403B
-:1024540070B505460E46FFF7B3FF092811D1094CA4
-:10246400236923F44073236123692361236943F0BF
-:10247400010323612E70FFF7A3FF236923F00103F7
-:10248400236170BD003C024070B543688668856A6C
-:102494000468416B46EA0302C3681A4303691A439A
-:1024A40043691A4383691A43C3691A43036A1A4383
-:1024B400436A1343C26A2B431A43036B1343A200B8
-:1024C40002F120420B43082E136002BF136843F04D
-:1024D40040031360B1F5801F816B12D18CB14FF0B2
-:1024E40020435C681E6846F480161E601E6846F42D
-:1024F40080761E600E6924F47004013E44EA06549A
-:102504005C608C690B6823434C6843EA04138C6851
-:1025140043EA0423CC6843EA04430C69496943EA67
-:10252400045343EA0163B5F5804F536010D1C16B86
-:1025340088690B680343486843EA0013886843EAE0
-:1025440000230869496943EA005343EA016301E04F
-:102554006FF07043C2F8043170BD0000800000F1D8
-:10256400204019B1036843F0010302E00268024B02
-:1025740013400360704700BFFEFF0F00F0B50E6804
-:1025840000220123934003EA060E9E452AD15500FA
-:1025940003230468AB40DB431C4004600C790768E8
-:1025A40004FA05FC013C4CEA0707012C076011D82A
-:1025B40084684F791C4084608468AF4027438760F7
-:1025C400446824EA0E0444608C7947689440A4B2B9
-:1025D4003C434460C4682340C360CB79C468AB40C7
-:1025E4002343C3600132102ACBD1F0BD4FF6FF73F1
-:1025F40003600023037143718371C37170470369DE
-:10260400194214BF0120002070470AB101837047AA
-:102614004183704701F00703C90800EB810010B53E
-:102624009B00046A0F21994024EA01010162016AB6
-:102634009A401143016210BD08B5134B984207D16B
-:102644004FF40010012100F0C1F94FF4001014E020
-:102654000E4B984207D14FF48000012100F0B6F9E7
-:102664004FF4800009E00A4B98420BD14FF400006C
-:10267400012100F0ABF94FF400000021BDE808404F
-:1026840000F0A4B908BD00BF005400400058004049
-:10269400005C00407FB5868826F03F060446360479
-:1026A40068460D46360C00F0F9F8029A2C48B2FB45
-:1026B400F0F081B20E43A68023882A4E23F0010352
-:1026C4001B041B0C23802B68B3420AD85B00013126
-:1026D400B2FBF3F39BB2032B89B298BF042321848A
-:1026E40023E0EE884BF6FF718E421BBF19214B434A
-:1026F40003EB4303B2FBF3F315BF9BB2B2FBF3F35B
-:1027040043F480439BB2C3F30B020AB943F00103C1
-:102714004FF4967101FB00F24FF47A7192FBF1F2DF
-:10272400013292B243F400432284A383238869894B
-:10273400AA889BB243F001032380238823F4816396
-:1027440023F002031B040A431B0C13439BB2238094
-:102754002A89AB8913439BB2238104B070BD00BFA7
-:1027640040420F00A086010041F288330360002339
-:1027740083804BF6FF72038143814FF48043C28010
-:1027840083817047038819B19BB243F0010303E0CE
-:1027940023F001031B041B0C03807047038819B149
-:1027A4009BB243F4806303E023F480631B041B0C9B
-:1027B40003807047838A9AB2038B10B542EA0343BD
-:1027C40021F07F4404EA0300431A5842584110BDE3
-:1027D400014B1860704700BF00300040014B586047
-:1027E400704700BF00300040014B9860704700BF45
-:1027F40000300040024B4AF6AA221A60704700BF1C
-:1028040000300040024B4CF6CC421A60704700BFC7
-:1028140000300040014B1860704700BF20000E429A
-:10282400034B5B68184214BF01200020704700BFAF
-:1028340000700040064BB0F5402F15BF1A685A6867
-:1028440042EA800042F4402214BF18605A60704784
-:10285400007000400E4B1A68002142F001021A6019
-:1028640099601A6822F0A85222F410221A60094AC8
-:102874005A60094AC3F8842002F18062C3F88820B0
-:102884001A6822F480221A60D960C3F88C10704749
-:102894000038024010300024003000201D4A9368A4
-:1028A40003F00C03042B10B503D0082B03D01A4BF0
-:1028B40018E01A4B16E05168536811F4800F03F0C6
-:1028C4003F03516814BF154A134AB2FBF3F3114A8C
-:1028D4005268C2F30142C1F3881101324B435200E2
-:1028E400B3FBF2F30B4A036093680D49C3F303137C
-:1028F400CC5C0368E34043609468C4F382240C5DB9
-:1029040023FA04F484609268C2F342328A5CD340AE
-:10291400C36010BD003802400024F40040787D01FB
-:1029240001000020044B1A6B09B1104301E022EAB4
-:1029340000001863704700BF00380240044B9A6BD4
-:1029440009B1104301E022EA00009863704700BF18
-:1029540000380240044B1A6C09B1104301E022EA2A
-:1029640000001864704700BF00380240044B5A6CE2
-:1029740009B1104301E022EA00005864704700BF27
-:1029840000380240044B1A6909B1104301E022EAFD
-:1029940000001861704700BF00380240044B5A69B8
-:1029A40009B1104301E022EA00005861704700BFFA
-:1029B40000380240044B9A6909B1104301E022EA4D
-:1029C40000009861704700BF00380240044B1A6A47
-:1029D40009B1104301E022EA00001862704700BF09
-:1029E40000380240044B5A6A09B1104301E022EA5C
-:1029F40000005862704700BF003802404209012AB3
-:102A0400074B01D11B6803E0022A0CBF1B6F5B6FED
-:102A140000F01F0023FA00F000F00100704700BF2F
-:102A24000038024082B000230193054B0193019BBF
-:102A340003EB80000190019B196002B0704700BF56
-:102A44005028004082B000230193054B0193019B61
-:102A540003EB80000190019B186802B0704700BF2F
-:102A64005028004008B5254B984207D14FF48050B8
-:102A74000121FFF7B7FF4FF4805039E0204B984213
-:102A840007D14FF480400121FFF7A0FF4FF48040AD
-:102A940009E01C4B98420BD14FF400400121FFF791
-:102AA40095FF4FF400400021BDE80840FFF78EBFBA
-:102AB400154B984207D14FF400500121FFF792FFC4
-:102AC4004FF4005014E0114B984207D14FF480109A
-:102AD4000121FFF787FF4FF4801009E00C4B984267
-:102AE4000BD14FF400100121FFF77CFF4FF40010CD
-:102AF4000021BDE80840FFF775BF08BD0030014064
-:102B040000380040003C00400034014000500140C7
-:102B14000054014003884A8810B503F441540B88DB
-:102B240013438A881343CA8813430A8913434A897F
-:102B340013438A891343CA89134323439BB20380F3
-:102B4400838B23F400631B041B0C83830B8A038293
-:102B540010BD0023038043808380C38003814381AD
-:102B64008381C381072303827047038819B19BB211
-:102B740043F0400303E023F040031B041B0C0380D9
-:102B84007047808980B270478181704703891942F8
-:102B940014BF0120002070477FB5038ACA889BB206
-:102BA40023F440531343038283890E469BB223F4D8
-:102BB400B053098923F00C02B3880B4371890B438A
-:102BC4009BB213438381838AB2899BB223F44073FB
-:102BD4001343838204466846FFF760FE1A4B9C4207
-:102BE40003D003F580639C4201D1039D00E0029D64
-:102BF400A38931681BB2002B4FF0190202FB05F2C6
-:102C0400B4BF4D008D00B2FBF5F5A2896426B5FB77
-:102C1400F6F00001010912B2002A06FB1153ADBF00
-:102C24001A01D90032313232B5BFB1FBF6F2B2FB30
-:102C3400F6F302F0070203F00F03B4BF1043184386
-:102C440080B2208104B070BD00100140838919B1A5
-:102C54009BB243F4005303E023F400531B041B0C06
-:102C640083817047C1F3080181807047038819424A
-:102C740014BF01200020704710B5431E0A4491423E
-:102C840004D011F8014B03F8014FF8E710BD0244DA
-:102C94000346934202D003F8011BFAE77047000091
-:102CA4000400000001030000010000000100000016
-:102CB40003000000010000000F0000000F000000EE
-:102CC40000000000EE2F0008001802401000000071
-:102CD40006040000F32F000800180240080000005A
-:102CE40006030100F62F000800180240020000004D
-:102CF40006010100FD2F0008001802400400000036
-:102D040006020100000000000000000001424F4FD5
-:102D1400544C4F414445520000000000002A2A0050
-:102D2400000000000000000000000000005400400B
-:102D340000040240400000000600040000040240B9
-:102D4400000200000900040000002000801A0600B0
-:102D5400004000001F2000000000000000000000F0
-:102D6400005800400014024002000000010004006A
-:102D740000140240010000000000040000004000B4
-:102D8400801A0600FFBF000021220000000000009E
-:102D940001160008010003008200070084000700F8
-:102DA400010003000200030040000300800007004C
-:102DB400840007000000010000000000000000087B
-:102DC400004000080080000800C00008000001085E
-:102DD40000000208000004080000060800000808BB
-:102DE40000000A0800000C0800000E08000008009B
-:102DF400100018002000280030003800400048006F
-:102E040050005800000000006410B71DC8206E3B3D
-:102E1400AC30D9269041DC76F4516B6B5861B24DDD
-:102E24003C7105502083B8ED44930FF0E8A3D6D647
-:102E34008CB361CBB0C2649BD4D2D38678E20AA0AF
-:102E44001CF2BDBD537475636B20627574746F6E30
-:102E540020726567697374657220697320696E7680
-:102E6400616C69642C20636C656172696E672E0005
-:102E7400427574746F6E206973207075736865642D
-:102E840020617420626F6F740069636534306C7004
-:102E94002E630043444F4E45206E6F74206C6F7751
-:102EA40020647572696E672072657365740043529D
-:102EB40045534554206E6F742068696768206475B3
-:102EC40072696E6720726573657400446973706C0F
-:102ED400617920627573792D776169742074696DE5
-:102EE400656F757420657870697265642100436F3D
-:102EF4006E6669677572696E672046504741206641
-:102F0400726F6D2062697473747265616D20696E8D
-:102F140020666C6173682E2E2E004E6F204650473B
-:102F2400412062697473747265616D20696E2066F4
-:102F34006C6173682E0046616C6C696E6720626117
-:102F4400636B20746F204E56434D2E00465047410C
-:102F54002043444F4E452074696D656F7574206538
-:102F640078706972656421004650474120636F6E32
-:102F740066696775726174696F6E206661696C65F4
-:102F8400642E204973207468697320612062696724
-:102F9400626F6172643F00465047412076657273E8
-:102FA400696F6E3A2000446973706C617920696EB0
-:102FB400697469616C697A656420616674657220FC
-:102FC4000020726574726965732E00446973706CB5
-:102FD400617920696E697469616C697A6174696F79
-:102FE4006E206661696C65642E004261636B0055F6
-:102FF400700053656C65637400446F776E00637290
-:10300400632E63006932632E630049324320646592
-:1030140076696365204944206F7574206F66206269
-:103024006F756E647320256420286D61783A2025BD
-:103034006429006F6E007370692E63002069732029
-:103044006F7574736964652073797374656D206634
-:103054006C6173680D0A0073797374656D5F666CD7
-:103064006173685F657261736528002C2000290D07
-:103074000A006661696C656420746F20657261730F
-:103084006520736563746F72200073797374656D62
-:103094005F666C6173685F77726974652800666146
-:1030A400696C656420746F2077726974652061644B
-:1030B40064726573732000496E76616C696420667E
-:1030C40069726D7761726520646573637269707487
-:1030D400696F6E2100436865636B73756D6D696E0E
-:1030E40067206669726D77617265207570646174BA
-:1030F4006500496E76616C6964206669726D7761FA
-:1031040072652043524320696E2053504920666CF7
-:10311400617368210065726173655F6F6C645F66DB
-:1031240069726D776172650077726974655F6E6547
-:10313400775F6669726D7761726500436865636B7A
-:1031440073756D6D696E6720002062797465730D07
-:103154000A00436865636B73756D202D2077616E7B
-:10316400746564200020676F7420004F75722069B5
-:103174006E7465726E616C20666C61736820636F37
-:103184006E74656E747320617265206261642028B8
-:10319400636865636B73756D206661696C6564292A
-:1031A400212054686973206973207265616C6C799D
-:1031B4002062616421004F75722070726576696FB8
-:1031C4007573206669726D776172652075706461CC
-:1031D4007465206661696C65642C2061626F727429
-:1031E400696E67207570646174652E004E65772082
-:1031F4006669726D776172652069732061766169B1
-:103204006C61626C6521004C6F6164696E67207249
-:1032140065636F76657279206669726D7761726530
-:10322400004661696C656420746F206C6F61642072
-:103234007265636F76657279206669726D77617203
-:10324400652C20737472696B65206F6E652E205433
-:10325400727920616761696E2E004661696C6564EC
-:1032640020746F206C6F6164207265636F76657281
-:1032740079206669726D776172652C207374726946
-:103284006B652074776F2E205472792061676169B1
-:103294006E2E004661696C656420746F206C6F61EA
-:1032A40064207265636F76657279206669726D77E2
-:1032B4006172652C20737472696B65207468726521
-:1032C400652E2053414420574154434800484152FD
-:1032D40044204641554C54006578697420737461E8
-:1032E4006E64627900205F5F5F5F202020202020D1
-:1032F4002020202020202020205F5F002F5C202021
-:103304005F605C20202020202020202020202F27E8
-:103314005F5F605C005C205C2C5C4C5C5F5C20202C
-:1033240020205F5F5F202F5C205C2F5C205C2020CE
-:103334005F5F20205F5F20205F5F20205F5F202091
-:103344005F5F00205C2F5F5C5F5F205C20202F2785
-:10335400205F20605C205C205C205C205C2F5C2073
-:103364005C2F5C205C2F5C205C2F5C205C2F5C203D
-:103374005C002020202F5C205C4C5C205C2F5C20B7
-:103384005C2F5C205C205C205C5F5C205C205C200B
-:103394005C5F2F205C5F2F205C205C205C5F5C20E6
-:1033A4005C002020205C20605C5F5F5F5F5C205CD1
-:1033B4005F5C205C5F5C205C5F5F5F5F2F5C205C18
-:1033C4005F5F5F785F5F5F2F275C2F605F5F5F5F8A
-:1033D400205C00202020205C2F5F5F5F5F5F2F5CFC
-:1033E4002F5F2F5C2F5F2F5C2F5F5F5F2F20205C90
-:1033F4002F5F5F2F2F5F5F2F202020602F5F5F5F85
-:103404002F3E205C0020202020202020202020206F
-:1034140020202020202020202020202020202020A8
-:103424002020202020202020202020202020202098
-:103434002F5C5F5F5F2F0020202020202020202091
-:103444002020202020202020202020202020202078
-:103454002020202020202020202020202020202068
-:1034640020205C2F5F5F2F004C61737420666972AB
-:103474006D7761726520626F6F742077617320735A
-:103484007461626C653B20636C6561722073747255
-:10349400696B657300486F6C6420646F776E2055A8
-:1034A40050202B204241434B20666F7220352073FD
-:1034B4006563732E20746F20666F7263652D626F6F
-:1034C4006F7420505246004669726D7761726520B0
-:1034D400697320657261736564005761746368641D
-:1034E4006F6720636175736564206120726573651D
-:1034F4007400536F667477617265206661696C75D8
-:1035040072652063617573656420612072657365FB
-:1035140074004661696C656420746F207374617211
-:1035240074206669726D776172652C207374726998
-:103534006B652074687265652E004661696C65640C
-:1035440020746F207374617274206669726D776180
-:1035540072652C20737472696B652074776F2E000A
-:103564004661696C656420746F20737461727420A1
-:103574006669726D776172652C20737472696B650C
-:10358400206F6E652E00466F7263652D626F6F74D7
-:10359400696E67207265636F76657279206D6F64FA
-:1035A400652E2E2E00426F6F74696E6720666972F5
-:1035B4006D77617265204020002E2E2E0D0A0D0AB3
-:1035C40000536F667477617265206661696C757209
-:1035D400653B20726573657474696E67210041539D
-:1035E400534552543A20002020003A004153534599
-:1035F4005254004153534552544E002A2A2A20570C
-:103604005446200053544D33320053544D3332202A
-:103614007065726970686572616C206C6962726150
-:103624007279207472697070656420616E206173B0
-:10363400736572740043524F414B204F4F4D00004D
-:10364400FF0000000001020304010203040607084E
-:043654000900000069
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/boot_spalding_evt@1431479105.hex b/bin/boot/boot_spalding_evt@1431479105.hex
deleted file mode 100644
index 7d0a6a601a..0000000000
--- a/bin/boot/boot_spalding_evt@1431479105.hex
+++ /dev/null
@@ -1,2751 +0,0 @@
-:020000040800F2
-:1000000068200020B501000801020008A9180008B6
-:1000100001020008010200080102000800000000BF
-:1000200000000000000000000000000001020008C5
-:10003000010200080000000001020008010200089F
-:100040000102000801020008010200080102000884
-:100050000102000801020008010200080102000874
-:100060000102000801020008010200080102000864
-:100070000102000801020008010200080102000854
-:100080000102000801020008010200080102000844
-:100090000102000801020008010200080102000834
-:1000A0000102000801020008010200080102000824
-:1000B000010200080102000801020008C51300083F
-:1000C000D1130008DD130008E9130008010200083D
-:1000D00001020008010200080102000801020008F4
-:1000E00001020008010200080102000801020008E4
-:1000F00001020008010200080102000801020008D4
-:1001000001020008010200080102000801020008C3
-:1001100001020008010200080102000801020008B3
-:1001200001020008010200080102000801020008A3
-:100130000102000801020008010200080102000893
-:100140000102000801020008010200080102000883
-:100150000102000801020008010200080102000873
-:100160000102000801020008010200080102000863
-:100170000102000801020008010200080102000853
-:040180000102000870
-:1001840041A3525576332E302D6265746131312D81
-:1001940038342D673532376464626500000000002E
-:0F01A4000000000035323764646265000000011E
-:1001B400002100F004B80C4B5B58435004310B4849
-:1001C4000B4B42189A42FFF4F6AF0A4A00F003B808
-:1001D400002342F8043B084B9A42FFF4F9AF01F0C4
-:1001E4009DFE01F091FB70478CAB000800000020DD
-:1001F400140000201400002068000020FFF7FEBF58
-:1002040030B501208BB002F0E5FA002401902546B8
-:10021400E0B200F0BBFB01AB08B9185519E01A5D58
-:10022400042A10DD164800F025FD02A920220198B9
-:1002340001F03CFE02A800F01DFD0120002102F0A7
-:10024400B9FA00201AE00132D2B2052A1A55A8BF21
-:1002540001250134042CDBD1019C54B1094800F080
-:1002640009FD204602A9202201F020FE02A800F088
-:1002740001FD0120214602F09DFA28460BB030BD55
-:1002840048A4000874A4000808B500F087FA80F0B8
-:100294000100C0B208BD000008B54FF480610348F6
-:1002A40002F073F8003018BF012008BD00180240A6
-:1002B4002DE9F0434A4D89B0284600F00BFD28464D
-:1002C4000D21052208AE02F06BF8052228460E2106
-:1002D40002F066F84FF4005346F81C3D0024012751
-:1002E4004FF00209284631468DF80A408DF80B403C
-:1002F4008DF808908DF8097001F0FEFF4FF48043EB
-:1003040028463146019301F0F7FF4FF48053284605
-:10031400314601934FF400788DF808408DF80A4077
-:1003240001F0EAFF284631468DF808408DF80B703D
-:10033400CDF8048001F0E0FF4FF480632846314695
-:1003440001938DF808408DF80B4001F0D5FF4FF470
-:1003540080732846314601938DF808708DF80B4060
-:1003640001F0CAFF4FF40043284631460193A5F536
-:1003740044451C4E8DF80A708DF80B4001F0BCFF0B
-:1003840039464FF4001002F0B9F9174B3360284690
-:1003940002F030FA03A802F0A4FA4FF44043ADF897
-:1003A4000C3039464FF482733068ADF80E30ADF836
-:1003B4001040ADF81290ADF81470ADF8168001F04D
-:1003C40019F803A9ADF818002846ADF81A4002F050
-:1003D40069FA2846394602F090FA09B0BDE8F0837C
-:1003E40000180240140000200024F40008B5022084
-:1003F40001F046FD012000F0B7FA022001F040FDB3
-:100404000120BDE8084000F09DBA000010B5044684
-:100414000548022102F07FFA0028F9D0214602485B
-:10042400BDE8104002F075BA0054014038B501220D
-:1004340004460D4628484FF4807101F0ACFF0120BA
-:1004440001F01EFD24484FF40041002201F0A3FFF7
-:100454004FF480710022204801F09DFF012001F03B
-:100464000FFD4FF400411C48012201F094FF0120CC
-:1004740001F006FD18484FF4007101F086FF18B131
-:100484001648174A68210AE013484FF4004101F066
-:100494007CFF08B1254404E01048124A692101F0A8
-:1004A400A9FCAC4204D014F8010BFFF7AFFFF8E746
-:1004B40009484FF48071012201F06DFF08240020E7
-:1004C400FFF7A4FF013CFAD103484FF40071BDE8E3
-:1004D400384001F05ABF00BF001802408DA4000844
-:1004E40097A40008B2A4000810B54FF48071044624
-:1004F4000022054801F04FFF642001F0BBFC2046B8
-:10050400BDE81040FFF782BF0018024008B5074855
-:10051400802102F000FA0028F9D105484FF48071D7
-:100524000122BDE8084001F036BF00BF005401407D
-:100534000018024010B540F2F514FFF7ADFE50B1BB
-:10054400013C04D1054800F095FB204610BD642011
-:1005540001F090FCF1E7012010BD00BFCFA400081A
-:1005640010B504460420FFF7BFFF2046FFF74EFFF7
-:10057400BDE81040FFF7CABF10B504460120FFF7DD
-:10058400B3FFE0B2FFF742FFC4F30720FFF73EFFDB
-:10059400C4F30740FFF73AFF200EFFF737FFBDE82B
-:1005A4001040FFF7B3BF000010B5FFF781FE1848F5
-:1005B40047F6DE01FFF73AFFFFF718FF002401209A
-:1005C400FFF7CEFFFFF7B6FF78B10320FFF78CFFEC
-:1005D400FFF79CFF0F4800F063FB204600F06EFB22
-:1005E4000D48BDE8104000F045BB094847F6DE0160
-:1005F4000134FFF71BFF152CE1D1084800F03AFB4A
-:100604000220FFF771FFBDE81040FFF77FBF00BF76
-:10061400262A0008F2A400080DA5000817A5000862
-:1006240008B55D224B1C504300EB5300074BB0FB55
-:10063400F1F01A78C0B2824207D01870FFF79CFF1D
-:100644000220BDE80840FFF78BBF08BD0000002072
-:1006540008B5FFF791FF0320BDE80840FFF780BF0E
-:1006640008B50220FFF740FFBDE80840FFF74EBF82
-:1006740001F1C04102F0C4B970B543489AB000F02A
-:1006840029FB424800F026FB414800F023FB414B84
-:1006940093E8030001AC84E803003C48214601F0E0
-:1006A4002BFE3A480421012201F075FE00250223A5
-:1006B400029535488DF80830072103230C228DF864
-:1006C4000930019501F06CFE80232F4801932146E7
-:1006D40001F012FEEBB2022B04D02C48A9B20C227A
-:1006E40001F05EFE0135102DF4D14FF6FB7327485F
-:1006F4000193214601F000FE0226314601362448CA
-:100704000C22B6B201F04CFE102EF6D14FF6FC735B
-:1007140021461F48019301F0EFFD042100221B48EC
-:100724001D4D01F038FE0A2001F0A4FB0122042132
-:10073400164801F030FE1E2001F09CFB012001460A
-:1007440001F0C4FF0FCD03AC0FC495E8070084E8A3
-:100754000700402200210AA802F05BF902230B9350
-:1007640008230C934FF4805312934FF400531393C4
-:100774000AA803AB18930D9601F03CFD002001215B
-:1007840001F0AAFD1AB070BD00040240000C024042
-:100794000010024004A300080CA300080E4B98228A
-:1007A4001A80A3F68A231B88DBB2512B07D10B4B8B
-:1007B4001888C0B2B0F152025042504100E000200B
-:1007C40030B1074B1888C0B2B0F1590358425841B0
-:1007D400014BF0221A807047AA0A006022000060D0
-:1007E4002400006002460B460420502100F0C9BDDD
-:1007F40002460B460420502100F0D8BD032873B5EF
-:100804000E4603D0042804D001F00AFB14251C4C26
-:1008140001E01C4C162528460DF10701FFF7E2FF05
-:1008240008B900202AE02378AEB10BB1013323E0EC
-:100834009DF8071021F0060141F0020128468DF8C9
-:100844000710FFF7D5FF0028EBD001250320257002
-:1008540001F016FB11E05AB2012A0CDC9DF80710D6
-:10086400284601F0F9018DF80710FFF7C1FF0028B1
-:10087400D7D0267001E0013B2370012002B070BD87
-:10088400180000201900002073B5254800F022FA52
-:1008940002254FF410730024012621480093694671
-:1008A4008DF804508DF805508DF806608DF80740DA
-:1008B40001F022FD1A480621042201F071FD0422F0
-:1008C4000921174801F06CFD154800F01DFA154880
-:1008D40000F000FA42F20C036946124800938DF8C6
-:1008E40005508DF804608DF806408DF8074001F03E
-:1008F40003FD0C4800F008FA042000F0DFFC204659
-:100904006946FFF76FFF9DF80050B54205D10320FB
-:100914002946FFF773FF284600E0204602B070BD69
-:10092400000402400014024010B50446042000F004
-:10093400C5FC21460420FFF761FF0420BDE81040F8
-:1009440000F0EABC38B5074C0546204600F0C2F971
-:1009540020462A46042101F01EFD2046BDE8384009
-:1009640000F0D2B90014024038B5074C05462046C1
-:1009740000F0B0F920462A46082101F00CFD20467B
-:10098400BDE8384000F0C0B90014024038B5094C45
-:1009940004EB0014606800F09DF92189606801F09F
-:1009A400F4FC0546606800F0AFF9D5F1010038BFEA
-:1009B400002038BD28A3000838B500242546E0B23D
-:1009C400FFF7E4FFA04001340543042CEDB2F6D157
-:1009D400284638BD73B54FF480400121154C01F011
-:1009E4008DFE04F1400654F80A0C00F073F96846D1
-:1009F40001F0C2FC02238DF80530237854F80A0C68
-:100A04008DF80730694654F8063C009300258DF8AC
-:100A14000450103401F070FC54F81A0C00F074F90E
-:100A2400B442E0D14FF48040294601F067FE02B0A1
-:100A340070BD00BF36A3000808B5054B1B781BB971
-:100A44000448322101F0E2F9BDE8084001F012BB8C
-:100A54001A0000204AA50008114B1B7870B5054602
-:100A64000C461BB90F48382101F0D0F9032906D9E7
-:100A74008E083146FFF7E0FFB6003544A41B1CB9CD
-:100A8400BDE8704001F004BB00231846EA5C013362
-:100A9400A34242EA0020F9D1BDE8704001F0E4BA73
-:100AA4001A0000204AA50008024B1A780AB901224C
-:100AB4001A7070471A00002008B5084B1A781AB942
-:100AC40007482B2101F0A2F901214FF480505970FD
-:100AD40001F0F0FDBDE8084001F0C0BA1A000020A2
-:100AE4004AA5000808B5074B1A781AB906485121D7
-:100AF40001F08CF9002159704FF48050BDE8084092
-:100B040001F0D8BD1A0000204AA5000870B50C46B3
-:100B14000546A608FFF7D0FF28463146FFF78CFFAD
-:100B240004F0030105EB8600FFF796FF0446FFF788
-:100B3400D9FF204670BD70B5A0B00D460646FFF73C
-:100B4400BBFF2C467119802CC4EB0101684608D9FF
-:100B54008022FFF78DFD68462021FFF76DFF803C62
-:100B6400F0E72246FFF784FD21466846FFF774FF4D
-:100B74000446FFF7B7FF204620B070BD2DE9F041D1
-:100B8400284C86B0204600F0A5F84FF480200121BF
-:100B940001F0A8FD20460A21072201F001FC06AE5F
-:100BA400072220460B2101F0FBFB002501274FF013
-:100BB40002084FF48063204669468DF8065046F8D3
-:100BC400183D8DF807708DF804808DF8058001F0CC
-:100BD40093FB4FF400632046694600938DF804802C
-:100BE40001F08AFBADF80C50ADF80E50ADF8105082
-:100BF400ADF814500C4D4FF46133029328460C2386
-:100C040002A9ADF8123001F08DFE2846394601F0F4
-:100C1400E1FE204600F078F8044B1F7006B0BDE8F2
-:100C2400F08100BF00080240004800401C00002082
-:100C3400084B1B7810B504465BB10748402101F00E
-:100C4400D9FE0028F9D021460348BDE8104001F040
-:100C5400CDBE10BD1C0000200048004008B5FFF7C1
-:100C6400E7FF0348402101F0C5FE0028F9D008BD84
-:100C740000480040094B1B7810B573B1441E14F8AA
-:100C8400010F10B1FFF7EAFFF9E70D20FFF7E6FFC8
-:100C94000A20BDE81040FFF7E1BF10BD1C00002092
-:100CA400054B1B7810B533B1441E14F8010F10B175
-:100CB400FFF7D4FFF9E710BD1C0000201FB50C227C
-:100CC40001A901F0F3F801A8FFF7EAFF05B05DF808
-:100CD40004FB000000F13F4000F57E00C0F38720D4
-:100CE40008280BD8064A135C591C115433B9054B18
-:100CF40001211A6B01FA00F010431863704700BF1A
-:100D04001D0000200038024000F13F4000F57E0045
-:100D1400C0F3872008280ED8074A135C5BB1013B57
-:100D2400DBB213543BB9054B01211A6B01FA00F0F5
-:100D340022EA0000186370471D00002000380240BA
-:100D440002460068838823F4E0631B041B0C838041
-:100D540003889BB243F40073038008230020517579
-:100D640013751076704737B504460D46FFF7B2FF8A
-:100D74000023204669468DF804308DF805308DF83F
-:100D84000730009501F0B8FA2046FFF7BDFF03B025
-:100D940030BD00000A4B10B5342400FB0434236B2F
-:100DA4006BB10A2001F06CF86068A168FFF7DBFF03
-:100DB40020696169FFF7D7FF236B0120984710BDB5
-:100DC40070A30008F7B5044616460D461F46FFF704
-:100DD40081FF022001238DF804008DF805008DF8B1
-:100DE40006302046002369468DF80730009501F04F
-:100DF40083FA204631463A4601F0D2FA2046FFF7FC
-:100E040083FF03B0F0BD0000037D082B10B504463A
-:100E140007D10268938823F4C0631B041B0C9380DE
-:100E240083E0434A006802EB8303996E01F08CFB74
-:100E340000287AD0237D072B71D8DFE803F0040B58
-:100E44001A22323A596D227A236802F0FE021A827B
-:100E5400012305E02368A27A1A82627A12B102237E
-:100E6400237562E09A8892B242F480629A800623E3
-:100E7400F6E723681A8892B242F480721A80032338
-:100E8400EEE7237A226843F001031382E37A012B0D
-:100E940005D1138823F480631B041B0C13800423E3
-:100EA400DEE723689A8892B242F480629A8005232E
-:100EB400D6E72368227B198A23699954237BE27A33
-:100EC4000133DBB2591C9142237307D12268138882
-:100ED40023F480631B041B0C138026E0934224D16B
-:100EE4002268938823F480631B041B0C938013E013
-:100EF400217B236922685B5C1382237BE17A0133C3
-:100F0400DBB29942237310D1938823F480631B04CA
-:100F14001B0C93800723A3E72046012101E0204610
-:100F24000021BDE81040FFF70BBF002010BD00BF3B
-:100F340070A300087FB51D4E1C2303FB0063054608
-:100F44001B790BB9FFF726FF194B342405FB043436
-:100F54006068A168A289A37BFFF734FF228BA37E7C
-:100F640020696169FFF72EFFE069012101F0BAFBF6
-:100F7400684601F0C3FA0F4A236A009393424FF480
-:100F84008063ADF80A304FF01C0303FB05F588BFFE
-:100F9400626A705988BFADF80620694601F040FACC
-:100FA4007059012101F0B8FA04B070BD2800002086
-:100FB40070A30008A086010073B504460E46002500
-:100FC400FFF788FE0123204669468DF80430009619
-:100FD4008DF805508DF8075001F08EF92046B1B216
-:100FE4002A4601F0D8F92046FFF78EFE02B070BD04
-:100FF400094B10B5342400FB0434236B5BB100208F
-:1010040098476068A168FFF7D7FF20696169BDE868
-:101014001040FFF7D1BF10BD70A300081C23104A75
-:10102400434370B50546D058D61801F0CBF90D4BA3
-:10103400342405FB04340021E06901F053FB3379C7
-:1010440023B92846BDE87040FFF7D2BF6068A168A5
-:10105400FFF789FE20696169BDE87040FFF783BE30
-:101064002800002070A300082DE9F74F4A4E9B4644
-:1010740096F838300F469246B0461BB9474840F2BE
-:10108400951104E0042804D944484FF4CB7100F0CE
-:10109400BDFE434B18444FF01C0990F8885009FBDF
-:1010A40005F906EB090423790BB9002071E056F821
-:1010B4000900038B980713D49DF830306772E372EC
-:1010C40000270D9B84F808A084F80AB027732775BD
-:1010D4002361E78256F80900012101F029FA20E092
-:1010E4002846FFF79BFF2846FFF724FF56F8092000
-:1010F4002C48138B9907DFD50138FAD1D5E7227E26
-:1011040022B1019A511E0191002AF8D100222276BF
-:10111400019A02B3227D082A13D1677D237D082B0F
-:1011240026D023681A8892B242F480721A809A8870
-:1011340092B242F440729A8001222276194A0192B4
-:10114400DFE7E28AB2F57A7F05D20132E28201203A
-:1011540000F096FEE2E79A8822F4E0621204120C90
-:101164009A801A8892B242F400721A800823237576
-:101174001C236B4358F803100A4B0A8B920707D5BC
-:10118400013BFAD12846FFF749FF2846FFF7D2FE74
-:10119400384603B0BDE8F08F2800002050A50008B1
-:1011A40070A3000880841E00017D0368082906D10D
-:1011B4009A8822F480721204120C9A8036E09A8A79
-:1011C400120505D59A8A22F400621204120C9A823E
-:1011D4009A8AD20505D59A8A22F480721204120CD6
-:1011E4009A829A8A52051ED59A8A22F4806212043F
-:1011F400120C04299A820AD1032202759A8822F4D5
-:10120400E0621204120C9A80002303760EE0012996
-:1012140009D19A8822F4E06212040021120C0175AB
-:101224009A80017602E00021FFF78ABD0020704712
-:101234002DE9F3411E4D1F4C0026DFF87C802B68FE
-:1012440044F80C3C1C2202FB0682002304F8083CF0
-:1012540013760822227295F828208DF8042001279D
-:101264000C2201A8237004F8013C63608DF805206A
-:101274008DF806308DF8077000F0BAFE95F8293025
-:101284008DF8043001A800F0B3FE3E4454F80C0C71
-:1012940001F098F8022E05F1340504F11C04CCD1B8
-:1012A400384688F83870FFF7A3FE02B0BDE8F08135
-:1012B40070A300083400002028000020124A13B54F
-:1012C40092F83810034621B9104840F2331100F067
-:1012D4009DFD042807D9052200920C480C4A40F2CF
-:1012E400351100F087FD0B490B441C2493F888004A
-:1012F40004FB002423790BB9FFF71CFE2379013387
-:10130400237102B010BD00BF2800002050A50008C2
-:1013140056A5000870A3000808B5104B93F83820B0
-:101324001AB90F4840F2451104E0042804D90C48C6
-:101334004FF4A37100F06AFD0A4A10441C2290F88D
-:10134400880002FB003213793BB1013BDBB213711D
-:101354001BB9BDE80840FFF761BE08BD28000020A6
-:1013640050A5000870A3000873B5069C00930E46B0
-:1013740015460194012132462B46FFF775FE02B053
-:1013840070BD07B500930123FFF7EEFF03B05DF8CE
-:1013940004FB73B5069C00930E4615460194002188
-:1013A40032462B46FFF760FE02B070BD1FB504AC99
-:1013B40004F8013D01230094FFF7EBFF04B010BDD6
-:1013C4000148FFF721BD00BF280000200148FFF7B6
-:1013D400EBBE00BF280000200148FFF715BD00BF89
-:1013E400440000200148FFF7DFBE00BF4400002096
-:1013F400FFF79ABA30B585B004460D46684601F049
-:1014040015F90DB9029805E0012D01D1039801E009
-:1014140000F006FDB4EB500F0ED8B0FBF4F000F072
-:1014240039FD002802DC0748272103E0082804DDF1
-:101434000448282100F0EAFC01200138C00080B2F1
-:1014440005B030BD82A50008B0F1006F10B50446A8
-:101454000BD20D48FFF724FC2046FFF72FFC0B4866
-:10146400FFF71EFC4FF0FF3010BD094A002352F86D
-:10147400041FA14202D851688C4202D301330B2BC2
-:10148400F5D1184610BD00BFFAA5000888A50008CC
-:10149400FCA300082DE9F04705462D480F461646E3
-:1014A4009946FFF7FDFB2846FFF708FC2948FFF79C
-:1014B400F7FB3846FFF702FC2748FFF7F1FB002F44
-:1014C4003FD02846FFF7C0FF0446781E2844FFF7A4
-:1014D400BBFF002C074637DB002835DBC4EB0008D4
-:1014E40008F101081EB1002041464A46B04700F009
-:1014F400E1FD1A4B012503EB440ABC421FDCF32037
-:1015040000F0EEFD0AEB4503002133F8020C00F075
-:101514001FFE09280BD01248FFF7C2FB2046FFF735
-:10152400CDFB1048FFF7A6FB00F0D2FD0CE01EB186
-:10153400284641464A46B04701340135DDE700F00C
-:10154400C7FD0120BDE8F0870020BDE8F08700BF9B
-:10155400A3A50008B7A50008BAA5000830A4000890
-:10156400BEA50008EDAA00082DE9F84606461F4866
-:1015740015468A461F46FFF793FB3046FFF79EFB4E
-:101584001B48FFF78DFB2846FFF798FB1948FFF728
-:1015940087FB00F08FFDF32000F0A2FD4FEAD51980
-:1015A4000024AC421DD0A0191AF8041000F006FE65
-:1015B40009280DD01048FFF773FB3046FFF77EFB78
-:1015C4000E48FFF757FB00F083FD0020BDE8F886C6
-:1015D4002FB1630603D1E0094946089AB84701349C
-:1015E400DFE700F075FD0120BDE8F886D6A5000808
-:1015F400B7A50008BAA50008EAA50008EDAA0008E6
-:1016040008B545F2555000F0ABFF042000F0AEFFE2
-:1016140040F6FF7000F0B0FF002000F0A1FF4FF48F
-:1016240080500121BDE8084000F038BD08B500F045
-:10163400B1FFBDE8084000F0A5BF08B57D2001F06A
-:10164400A5F8003018BF012008BD4900FEF7E8BF27
-:101654004B0803EB5000FEF7E3BF000070B586B003
-:101664000446FFF721FA01210020FEF7D9FF0420E8
-:1016740000F020FB03A8214600F06EFB03A800F055
-:101684007AFB08B928480BE02848FFF7F3FA04F17D
-:101694000C000499FFF74FFA059B984204D02448A4
-:1016A400FFF7E8FA01203DE0049D2248FFF7E2FA43
-:1016B4002946214A21480023FFF7ECFE049E2048D6
-:1016C400FFF7D8FA002504F1C0411E4B00953246BD
-:1016D4000C311A48FFF748FF1B48FFF7E1FA04985A
-:1016E400FFF7ECFA1948FFF7DBFA04991348FFF700
-:1016F4000DFA04461648FFF7D3FA0598FFF7DEFA09
-:101704001448FFF7CDFA2046FFF7D8FA1248FFF73E
-:10171400B1FA059B9C4204D01048FFF7ABFA0220B3
-:1017240000E0284606B070BD03A6000821A6000804
-:101734003EA6000861A600084F1600080000010834
-:1017440074A600085516000887A6000895A6000888
-:101754009EA60008B1A60008EDAA0008B7A60008D6
-:1017640008B5022000F0BEFAD8B3042000F0BAFA9B
-:1017740070B11C48FFF77EFA042000F0A7FA02209B
-:1017840000F0A4FA4FF40040BDE8084000F09EBA0F
-:101794001548FFF76FFA082000F098FA102000F0BF
-:1017A40095FA202000F092FA402000F08FFA4FF4CE
-:1017B4008010FFF753FF022807D1082000F07AFABF
-:1017C400102000F077FA00F04DFB042000F07EFAC0
-:1017D400022000F07BFA4FF40040BDE8084000F01E
-:1017E40069BA08BD02A7000838A7000810B5254843
-:1017F400FFF740FA4FF40010FFF730FF10B1022852
-:101804003AD809E0202000F061FA402000F05EFAA6
-:10181400802000F04FFA2FE0082000F04BFA10204F
-:1018240000F048FA202000F05DFA20B91648FFF7CE
-:1018340021FA202007E0402000F054FA58B9134858
-:10184400FFF718FA402000F035FA4FF4007000F06A
-:1018540031FA00F007FB0E48FFF70CFA082000F0FD
-:1018640035FA102000F032FA202000F02FFA402040
-:1018740000F02CFA002400E00124042000F026FAF1
-:10188400204610BD53A700086DA70008A6A70008AE
-:10189400DFA7000808B50248FFF7ECF900F0E7FA03
-:1018A40019A800081EF0040F0CBFEFF30880EFF333
-:1018B4000980FFF7EFBF70471FB504461048FFF7D4
-:1018C400D9F901A90C22204600F0F0FA01A8FFF78B
-:1018D400D1F92046FEF7BCFEFFF76EF8094B20F065
-:1018E400040018701C46FFF767F8237800F0FB002B
-:1018F400834201D000F0B6FA0A2000F0C1FAF2E700
-:101904000FA80008640000207FB54FF0805001212B
-:1019140000F0E8FE022000F04BFE012807D102206F
-:1019240000F050FE9248FFF7A5F900F0A0FA00215C
-:101934004FF0805000F0D6FEFFF720F98D48FFF7F6
-:1019440099F98D48FFF796F98C48FFF793F98C487D
-:10195400FFF790F98B48FFF78DF98B48FFF78AF969
-:101964008A48FFF787F98A48FFF784F98948FFF71F
-:1019740081F98948FFF77EF9FFF75AFCFEF784FFE7
-:1019840000F0BAF900F0D0F900210C2201A801F00E
-:1019940040F800F0C5F901A90C2200F087FA01A86B
-:1019A400FFF768F97348FFF765F97248FFF762F9C2
-:1019B4004FF4804000F096F990B17848FFF75AF957
-:1019C4004FF4804000F082F9082000F07FF91020E5
-:1019D40000F07CF9202000F079F9402000F076F93D
-:1019E400FEF74AFEFEF7F6FFFEF7DEFDFEF708FC03
-:1019F40008B16B4803E0FEF747FC10B16948FFF7F4
-:101A04005BFF00F08CF9802000F06CF918B18020A5
-:101A140000F05CF954E04FF4003000F063F9044640
-:101A240020B14FF4003000F051F92EE10120FEF70F
-:101A3400ADFFB0B12046FEF7A9FF90B15A48FFF7B9
-:101A440019F941F288340120FEF7A0FF98B1002073
-:101A5400FEF79CFF78B1012000F012FA013CF2D1AC
-:101A640013E1524B0CCB013301D0013203D1504866
-:101A7400FFF700F909E1FFF7E0FD18B3FFF7DDFD1B
-:101A840010B14C48FFF7F6F84FF4007000F02AF953
-:101A940010B14948FFF7EEF84FF4007000F016F962
-:101AA400102000F01FF9D0B14448FFF7E3F80820F4
-:101AB40000F00CF9102000F009F9FFF797FEF8B9CF
-:101AC4003F489CE74FF4007000F00CF90028D5D192
-:101AD400082000F0FBF8102000F0F8F80EE00820D1
-:101AE40000F000F920B13748FFF7C4F8102003E0F4
-:101AF4003548FFF7BFF8082000F0DCF8FFF730FEA8
-:101B04004FF4005000F0EEF804464FF4805000F01B
-:101B1400E9F8400040EA84044FF4006000F0E2F881
-:101B2400E4B22043C3B2072B0DD14FF4006000F0A0
-:101B3400CDF84FF4805000F0C9F84FF4005000F095
-:101B4400C5F822485BE70133DBB2023B4FF4006087
-:101B5400052B41D8DFE803F03C4003403C4000F053
-:101B6400B5F84FF4805000F0B1F84FF4005033E072
-:101B740024A80008EDAA000831A8000848A8000815
-:101B840061A800088FA80008BEA80008EEA80008F5
-:101B94001FA9000851A9000883A90008B4A90008D6
-:101BA400014550FE024550FEE1A90008000001086D
-:101BB40013AA000826AA00083EAA00085EAA000884
-:101BC400034550FE86AA0008ACAA0008044550FE4E
-:101BD40000F07CF84FF4805000F06CF8FFF710FD33
-:101BE400FFF724FD2B4B2C485D681E68FFF758F85F
-:101BF4002846FFF763F82948FFF752F800239A00B4
-:101C040002F1604202F5614201334FF0FF31082BCB
-:101C1400C2F88010C2F88011F1D1214B4FF4801228
-:101C240000241A635C639C631C645C6400F0DAFC4B
-:101C34001C48012100F06EFD21461A4800F06AFD9F
-:101C4400F120012100F072FD2146F12000F06EFD2B
-:101C54000120014600F076FD2146012000F072FDCE
-:101C64001148012100F07AFD21460F4800F076FD6D
-:101C74000E48012100F07EFD0C48214600F07AFD5B
-:101C840063B64FF0FF3EB54628470948FEF7F2FF1A
-:101C940013E700BF00000108D2AA0008E6AA000862
-:101CA400003802400010E022FFC9FEF6337F7704BB
-:101CB400EEAA000810B50446002000F08BFD40EAAF
-:101CC40004010020BDE8104000F074BD10B50446C6
-:101CD400002000F07FFD20EA04010020BDE8104050
-:101CE40000F068BD10B50446002000F073FD2042EA
-:101CF4000CBF0020012010BD08B54FF08050012119
-:101D040000F0F0FC012000F04DFC0120FFF7EAFF99
-:101D140020B90121BDE8084000F04CBD08BD704762
-:101D2400022000F057BD000008B5FFF7F9FF054B8E
-:101D34001968884204D00220BDE8084000F03ABD8A
-:101D440008BD00BF8401000808B50248FEF792FFF1
-:101D540000F088F80DAB00081FB504460C2201A85A
-:101D6400FEF786FC01AB03CB20601868A060204618
-:101D7400616004B010BD0068B0F10C0358425841D2
-:101D84007047000080B50546174610480E461C46AD
-:101D9400FEF786FF3846FEF783FF0D48FEF780FF07
-:101DA4002846FEF77DFF0B48FEF77AFF3046FEF724
-:101DB40085FF2CB10848FEF773FF2046FEF770FF3D
-:101DC4000648FEF757FFFFF7BFFF00BF2AAB000826
-:101DD40033AB000836AB000834AB0008EDAA0008AA
-:101DE4001FB506AA52F8044B039200921A462346E2
-:101DF400FFF7C8FF0CB41FB506AA52F8043B0392C0
-:101E04000092014AFFF7BEFF38AB000807B5002374
-:101E140000937246014BFFF7E3FF00BF3FAB00089E
-:101E2400744608B50548FEF73BFF2046FEF746FF1B
-:101E34000348FEF71FFFFFF787FF00BF47AB00080B
-:101E4400EDAA0008BFF34F8F044A054BD16801F493
-:101E5400E0610B43D360BFF34F8FFEE700ED00E07A
-:101E64000400FA0508B5FEF7FBFBFFF7EBFF08B526
-:101E7400FFF7E8FF1623584301387FF4FDAF70479E
-:101E840010B504462CB14FF47A70FFF7F3FF013C10
-:101E9400F8E710BD10B5B0FA80F400F029F8012875
-:101EA4000CBFC4F11F00C4F1200010BD0A2A30B5D4
-:101EB4001DDD0C46302304F8023B78234B700023CD
-:101EC4009D00C5F11C050F22AA400240EA40092AE0
-:101ED40001D8303202E00F2A02D85732D2B200E0E1
-:101EE4002022E2540133082BEAD100238B7230BD47
-:101EF40000F0AA33A0EB530000F0CC3300F03330F1
-:101F040000EB930000EB101000F00F3000EB1020FA
-:101F140000EB104000F03F00704700002D4BD3F859
-:101F2400882042F47002C3F888202B4B1A680021E1
-:101F340042F001021A6099601A6822F0847222F455
-:101F440080321A60254A5A601A6822F480221A6084
-:101F5400D9601A6C42F080521A64214A116841F423
-:101F6400404111609A689A609A689A609A6842F44B
-:101F740080529A601B4A5A601A6842F080721A6052
-:101F84001968154A8901FBD5174B40F203611960A2
-:101F9400936823F003039360936843F00203936010
-:101FA4000D4B9A6802F00C02082AF9D19A6822F4BF
-:101FB40000029A600D4AC3F884201A6842F08062D5
-:101FC4001A60054B1B681B01FBD5024B4FF00062E6
-:101FD4009A60704700ED00E00038024010300024A1
-:101FE400007000401040010F003C024000300050DF
-:101FF400C278037810B50AB3164A4478D268D2433B
-:10200400C2F30222C2F10401C9B204FA01F10F249D
-:1020140044FA02F28478C9B222400A4303F16043CD
-:1020240003F561431201D2B283F80023037801223D
-:10203400590903F01F0302FA03F306E059090122C8
-:1020440003F01F0302FA03F32031034A42F821305C
-:1020540010BD00BF00ED00E000E100E0014B0122F3
-:102064009A60704700300240014B1860186870474E
-:102074000030024000EB81018842044B03D050F849
-:10208400042B1A60F8E71868704700BF003002405C
-:10209400014B1868704700BF00300240044B9A6837
-:1020A40009B1104301E022EA00009860704700BFC4
-:1020B400002004E0044B1A69002A04DA034A5A6037
-:1020C40002F188325A607047003C024023016745A0
-:1020D400024B1A6942F000421A617047003C024008
-:1020E400014BD860704700BF003C02400E4BDA68D9
-:1020F400D00310D4DA68D1060FD4DA68D2050ED42E
-:10210400DA6812F0EF0F0CD1DB6813F0020F0CBF8A
-:1021140009200820704701207047062070470220DC
-:1021240070470720704700BF003C024007B50923F1
-:102134008DF80730FFF7DAFF8DF807009DF80730B8
-:10214400012BF7D09DF8070003B05DF804FB0000F5
-:1021540070B5064641B1012908D0022914BF4FF4D5
-:1021640040754FF4007503E00D4601E04FF48075AF
-:10217400FFF7DCFF09281ED10F4C236923F44073B9
-:10218400236121690D432561236923F0F803236149
-:10219400236943F002031E432661236943F4803319
-:1021A4002361FFF7C3FF236923F00203236123693B
-:1021B40023F0F803236170BD003C024070B505466E
-:1021C4000E46FFF7B3FF092811D1094C236923F404
-:1021D4004073236123692361236943F0010323616D
-:1021E4002E70FFF7A3FF236923F00103236170BD61
-:1021F400003C024070B543688568846A0168426B9C
-:1022040045EA0306C3681E4303691E4343691E432C
-:1022140083691E43C3691E43036A1E43436A3343EF
-:1022240043EA0406C36A1E43036B334343EA0206CC
-:102234008B0003F12043082D1E6003D11D6845F077
-:1022440040051D60B2F5801F836B12D189B14FF038
-:1022540020425668156845F480151560156845F4E4
-:10226400807515601D6926F47006013D46EA055522
-:1022740055601A689D6915435A6845EA02159A68BB
-:1022840045EA0225DA6845EA02451A695B6945EAC6
-:10229400025242EA03624E1C4FF02043B4F5804FD1
-:1022A40043F8262010D1C36B1A68986910435A6802
-:1022B40040EA02109A6840EA02201A695B6940EA1F
-:1022C400025242EA036201E06FF07042014B43F8AC
-:1022D400212070BD040100A0800000F1204019B14C
-:1022E400036843F0010302E00268024B13400360F9
-:1022F400704700BFFEFF0F002DE9F0410F68002377
-:1023040001229A4002EA0705954230D15A0003247B
-:1023140006689440E443264006600E79D0F800C075
-:1023240006FA02F8013E48EA0C0C012EC0F800C07F
-:1023340014D8866891F805C02640866086680CFA31
-:1023440002FC4CEA06068660466826EA05054560F6
-:102354008D7946689D40ADB235434560C5682C40D3
-:10236400C460CD79C46805FA02F22243C260013325
-:10237400102BC5D1BDE8F0814FF6FF730360002335
-:10238400037143718371C3717047036919420CBFB0
-:102394000020012070470AB10183704741837047D0
-:1023A40001F00703C90800EB810010B59B00046A23
-:1023B4000F21994024EA01010162016A9A40114304
-:1023C400016210BD08B5134B984207D14FF40010B9
-:1023D400012100F0C3F94FF4001014E00E4B9842B1
-:1023E40007D14FF48000012100F0B8F94FF48000C8
-:1023F40009E00A4B98420BD14FF40000012100F090
-:10240400ADF94FF400000021BDE8084000F0A6B982
-:1024140008BD00BF0054004000580040005C00406C
-:10242400F0B585B004468688324F68460D4600F004
-:10243400FDF802982A68304B26F03F063604B0FBBC
-:10244400F7F7360C1FFA87FC4CEA0606A6802188AB
-:1024540021F001010904090C9A4221800DD853008E
-:10246400B0FBF3F39BB20CF1010C032B1FFA8CFCB1
-:1024740098BF0423A4F820C022E0E9884BF6FF7338
-:10248400994205D102EB4202B0FBF2F39BB206E0A3
-:1024940019235343B0FBF3F39BB243F48043C3F3D8
-:1024A4000B020AB943F001034FF4967257434FF4F9
-:1024B4007A7297FBF2F70137BFB243F400432784E3
-:1024C400A38323886989AA889BB243F001032380EC
-:1024D400238823F4816323F002031B040A431B0CA7
-:1024E40013439BB223802A89AB8913439BB2238174
-:1024F40005B0F0BD40420F00A086010041F28833D0
-:102504000360002383804BF6FF72038143814FF401
-:102514008043C28083817047038819B19BB243F022
-:10252400010303E023F001031B041B0C0380704729
-:10253400038819B19BB243F4806303E023F48063FE
-:102544001B041B0C03807047828A008B92B221F01B
-:102554007F4342EA00401840431A584258417047AA
-:10256400014B1860704700BF00300040014B5860B9
-:10257400704700BF00300040014B9860704700BFB7
-:1025840000300040024B4AF6AA221A60704700BF8E
-:1025940000300040024B4CF6CC421A60704700BF3A
-:1025A40000300040014B1860704700BF20000E420D
-:1025B400034B5B6818420CBF00200120704700BF2A
-:1025C40000700040B0F5402F054B04D01A6842EA71
-:1025D4008000186070475A6842F440225A6070477D
-:1025E400007000400E4B1A6842F001021A6000228B
-:1025F4009A60196821F0A85121F410211960094941
-:1026040059600949C3F8841001F18061C3F8881046
-:10261400196821F480211960DA60C3F88C207047AE
-:102624000038024010300024003000201D4B9A680E
-:1026340002F00C02042A10B503D0082A03D01A4B66
-:1026440018E01A4B16E059685A6811F4800F59685B
-:1026540014BF164B144B02F03F02B3FBF2F3114AC2
-:102664005268C2F30142C1F3881101324B43520054
-:10267400B3FBF2F30B4903608B680D4AC3F30313F6
-:10268400D45C0368E34043608C68C4F38224145D23
-:1026940023FA04F484608968C1F34231525CD34064
-:1026A400C36010BD003802400024F40040787D016E
-:1026B40001000020044B1A6B09B1104301E022EA27
-:1026C40000001863704700BF00380240044B9A6B47
-:1026D40009B1104301E022EA00009863704700BF8B
-:1026E40000380240044B1A6C09B1104301E022EA9D
-:1026F40000001864704700BF00380240044B5A6C55
-:1027040009B1104301E022EA00005864704700BF99
-:1027140000380240044B1A6909B1104301E022EA6F
-:1027240000001861704700BF00380240044B5A692A
-:1027340009B1104301E022EA00005861704700BF6C
-:1027440000380240044B9A6909B1104301E022EABF
-:1027540000009861704700BF00380240044B1A6AB9
-:1027640009B1104301E022EA00001862704700BF7B
-:1027740000380240044B5A6A09B1104301E022EACE
-:1027840000005862704700BF003802404309012B23
-:10279400074A01D1136803E0022B0CBF136F536F78
-:1027A40000F01F0023FA00F000F00100704700BFA2
-:1027B4000038024082B000230193054B0193019B32
-:1027C40003EB80000190019B196002B0704700BFC9
-:1027D4005028004082B000230193054B0193019BD4
-:1027E40003EB80000190019B186802B0704700BFA2
-:1027F4005028004008B5254B984207D14FF480502B
-:102804000121FFF7B7FF4FF4805039E0204B984285
-:1028140007D14FF480400121FFF7A0FF4FF480401F
-:1028240009E01C4B98420BD14FF400400121FFF703
-:1028340095FF4FF400400021BDE80840FFF78EBF2C
-:10284400154B984207D14FF400500121FFF792FF36
-:102854004FF4005014E0114B984207D14FF480100C
-:102864000121FFF787FF4FF4801009E00C4B9842D9
-:102874000BD14FF400100121FFF77CFF4FF400103F
-:102884000021BDE80840FFF775BF08BD00300140D6
-:1028940000380040003C004000340140005001403A
-:1028A400005401400B88028810B54C8823438C885F
-:1028B4002343CC8823430C8923434C8923438C89A9
-:1028C4002343CC8902F44152234313439BB2038034
-:1028D400838B23F400631B041B0C83830B8A038206
-:1028E40010BD0023038043808380C3800381438120
-:1028F4008381C381072303827047038819B19BB284
-:1029040043F0400303E023F040031B041B0C03804B
-:10291400704781817047038919420CBF0020012050
-:1029240070470000038ACA889BB230B523F4405331
-:102934000D46134303820989AB8882890B43698955
-:1029440092B20B4322F4B05222F00C029BB2134316
-:102954008381838AAA899BB223F44073134385B08D
-:10296400838204466846FFF761FE194B9C4203D0FC
-:1029740003F580639C4201D1039B00E0029BA28982
-:1029840012B2002A2A684FF01901B4BF5200920013
-:102994005943B1FBF2F16423B1FBF3F212011009C4
-:1029A40003FB1011A08900B2002806DAC9003231F5
-:1029B400B1FBF3F303F0070305E009013231B1FB86
-:1029C400F3F303F00F031A4392B2228105B030BD32
-:1029D40000100140838919B19BB243F4005303E012
-:1029E40023F400531B041B0C83817047C1F30801BB
-:1029F40081807047038819420CBF00200120704772
-:102A040010B50023934203D0CC5CC4540133F9E7DE
-:102A140010BD02440346934202D003F8011BFAE7B7
-:102A24007047FF004C6174746963650069434563D2
-:102A34007562653220323031342E31322E323730E5
-:102A4400353200506172743A206943453430554C34
-:102A5400314B2D434D33364100446174653A204D6A
-:102A6400617920313120323031352031393A3139F0
-:102A74003A35350000FF7EAA997E51000105920087
-:102A84002062016F820000720070110001010000D9
-:102A940000000000000000000010000080000000A2
-:102AA40000000200000000008000000000000000A0
-:102AB4000000010000080000000000000000000009
-:102AC40000000000000000200000000000000000E2
-:102AD40000003400020000000000000000000000BC
-:102AE40002000000000000000000000000000000E0
-:102AF4000000000000000000400000000000010091
-:102B04000000000040000000000000000000000081
-:102B140000040000000000000000000000000000AD
-:102B2400000000000000000580000000000000001C
-:102B3400000000030000000000000000000000008E
-:102B44000000000000000000000000000000000081
-:102B540000000000800000000000020000000400EB
-:102B640080000002000000000000000000080000D7
-:102B74000000000000000000000000000000000051
-:102B84000000000000010000000000000C00000331
-:102B9400000300000000000000000000000000101E
-:102BA4000000000000000000000000000000000021
-:102BB4000000000000000000000000000000000011
-:102BC4000000000000000000000000000000000001
-:102BD40000000000000000000000000000000000F1
-:102BE40000000000000000000000000000000000E1
-:102BF4000000000000000000005800000000000079
-:102C040000000000000000000000000000000200BE
-:102C1400000000000E080000000002000000000098
-:102C24000000000000000000202000000000000060
-:102C34000000000000000000000000000000000090
-:102C44000000000000000000000000000000000080
-:102C54000000000000000000000000000000000070
-:102C6400000000000000000000000001000000005F
-:102C7400000003000000000100000000000000004C
-:102C84000000000000100000000000000000000030
-:102C940000000000000080000003000000000000AD
-:102CA4000300800000030000000000000000000892
-:102CB4000000002C000000000000000000000000E4
-:102CC40000000000000000000000000000001800E8
-:102CD4000000000200000000000000000000007876
-:102CE40000100000000000000000000000000000D0
-:102CF4000000400000000000000000000000400050
-:102D040000010000000000000000000400000000BA
-:102D140000000000000000000000000000000000AF
-:102D2400000001000000000000000000000001009D
-:102D34000000000000000000000000081000000077
-:102D440000000000000000000000000000008005FA
-:102D5400800000000000000000008000000000006F
-:102D64000000000000000008003000000000000027
-:102D740000000C3020008000000000000014280037
-:102D840000000000781800000020735A08000000BA
-:102D940000030002000000001DDF0C000000000022
-:102DA4000C30000000000000000000366C00000041
-:102DB400004008FB0000001C025C000080000000D2
-:102DC4002C000000000000E0F100000000000C30C6
-:102DD40020000000000000000000000000002800A7
-:102DE4003808000000000058080000000007000236
-:102DF40000A000001C8F0C00000000000C3000003C
-:102E0400000000000000003400000000200008075B
-:102E14000000003C3F490000010000003C0000802D
-:102E240000000000F110000000000C302000000041
-:102E3400000000000200000000001000000000007C
-:102E44002004017C00020000008300020000000650
-:102E5400168F0E00000000000C300000000000007F
-:102E640000000000000000001000700B0000003C97
-:102E74003D50020000000100B80000000000000006
-:102E8400F000000000000C302000000000000000F2
-:102E9400001400000000000000E80000000006DE4E
-:102EA4003C0200000003840200000266548F0C0000
-:102EB400000000000C3000000000000000000002D0
-:102EC4002C00000000000001000000243BF038004A
-:102ED400000500003C00000003C20200F1000000F5
-:102EE40000000C3020000000000000000000000082
-:102EF4000000000001E00000002002FE500000007D
-:102F0400D9A38002000000001E8F0E1000000000F4
-:102F14000C30000000000000000000000000000071
-:102F2400001070E30100003C27E000000000B00046
-:102F34003000000000000000F000000000000C3031
-:102F4400200000000000000000000000000000005D
-:102F5400800000000000280000000000D9B38002B7
-:102F6400000041C0168F0E00000000000C3000006D
-:102F7400000000000000000000000000000030E736
-:102F84002000000000000000000050A080000000AD
-:102F940000200000F010000000000C3020000000B1
-:102FA4000000000000000048E00000007000040081
-:102FB4000000000000000000101380020000026006
-:102FC400168F0E00000000000C30000010000000FE
-:102FD400000000000258F000000038072C00000038
-:102FE40000000000000008A0B8000000004002003B
-:102FF400F000000000000C30200000000000000081
-:1030040000000378A50230000000000000206C00DE
-:1030140000000000001023C000C003C01685560045
-:10302400000000000C300000000000000000000060
-:10303400034052201000700B2800000C38000000E0
-:10304400000000C003C00000A060020550000000A2
-:1030540000000C3020000000000000000000014CC3
-:10306400F0C000C000000000003C284E0F800000AB
-:1030740000C38002000000029C05A80000000000BC
-:103084000C3000000000000000000000001F0F20B2
-:10309400014000900000000400080F000000000040
-:1030A40000000800004294DA5000000000000C30D8
-:1030B400200000000000000A000001C8F0C0004029
-:1030C4000400000A000005CC0F8000000007800205
-:1030D400000001429C80F800000000000C30000059
-:1030E400000000000008000000000F200040000065
-:1030F400000800142C1F0F0000000000B80000009E
-:10310400094281F0F000000000000C3020000000B3
-:103114000000000000206548F0C01001000000001D
-:10312400001C055E0F80000030058002000001468F
-:103134005480F800000000000C3000000000000083
-:103144000000000420200F20100000000000000CEC
-:10315400202A0F00000000003800000000020300D5
-:10316400F000000000000C3020000000000000000F
-:1031740000060148F0C0000000000000000601DC69
-:103184000F80000000070402000000601580F800B2
-:10319400000000000C3000000000000000000000EF
-:1031A40000200F2000000000000000003C300F0051
-:1031B40000009000A800000000000200F0000000E1
-:1031C40000000C302000000000000000000031E886
-:1031D400F0C0000000000010002001C15A8000006F
-:1031E40000058402000000001F80F80000000000B9
-:1031F4000C300000000000000000000000000F2060
-:10320400000000000000001C3CECA50000000000D1
-:10321400380000000002C080F000000000000C3004
-:10322400200000000000000010000168F0D0004001
-:1032340000000000102001780F80000078150402BF
-:10324400000101401790F800000000000C3000005D
-:10325400000000000000000000000F00000000005B
-:10326400000000043C100F00000000802800000053
-:10327400002001C0F000000000000C30200000001D
-:1032840000000000000631E8555000000000000076
-:10329400000661EA0F80000079E17C3E00000260D4
-:1032A4001F80F800000000000C3000000000000047
-:1032B4000000000000205500002800000000003C31
-:1032C40028200F0000005900F43C00010042C30014
-:1032D400F000000000000C30200000000000000C92
-:1032E4000020040000000000000000000000066848
-:1032F4000840800079E023C000000200408F0200F3
-:10330400000000000C300000000000000008100461
-:1033140020000000000000000000003C23490500DC
-:10332400400008A003C000000042000F000000009D
-:1033340000000C30201020007A3C20000000001C0B
-:10334400F040000000180000000000000000000031
-:103354000003F954000000662FC5F00000000000CF
-:103364000C30000000000803C09000002C10F00195
-:10337400004000F70000000000000000000000B062
-:10338400C154000000003D05F000000000000C30B6
-:1033940020000000323C200A001E0200A540280044
-:1033A4000008000A0000000000002800000379FC67
-:1033B40008A001E681AF0400000000000C3000000A
-:1033C40000000003C048000000405A012000F0073C
-:1033D40000080000000000002000F003C2FC02808E
-:1033E4000342C00F0000000000000C302000000069
-:1033F4003A3C204C0000281CF0401010001000043F
-:1034040000003800000010008083FE0420C041400A
-:1034140000000000000000000C3000000000000369
-:10342400C00000344000F001102000CF000C080060
-:103434000000000030001189FD0000C0036000009E
-:103444000000000000000C3020000000323C20008E
-:1034540000140008F040000000000000000000001C
-:103464000000000000017A002008004781AF04003A
-:10347400000000000C30000000000803C00000360B
-:103484000010F00000000007000000000000000031
-:1034940000000007EA0000041424010F00000000EB
-:1034A40000000C3020000800723C20000000000ADC
-:1034B400F0400000008000100000001EF0400000FA
-:1034C40038052DFC00000000018F040000000000FE
-:1034D4000C3000000B0A0003C00000000000F000E4
-:1034E4000000F1BB020004000000F00000000889A5
-:1034F400BEFC2000A000000F0000000000000C3003
-:1035040020040100723C2000100E380AF0400040F4
-:1035140000000000100020000000004001817A80BB
-:103524000001426635800000000000000C300000FD
-:1035340000800803C00000020010F0000000000D2D
-:103544003C0000340000000000000005C000200022
-:10355400004025A10000000000000C302004000AF7
-:103564007A3C20001000001AF040000000A0040083
-:103574000000001CF04000000000000000001407E0
-:1035840001CC0220000000000C3000040500000300
-:10359400C00010000000F0000000D1F33C00000067
-:1035A4000010F00000001000000000000800010CF2
-:1035B4000008000000000C30200005007A3C2000C8
-:1035C4000000001AF040100050A004000020001C6D
-:1035D400F060000001A063C10000100707C0801064
-:1035E400000000000C300000050E0003C0001000B5
-:1035F4000000F0001000D9BB3C0000240000F000E3
-:10360400000000A003C00400000424800080000027
-:1036140000000000000000007A3C200000262A5B25
-:103624004240004000000000001C00ED5A0000046D
-:1036340001E000000002000000AF040000000000F0
-:103644000000000000000803C1000014024CE20066
-:10365400404000000000000001CC1A010000F0907E
-:10366400000000040000010F000000000000000042
-:10367400028005007A3C200A001E7078AF100040DA
-:103684000000000A0020006AA500280000A7EA0044
-:1036940000A00000418F04000000000000000200B0
-:1036A40000800803C008003E2020AF100040000046
-:1036B40000080004015055002000000F6C00008039
-:1036C4000003810F00000000000000000300000060
-:1036D4001A15400C0016024C304230000000000461
-:1036E4004020396AA00010000193382800400003EC
-:1036F400C0000000000000000000000000000015F1
-:10370400400400000270B10090000000000C00347E
-:103714006370F50010000080002820C06003C00022
-:1037240000000000000000000000000007BC1000C2
-:103734000014287B4240000000000000000000FC50
-:103744000E02000000F5F8000800E0000000000090
-:1037540000000000000000000000043C00200014F1
-:10376400286CD100800000000000001428D00F0055
-:10377400000000FF810000000000000000000000C5
-:10378400000000000000000007BC10000000625BA5
-:1037940042400000001000002014000AF040000025
-:1037A4005801FA010800000000EF040000000000C6
-:1037B400000000000000043C08000000665DE20018
-:1037C400800000F00200E0000000F00000000000B3
-:1037D400C20000000000010F000000000000000013
-:1037E40000000000802950040026647B4240000051
-:1037F40000000000863604000000000000012C8157
-:1038040000000000000000000000000000000000B4
-:103814000000101680040026647DD10080000000A2
-:103824000000001428000000000000097C000000D3
-:103834000400000000000000000000000000000080
-:103844000000000000000258424040000000000058
-:103854002006005AF50000008005F805000000006D
-:10386400200A5400000000000000000000000000D6
-:10387400000000000248E200000000000000000018
-:103884000340A000000050C1EC00000000021C0531
-:10389400A0000000000000000000001B0000000069
-:1038A40000000159014040000000000080000000B9
-:1038B400000000007810000000000040000000003C
-:1038C4000000000000000000000A000000000000EA
-:1038D4000059A7000000000000000E0000000000D6
-:1038E400000008A00000000000000000000000002C
-:1038F4000000000000000180000000000000014AF8
-:10390400F0D000000008000000002E1CB1000102ED
-:10391400001869550000000240000000000000008B
-:1039240000000000008A0000000000002C190F00B5
-:10393400044000070000000038DF7200028000D954
-:1039440042A800080007400000000000000000003A
-:103954000280050076A8000A000001C8F0C0280013
-:103964000008000A002003FCAF2328007818029501
-:1039740000B401E017CAF4000000000000000200D7
-:103984000100F4000008000000000F002000000700
-:103994000008201C0150DF00200008C101680082DB
-:1039A40000201700A1000000000000000300001F19
-:1039B4003F99C480002061C8F0C0100000C0000C12
-:1039C400001E001CF040300050A03BC1804203C7E1
-:1039D4009DCA50000000000000000300000DD03F0D
-:1039E400C00000042C200F003000310F000C000038
-:1039F4000000F000100000A043C0004401E43505BD
-:103A040051000000000000000100001A1B191A10E8
-:103A140000060148F0E001000000000001200268F7
-:103A2400A50000800010000000000167BDEA02004C
-:103A34000000000000000100001032160200000027
-:103A440000200F0002000007000000042B50550066
-:103A5400010000900000000000202E0F5000000024
-:103A6400000000000000010012DD1000000001E869
-:103A7400F0C0000080900000000005EE200201006C
-:103A8400000DE005000A01668E8A020000000000B5
-:103A9400000000000108B6140A40000000000F00F6
-:103AA4000020709B0000000020202000028000897C
-:103AB400AC0000040002EF0FA000000000000000B2
-:103AC400000005801640500000000168F0C00000AE
-:103AD40080000000000466CEA5000000000D628195
-:103AE4000000000716AA50000000000000000000BB
-:103AF40001001A29C860000000000F000000300512
-:103B04003C000E3620F055000000000D400000007F
-:103B140000073C0AA00000000000000000000D8F18
-:103B240093DD1600000605E855400000819004006E
-:103B3400006039E87002000030057A0100000807CF
-:103B44004D8A000000000000000000000D1A32142D
-:103B54000020000020205500000091E33C00009468
-:103B64000150F00000000099F80000080346D40F4B
-:103B74005000000000000000000008000000000CDD
-:103B84000020040000003000999004000036041C5A
-:103B9400F0400001000000000000004795EA00002A
-:103BA4000000000000000000050000000008000400
-:103BB400200000001000999B3C000C142800F00029
-:103BC400000200800000000000242D0FA00000006F
-:103BD40000000000000000000000000000002000C1
-:103BE40000000040000000000020054B70000000B1
-:103BF40000007BC100000003B59205000000000036
-:103C04000000000000000000000000004000000070
-:103C140000400090000000242368F00000000080B1
-:103C240043C00000000724CE000000000000000094
-:103C3400000000000000000000340000000000400C
-:103C44000000000A002002FABD03280001E0000081
-:103C540000A00242CF81C00000000000000000006C
-:103C6400000000000000002C2800000000400000BC
-:103C7400000800240160FD0820000100000000800D
-:103C8400006217C3C0040000000000000000000030
-:103C94000000000000000208500010000000000CAA
-:103CA4000020641EF0401000000063C10000020305
-:103CB40025AB94000000000000000000000000009C
-:103CC400000000000050A00010000000000C002CB8
-:103CD4002400F0001000000043C0000000401793CF
-:103CE40080800000000000000000000000000000D0
-:103CF4000000000000000000000000000026064E46
-:103D0400A5000000000000000000014035E8D404D4
-:103D1400000000000000000000000000000000148B
-:103D240000000000000000000000000625F055001F
-:103D340000000000000000000002A698E00000005F
-:103D4400000000000000000000000000000000006F
-:103D54000000000000000000000072DCF50000001C
-:103D6400000000000010016000EF040000000000EB
-:103D7400000000000000000000000000000000003F
-:103D8400000000000000001C00F0500000000000D3
-:103D9400000000100000000F000000000000000000
-:103DA40000000000000000000020000000000000EF
-:103DB40000000000002066DEA500000000000000F6
-:103DC40000000200018F0410000000000000000049
-:103DD400000000000000003C0000000000000000A3
-:103DE4000000002423D0AA0000000000000000000E
-:103DF4000143C00F020000000000000000000000AA
-:103E0400000000000000027B100000000000000021
-:103E14000E00701A8002000000000000000A00007A
-:103E240027E0540000000000000000000000000033
-:103E340000000000024C2401000800000000000003
-:103E44000050400000000000000000000040240A70
-:103E5400000400000000000000000000000000005A
-:103E64000000000000000100000000000000381CF9
-:103E7400F0400000001000000000036007D40000C0
-:103E8400000000000000000000000000000000002E
-:103E94000000000002000000000000342400F000D4
-:103EA400000000D00000000001601680000800003F
-:103EB40072009011010101000000000000000000E8
-:103EC400000010000000000000400000000000019D
-:103ED4000000000000400002000000000000080094
-:103EE40000000000000000000000000000000000CE
-:103EF400200000000000008000000000000200001C
-:103F040000000000000000000000000000000000AD
-:103F14000800000000000000000000000000000095
-:103F2400000000000000000000000000000000008D
-:103F3400000000010000000000000400F000000088
-:103F4400000000000000000000000000000000006D
-:103F5400000000000000000000000000000000005D
-:103F6400000000000000000000000000000000004D
-:103F7400000000000000000000000000000000003D
-:103F8400000000000000000000000000000000022B
-:103F9400000C0000000008000000300000000000D9
-:103FA400000000000000000000000000000000000D
-:103FB40000000000000000000000000000000000FD
-:103FC40000040000000000001000000000000000D9
-:103FD40000000000000000000000000000000000DD
-:103FE4000034000000000000000000000000000099
-:103FF40000000000000000000000000000000000BD
-:1040040000000000000000000000000000000000AC
-:10401400000000000000000000000000000000009C
-:10402400000000000000000000000000000000008C
-:10403400000000000000000000000000000000007C
-:104044000000000000000000000008000000000064
-:10405400002000000000000000000000000000003C
-:10406400000000000000000000000000000000004C
-:10407400000000000000000000000000000000003C
-:10408400000000000000000000000000000000002C
-:1040940000000000000000000000000200000B000F
-:1040A400010000000000000C0000000000000000FF
-:1040B40000000000000000000000000000000000FC
-:1040C4000000000000000000000100800800010062
-:1040D40000020000000800000000000004000000CE
-:1040E40000000000000000000000000000000000CC
-:1040F40000000000000000000000000000000000BC
-:1041040000000000000000000000000000000000AB
-:10411400000000000000000000000000000000009B
-:10412400000000000000004000000000000100004A
-:10413400000000000000000000000000000000007B
-:10414400000000000000000000000000000000006B
-:104154000000000000000001000000000002040054
-:10416400000000000000000000000000000000004B
-:10417400000000000000000000000000000000003B
-:1041840000000080000000000002000E000000009B
-:1041940000007000000000000000000C300000006F
-:1041A400000000000000000000000000000000000B
-:1041B40000000000000000000000000000000000FB
-:1041C400C00100F000000000000C302000000000DE
-:1041D40000000000000000000000000000000000DB
-:1041E40000000000000000000000000000000601C4
-:1041F400C0F000000000000C3000000000000000CF
-:1042040000000000000000000000000000000000AA
-:10421400000000000000000000000000000000F0AA
-:1042240000000000000C302000000000000000002E
-:10423400000000000000000000000000000000007A
-:10424400000000000000000000000001C0F00000B9
-:104254000000000C3000000000000000000000001E
-:10426400000000000000000000000000000000004A
-:104274000000000000000001428000F00000000087
-:10428400000C3020000000000000000000000000CE
-:10429400000000000000000000000000000000001A
-:1042A4000000000000036041C0F000000000000CAA
-:1042B40030000000000000000000000000000000CA
-:1042C40000000000000000000000000000000000EA
-:1042D40000000000003C0AF000000000000C302048
-:1042E40000000000000000000000000000000000CA
-:1042F40000000000000000000000000000000000BA
-:1043040000000021E5F000000000000C3000000077
-:104314000000000000000000000000000000000099
-:104324000000000000000000000000000000000089
-:104334000000000000000000000C3020000000001D
-:104344000000000000000000000000000000000069
-:104354000000000000000000000000000000000059
-:10436400000000000000000C30000000000000000D
-:104374000000000000000000000000000000000039
-:104384000000000000000000000000000000000029
-:1043940000000000000C30200000000000000000BD
-:1043A4000000000000000000000000000000000009
-:1043B40000000000000000000000000000000000F9
-:1043C4000000000C300000000000000000000000AD
-:1043D40000000000000000000000000000000000D9
-:1043E40000000000000000000000000000000000C9
-:1043F400000C30200000000000000000000000005D
-:1044040000000000000000000000000000000000A8
-:104414000000000000000000000000000000000C8C
-:104424003000000000000000000000000000000058
-:104434000000000000000000000000000000000078
-:10444400000000000000000000000000000C30200C
-:104454000000000000000000000000000000000058
-:104464000000000000000000000000000000000048
-:1044740000000000000000000000000C30000000FC
-:104484000000000000000000000000000000000028
-:104494000000000000000000000000000000000018
-:1044A4000000000000000000000C302000000000AC
-:1044B40000000000000000000000000000000000F8
-:1044C40000000000000000000000000000000000E8
-:1044D400000000000000000C30000000000000009C
-:1044E40000000000000000000000000000000000C8
-:1044F40000000000000000000000000000000000B8
-:1045040000000000000C302000000000000000004B
-:104514000000000000000000000000000000000097
-:104524000000000000000000000000000000000087
-:104534000000000C3000000000000000000000003B
-:104544000000000000000000000000000000000067
-:1045540000009000000000000000000000000000C7
-:10456400000C3020000000000000000000000000EB
-:104574000000000000000000000000000000000037
-:104584001000000000000000000000000000000C0B
-:1045940030000000000000000000000000000000E7
-:1045A4000000000000000000000000000000D00037
-:1045B400000000000000000000000000000C30209B
-:1045C40000000000000000000000000000000000E7
-:1045D40000000000000000000000000010000000C7
-:1045E40000000000000000000000000C300000008B
-:1045F40000000000000000000000000000000000B7
-:104604000000000000000000000000000000006046
-:104614000000000000000000000C3020000000003A
-:104624000000000000000000000000000000000086
-:104634000000000000000000000000000000000076
-:10464400000000000000000C30000000000000002A
-:104654000000000000000000000000000000000056
-:104664000000001000100000000000000000000026
-:1046740000000000000C30200000000000000000DA
-:104684000000000000000000000000000000000026
-:104694000030008000000000000000000000000066
-:1046A4000000000C300000000000000000000000CA
-:1046B40000000000000000000000000000000020D6
-:1046C40000000000000000000000000000000000E6
-:1046D400000C30200000000000000000000000007A
-:1046E400000000000000000000000000002800009E
-:1046F4000000000000000000000000000000000CAA
-:104704003000000000000000000000000000000075
-:1047140000000000000000000000000000000B008A
-:10472400143000000000000000000000000C3020E5
-:104734000000000000000000000000000000000075
-:104744000000000000000000000000000D214100F6
-:1047540000000000000000000000000C3000000019
-:10476400000000000000000040DB0000000000002A
-:10477400000040034DA5008000108D80140000004F
-:104784000000000000000000000C302000000000C9
-:104794000000000000024E5F020000000000000064
-:1047A4000000ED02400000819FA1430200000000D0
-:1047B400000000000000000C3000000000000000B9
-:1047C40000000403D00000000000000000014002CB
-:1047D400DBF500010010098014000000002C80802B
-:1047E40000000000000C3020000000000000000069
-:1047F4002C785A0A00000000000000000602DAF4D7
-:10480400000280980FA14300000000248B5408008C
-:104814000000000C30000000000000000000040054
-:10482400000000000000000000003C3CD00001003B
-:1048340000000D001400000002000F000000000042
-:10484400000C3020000000000000000020000000E8
-:1048540000000000000000002061D80202000000F7
-:104864000DA14300000000568F0800000000000C5A
-:104874003000000000000000002000400050000054
-:104884000000000000001E00200A000000000900D3
-:10489400140200E000020F0000000000000C3020B1
-:1048A40000000000000000400039D8500000000063
-:1048B400000000001C00EA0A200000000FA14300D1
-:1048C400000000048F0800000000000C300000000D
-:1048D400000000000000003B400800000000000051
-:1048E400000000316D0010000000AD801400004293
-:1048F400C0000F0000000000000C30200000000089
-:10490400000000000062F81802000000000000002F
-:1049140000046F08000000181D2143000003400636
-:104924008F08000A0000000C300010000000000096
-:1049340000000002500000000000000000000424F9
-:10494400000000100000898014000002C0000F0065
-:1049540080040000000C3020000000000000000073
-:1049640006024CA020000000000000002078000097
-:10497400001000019D214300000340168F08000031
-:104984000000000C3000000000000000080014309B
-:104994004000000000000000080200274A850020B3
-:1049A4000000AD001400800140000F000000000072
-:1049B400000C30200000000000000A001E065850C1
-:1049C4000000000000000A000005CC40402900005F
-:1049D4001F214300A00000148F0800000000000CF9
-:1049E400300000000000000000003C036A52100088
-:1049F4000000000000000000E94200000000A900DF
-:104A0400144A00014000000020000000000C302087
-:104A1400000000000000000C0E624E7A400000000E
-:104A24000000000000014B50400000000F21430033
-:104A34000001C29400080000000000000000000013
-:104A4400080821402000000020A0200000000000F1
-:104A54000000003AEB80000138008165000000028C
-:104A64004000000000000000000000000000015EA3
-:104A7400A140800000014AA00000000000000000E6
-:104A84000006FA00000000019764000000026000C4
-:104A940000000000100000000000000000D01080A2
-:104AA40040000436EDA500000000000000001C02D8
-:104AB40060CB00810001077F0C000001C4000000EE
-:104AC400000008000000000000000C0020448000EA
-:104AD400046579A74000000000000000266AEAC3CC
-:104AE40042028031C3FF4D050002638000000000D4
-:104AF400000000000000000D0B9E000000000020DC
-:104B0400200A0000000000000000447ACF8000006A
-:104B140000090581002000024014EC4080000000E0
-:104B240000000000000B0113804000100004F80A8C
-:104B340001000000000000102027790008004078E0
-:104B4400A128010801020017FD0400000000000074
-:104B5400000000500BF4200000001C3420A02804A6
-:104B64000000000000000001E0D33840007003E8BA
-:104B7400000000000034C8D0000000000000000065
-:104B8400002001120000800020795AA020040000B7
-:104B9400000000000000EA4342000000016C200015
-:104BA40000000016B814000000000000000000001F
-:104BB40080DB000000001633CD240000000000005C
-:104BC40000000242E00000000008B1E6900000008E
-:104BD40062E4A5C0800000000000000000070A3A5B
-:104BE400C04000003E004C10000000000000000126
-:104BF4000E2B5C5000000050076590000003400736
-:104C0400CA0600000000000000000000885B4000AD
-:104C140000001676607600000000000000200434D6
-:104C2400005F000000580D4294800000441D901065
-:104C3400000000000000000000038857420000004C
-:104C44002E74CAB1620000000000004000344E5FC0
-:104C540000000050A3F3E800000202B7B000000017
-:104C64000000000000000000000402800800343B43
-:104C7400E01800000000000008001C22FEA50860E7
-:104C84000000A5810000800343C40AC000000000A6
-:104C9400000000000000003B02800A003E05DA0824
-:104CA4000200000000000A000007DA405829000151
-:104CB400D1280108A000035DCA0420000000000000
-:104CC400000000000854140000003C21D9800000BA
-:104CD4000000000000000203EB5A00000201B3E8E8
-:104CE40000000000203E05A00000000000000000BD
-:104CF40000018B87A80000002005CF000000000001
-:104D0400000000001400EF4050000518A16E0000E0
-:104D140000014606EF50000000223D080009000093
-:104D2400009F000000002402CB40000000000000AF
-:104D34000090003749A109000001D00000000000E4
-:104D4400003CE800000000C03F800021000300F2A6
-:104D5400E000000000637800000000000000000094
-:104D640000026D4241003801C00000000001E0165D
-:104D7400C00000000000140A000000000093E000DE
-:104D840000000002C0000800000000000000804095
-:104D9400F80A080040399DB31C010012C204ADD0CA
-:104DA4000000000024A0000000001C3E00000000E1
-:104DB4001E006C80020000000000000040796B4A75
-:104DC400500000D1FDF70D0000E8406EEEF0000049
-:104DD4000030000000000000003640802000004247
-:104DE4004000000000000000000000027D001000F0
-:104DF40000D10B4000400001E0059200040000C017
-:104E040000000000040500824040001000735A02B4
-:104E1400020040000000001000206C08000040392F
-:104E24008BB9400001014007A006000000400000CB
-:104E340000000800001C00000020027C700000003C
-:104E44000000000000003C61600000000008DDF08C
-:104E540000010000401504001000000000000000E4
-:104E640010001C1B200080401C235CA000000000DC
-:104E7400000000000E75FAA0400000100FBC208056
-:104E84000002000EA000200000000000000000004E
-:104E940000500140000014796E0000000000000082
-:104EA40000003C60000000000058876430000001EE
-:104EB400603C0A00000000400000000000039C5F0A
-:104EC400800800002E3C4F08200000000000000075
-:104ED40000280000000002B9B5EC200000034604DD
-:104EE400C000000002400E8FA00028018054000082
-:104EF4000000363760000000000000000000822E31
-:104F0400703C080000008780D000000366CDEC8070
-:104F1400100002001FDE7080138B9E3E200080A0D4
-:104F24003E06DA80020000000000020754017C7C87
-:104F3400530000001568F50A000142B4FD040000A6
-:104F44000343400000020009905C140000000C417F
-:104F54006B0000000000000008013428F058002015
-:104F64000001094014008003601E840080000200D8
-:104F74004000000280070E168000000036704F02C9
-:104F84000000000000000A00A0616E18022805005D
-:104F940088782800A0014015981000000020000027
-:104FA400000000050E0003C04000002BDA003100B1
-:104FB400000000000000803ED00A000100000B0049
-:104FC40000000002E41CCC801000C060000000005F
-:104FD4000000010283D200000002D8040000000097
-:104FE4000000000140281A0500408010013028000C
-:104FF40000014295AC24000000623D000100000065
-:1050040009DC3CC0000CA425FD8000010000000068
-:1050140001001C227A01200400909782940000026F
-:10502400C380000000000040358050100000091BC0
-:105034003DC080016006CB0010028000000000002B
-:1050440020066F07600000819FE1652800020000D0
-:105054000000000000220D000280204F8098000014
-:1050640000000063EA0020000000000001002C039F
-:10507400D0E300000000E5000C000000000100F097
-:10508400000001C03EE80030000B887EA0008000D4
-:10509400006459400001280000000107A0206AC3F1
-:1050A4006300007811B0080800000000C0F500009B
-:1050B40000420300A00000000CD4000010001C7685
-:1050C400700000000000000000003E3CFF030000F0
-:1050D4000071BB801400000000000000000002000A
-:1050E4000FA0A00000000097008E800020605A806E
-:1050F40012000000000000002E7E4F02000000009D
-:10510400AB3168000000000000000000014006E030
-:10511400000000030AF40000000002241050000004
-:10512400000000000000023EC800000000F1DDF8AD
-:1051340000811000034000000000E36015B020006F
-:105144000000089202800000063C7E50000000002F
-:10515400000000001E02DE80000000D9DF320100E2
-:10516400000007C00000000002440CA00000000D75
-:105174000A5600000001027C00000000000000004C
-:1051840000003C015E5B000000F100000000001024
-:10519400001E8000880002021CC801000008001FD5
-:1051A400A00000001C7000000000000000000000CF
-:1051B4002000EEA540000001E00000000008C0252A
-:1051C400A806100001624600000000050A1B5000FA
-:1051D4000000343AD0E3010000000000000004267F
-:1051E400E000000000010BF00000000000000000DF
-:1051F4000000006066C2002003800113C0000000AC
-:10520400006F5AC352000000000000002000ECA010
-:1052140000000830CFE40840000000000000000057
-:1052240003424505F000000B0BB402881800BC02D1
-:10523400DF0300000000000008000069D0C3112053
-:10524400005005F7FC00800002E7F0200000020295
-:10525400C08AF0000008003380000A071C00FC022A
-:105264000000000000000A001E70EEC7422800B1D2
-:10527400ADA1FD20A000000D9000000002434000FD
-:10528400000000070BF780003001002BD80000005D
-:105294000800000000001C27C92500000000CDF410
-:1052A4000060000027400000000003C04000000030
-:1052B40000050A9200800000803CCB08100000002A
-:1052C4000000002006005C000000000001FC20003B
-:1052D4000001E2C00000001000002600500300009E
-:1052E40008B0294041002E640000000002000000C4
-:1052F4000000AC7C0000000080000B3108040000BA
-:10530400000200A0001000002F800003000581802F
-:1053140016944100262C000000000000000000004C
-:105324007C20000000010000000605420000000F80
-:10533400C0A480000142830020800001000C25806D
-:1053440000003401D0A020000400000000001E4230
-:10535400E0AF21000000804280020003C0010A0087
-:105364001400000044A020300009803FA5905000A4
-:1053740000721E5000000000000000003C72EEA508
-:105384004000007013B280000000500C8A05000039
-:105394000142BC00000000000000000000000441C5
-:1053A400F0FF20000000000000001C216B10000032
-:1053B4000008000000000A01C7DE8FF0840002002C
-:1053C4004EC0A00000001800000000001C637EF71F
-:1053D4000200000000000000206DFC0000000071CD
-:1053E4008000000004020786E7F50000014004087D
-:1053F400020000000000154000003E40E0C3000031
-:105404000000800100000C00601A00000000000190
-:105414006802182023800FF0840003402CE0012050
-:105424000000005A15500002B472DCE302000400CC
-:1054340000000040006BF85A02000018E101680007
-:10544400100142000FF100000000340010100001B0
-:10545400000803C0100E006F40E500003A00000091
-:105464000000000030A000000200CD810800100000
-:10547400040590019000000000C022240008001AD6
-:105484003C380000003F4CA5020000000000000072
-:1054940000006EA0000004000D3B8D881000021C6B
-:1054A400D014000000024F0000000000080803C0F0
-:1054B40000000203C8000010000000000000243CAB
-:1054C400000000000000008140000000002682006F
-:1054D4000C0020007C850000000001523C30000CD0
-:1054E4001669CD8000308000000000280000000014
-:1054F40000000000C3B140000000000D9344000010
-:10550400024424B0000200000F0003C040003C2A03
-:10551400F80408004000000008423C7DC000002060
-:1055240000000FAF6840800267C6D5810000020604
-:1055340005840002800001723C30200020066A00CD
-:105544000000400000000A00062FDE0212280000BE
-:10555400053E0564A0026216F984800000440DC073
-:1055640042000000000003C14000000000000000F1
-:105574004000000000804002FC0000010008000020
-:1055840000000A00020000000000006624E002009F
-:10559400000000723C3020041600000000004000AF
-:1055A400000000008002D808000200500000000043
-:1055B400000146400000000001400000000300011B
-:1055C400000803C0100800400000001000000B2475
-:1055D4000800000000000000021080815400000058
-:1055E400000200A00000000000000003000D187A73
-:1055F4003C306000002800000010000000040C0093
-:10560400000000000030008015A1550000000005D6
-:10561400C0A000000142800000000000000803C098
-:105624001000000000000000000001300000002015
-:1056340000000000000000803C00000023E5D000D2
-:1056440010000006800000000001805A3C30600019
-:1056540000000000000000300004004A00040000C4
-:105664000000001807A3C30000014077C800000031
-:105674000000000000000280000003C010000021B0
-:105684007C00010000700D240000000000000001F7
-:10569400200000003C0000014436004000000000EF
-:1056A400000000000000005A3C3060000073FC4021
-:1056B40000000080080000000000000000028000DC
-:1056C40005A3C300006203B7A00020000002BCD001
-:1056D40082000000000003C010001C2C0000000029
-:1056E400000109000000004000000000000000006C
-:1056F4003C00000007870050000000005EE000004E
-:105704000000007A3C3040002E0000000000000041
-:1057140088000002003800000000000007A3C30056
-:105724000001E764AFA000000000000000000000DA
-:10573400080803C05000142B500000000001BD00F5
-:1057440000000000000000000000E0803C000202B5
-:1057540042A5B0F0000000000000000000018152EA
-:105764003C30002036077E0A300000009000000024
-:1057740000000000000000199523C300040166D452
-:10578400A0B000000000000000000000080803C0F2
-:105794004000000020A000102000E70000000400EA
-:1057A4003050A000001080803C000000029C005299
-:1057B4001000000000000000000019523C320000FC
-:1057C400000178A000100000100000002000CE505E
-:1057D400400000819523C30000016756C8B0A800AB
-:1057E40000003FE0011200001B0003C01000000293
-:1057F400D000002000F8F10008000002E0A580209D
-:105804000000E0003C00000543430A0014000000CF
-:105814000CF1000280000A723C3020001602C8809D
-:1058240022A80071E8000A080000400060288000F7
-:105834001723C30000020006CA0000000400000091
-:1058440000000000000A400001020023CD00000017
-:105854004011FD000000003C205090000000006456
-:105864003C00000002C30500080000000000000026
-:10587400000000184020010016065A100000000025
-:10588400F80000000004CA5040000000056FC30087
-:105894000000069CC50100000072007011020101A5
-:1058A40000000000000000000200000000000008EA
-:1058B40000000000020000000000000800000000DA
-:1058C4000000200000000000008000000000000034
-:1058D40000000000000001000000000000040000BF
-:1058E40000000100000000000000000000000000B3
-:1058F4001000000000000000000000000000000094
-:105904000000000000000000020000000000000889
-:105914000000000000000000000000000000000083
-:105924000000000000000000000000000000000073
-:105934000000000000000000000000000000000063
-:105944000000000000000000000000000000000053
-:105954000000000000000000000000000000000043
-:105964000000000000000000000000000000000033
-:105974000000000000000000000000000000000023
-:105984000000000000000000000000000000000013
-:105994000000000000000000000000000000000003
-:1059A40000000000000000000000000000000000F3
-:1059B4000000000000000000000000000000800063
-:1059C40000000000032000000000000000000000B0
-:1059D40000000000000000000000000000000000C3
-:1059E4000000000000000000000000002000000093
-:1059F400000000000000000000000000000000069D
-:105A04008000000000000000000000000000000012
-:105A140000000000000000000000C00000000000C2
-:105A24000100000000000000000000000000000071
-:105A34000000000000000000000000000000000062
-:105A44000000000000000000000000000000000052
-:105A54000000000000000000000000000000000042
-:105A64000000000000000000003000000000000002
-:105A74000000000000000000000000000000000022
-:105A84000000000000000002000000000000000010
-:105A940000000000003000000000000000000000D2
-:105AA40000000000000000000000000000000000F2
-:105AB40000000000000100000004000000000000DD
-:105AC4000000002000000040000000000000000072
-:105AD4000000000000000001800000000000000041
-:105AE40000000000000000000000000000000000B2
-:105AF40000000000000000000000000000000000A2
-:105B0400000002000000000000000000000000008F
-:105B14000000000000080000000000000000000079
-:105B24000000008000000000000000000000800071
-:105B3400020000000000000000000000000000005F
-:105B4400020000000000000000000000000020002F
-:105B54000000000000000000000000000000000041
-:105B64000000000000000000000000000000000031
-:105B740000040000000000000000000000000040DD
-:105B84001030C00000000000000000000000000011
-:105B94000000000000000000000000000000000001
-:105BA40000000000000000000000000000000030C1
-:105BB400C000000000000000000000000000000021
-:105BC40000000000000000000000000000000000D1
-:105BD4000000000000000000000000001030C000C1
-:105BE40000000000000000000000000000000000B1
-:105BF40000000000000000000000800140000000E0
-:105C0400000000000000000000000030C0000000A0
-:105C14000000000000000000000000000000000080
-:105C24000000000000000000000040000000000030
-:105C340000000000000000001030C0000000000060
-:105C44000000000000000000000000000000000050
-:105C54000000000000780000800000000000000048
-:105C64000000000000000030C00000000000000040
-:105C74000000000000000000000000000000000020
-:105C8400000000080000C000000000000000000048
-:105C9400000000001030C000000000000000000000
-:105CA4000080000000000000000000000000000070
-:105CB40000000000000000000010000000000000D0
-:105CC40000000030C00000000000000000000000E0
-:105CD4000000000000800000000000000000000040
-:105CE4000000000000000028000000000000000088
-:105CF4001030C000000000000000000000000000A0
-:105D0400000000000000000000000000000000008F
-:105D140080000000000000000000000000002030AF
-:105D2400C0000000000000000000000000000000AF
-:105D3400008000000000000000000000000080005F
-:105D44000000000010000000000000001030C0003F
-:105D5400000000000000000000000000000000003F
-:105D6400000000000000000000001000000000001F
-:105D7400000000000000000000000030C00000002F
-:105D8400000000000000000000000000000000000F
-:105D940000000200000000D0D0000000000000005D
-:105DA40000000000000000001030C00000000000EF
-:105DB40000000000000000000000000000000000DF
-:105DC40000000000000000000000000000000000CF
-:105DD4000000000000000030C000000000000000CF
-:105DE40000000000000000000000000000000000AF
-:105DF400000000000000000000000000000000009F
-:105E0400000000001030C00000000000000000008E
-:105E14000000000000000000000000000000081264
-:105E2400FD800000084000000000000000000000A9
-:105E340000000030C000000000000000000000006E
-:105E440000000000000000000000000A02B45FD05F
-:105E5400000000000000000000000000000000003E
-:105E64001030C0000000000000000000000000002E
-:105E74000000000000000000000008135C59B0009E
-:105E84000010F13800000000C3D6A000000000306C
-:105E9400C00000000000000000000000000000003E
-:105EA4000000000000000000017A48D0A000040FA8
-:105EB4000000000000003C14000000001030C0008E
-:105EC40000000000000000000000000000000000CE
-:105ED4000000000000000B886B59A0014010F1384D
-:105EE40060000000C3C4E00000140030C0000000E3
-:105EF400000000000000000000000000000000009E
-:105F04000000000002046C10B000400F00002000EC
-:105F140000003C00000000041030C000000000003D
-:105F2400000000000000000000000000000000006D
-:105F340000000A92EAD0A000C010F138000000006E
-:105F4400C3C4A98F00000030C0000000000000009E
-:105F5400000000000000000000000000000000003D
-:105F640002A25959B000800F0040000000003C011B
-:105F7400010800001030C000000000000000000014
-:105F840000000000000000000000000000000B887A
-:105F94006B50B0000010F13800000000C3C4A0181A
-:105FA40000000030C00000000000000000000000FD
-:105FB40000000000000000000000000002067C0950
-:105FC400A000000F0040000000803C01000E000013
-:105FD4001030C000000000000000000000000000BD
-:105FE400000000000000000000000A92FB80000096
-:105FF4000010F17800000000C3C5E000000000308C
-:10600400C0000000000000000000000000000000CC
-:10601400000000000000000002A248700000000F11
-:106024000000000000003C00000000001030C00030
-:10603400000000000000000000000000000000005C
-:106044000000000000000B8A7B01A0208010F17A80
-:1060540000000000C3C5A00002000030C000000022
-:10606400000000000000000000000000000000002C
-:106074000000000002046C010000800F00014000D9
-:1060840000003C00000000001030C00000000000D0
-:1060940000000000000000000000000000000000FC
-:1060A40000000A92F90000000010F16366C00000CD
-:1060B400AA85E01810000030C000000000000000B5
-:1060C40000000000000000000000000000000000CC
-:1060D40002A25B000020000F0041428000002A81E0
-:1060E400000000001030C0000000000000000000AC
-:1060F400000000000000000000000000000000009C
-:10610400000000000010F17006C00000000008014B
-:10611400000C0030C000000000000000000000007F
-:10612400000000000000000000000000000000006B
-:106134000000000F0040028000000000010802047B
-:106144001030C000000000007E7EA0000000083C6B
-:10615400C0100000000060000000083D4000000086
-:106164000010F12800000000908D800A000000302B
-:10617400C0000000000042BAFC000004003C200003
-:10618400000000036C000800003C00000000020F47
-:1061940000000000000122CFF10A00001030C0000E
-:1061A400000040005F32F4602050083D60000001B0
-:1061B40040005C000050083D40000009400AA1284E
-:1061C40000000500A93CC10A00140030C000000012
-:1061D4000000FF0E86000012003C00000000400298
-:1061E40040000010003C00500014400AA0000007CA
-:1061F40001011527C50000041030C0000000000094
-:106204000E9E56000024083DC0700000800040002F
-:106214000020083D4050A000C02A500006C00301E1
-:106224001406110000080030C000000000000FDA5E
-:1062340040000020003C00080014C003800000203F
-:10624400003C2050A0000005A02802800000280285
-:10625400D580140C1030DC0000000040CC50460403
-:106264000004083D60108000000040000000083D6C
-:106274004080A1C0002A500000000000015DC00A57
-:1062840000000030C00000000000CC0B002800001B
-:10629400003C20090000000380000000003C203086
-:1062A400A0000005A028000000800001F00A000002
-:1062B4001030CC001E000000000020700002083CDA
-:1062C40040100040000000000000083D6000002075
-:1062D400000000000000000001548D9B12000030FB
-:1062E400C00000000000000004000000003C200882
-:1062F40000000003C0000100003C0000000000009A
-:106304000000000000000142050A00001030C00037
-:1063140000A200020F7000283800000000000020D6
-:106324000000207C0800083D600000200000000000
-:10633400000080300016980002000030C000000009
-:1063440000040F003C405000000000000000000367
-:10635400E43C0000003C00000000000000000007D6
-:1063640000000801AD0040001030C0001E00020211
-:106374000F30007000000000000010000080266450
-:106384000000083D600000200000000000008020A4
-:106394001287B90A01480030C000000200000F0053
-:1063A4000040000000000000D01000F3A66470005C
-:1063B400403C2000000000000000000080002D642C
-:1063C4009B0002481030C000000000820F3800001B
-:1063D400000000000000000000801E640030083C43
-:1063E400600001C0000000000000000000468000C2
-:1063F40000000030C000000000000F08340030002E
-:10640400000000000020003380640020003C2000D5
-:1064140000000000000000000001003680000000C1
-:10642400004021E000000000551A766800082C3D69
-:10643400CA000000000000000800083DE0980000C9
-:10644400102831FE06000000A81CA0000000000077
-:10645400050000000200AA025400000003C0C000AE
-:106464000000000000000000003C20100000000EAE
-:1064740033A143C00000ABC2E000800000400180B3
-:10648400000000000000002802002C3C4E00000127
-:10649400400000000800083CC0001009106831F5F5
-:1064A400C0000500AA9C0000001000000D030C4071
-:1064B400000000001400040003C0000000004000BD
-:1064C40000000000003C00008010400E316423C036
-:1064D40001009540F0000004004020A000000000EE
-:1064E4005012460000082C3C4A98100002001C0080
-:1064F4000020083CC0000000C000000006D20000DC
-:10650400BC1C00010000000014000D000000000A83
-:106514008000000003C01010800000000000003064
-:10652400003C00000000C000000002800000BC022B
-:1065340000080000004021C01B0000005076546C8D
-:1065440000081C3C4A019000000000000000083CC8
-:10655400400000080000A5A1E004000000000000C5
-:10656400000000000D000B000000F00600280000F1
-:1065740003C01000E000000000000000003C200008
-:1065840000100900A08000000000000000000000CE
-:10659400004021A99D0000446610406000002C3C8E
-:1065A4005E001000000000000000083C4001900064
-:1065B4000000000002C41000000000000000000001
-:1065C4001C0799000000990AC040000003C00000A5
-:1065D400F000000000000000003C200080020000E9
-:1065E400000002002000000000000000004000C87D
-:1065F4001E000000C61A400000001C3C5A000000A7
-:10660400000000000000083C600181C000000000A0
-:106614000000000000000000000000002D0F00003A
-:106624000000C93E0000000013C000000044000048
-:1066340000000000003C0000000000000002C00058
-:106644000000000000094000004001E018000200C2
-:10665400815BE06000000AA85A019000000000007D
-:106664000000083CE07000000800A37C000000006B
-:1066740000000818000000000C0010000000BDD647
-:10668400E440000012A80000F00001000000000037
-:10669400003C000800000000007C00000000000036
-:1066A40001000000004000E81D4000005A7680010F
-:1066B4000000000000001000C00000000000000006
-:1066C40000000000000FA1294000030000000000AA
-:1066D400000C000000090E200000A007C00080008C
-:1066E400000000008000400000000000000000F0F6
-:1066F4000214004FF0A94348000000000000000805
-:106704000003C4001B0000005A3754040000083D75
-:10671400E0000000000000000000183CC050A00091
-:10672400002B5BB000400000A940000100000803FA
-:10673400C00008000000500B16207002003C00004E
-:106744000000000000000002203C0050A00000A156
-:10675400A5A00206000016808D0E000000000000B7
-:106764001E001400A03F00640050083CE00000013B
-:106774004000000070081A940800A001000057317E
-:106784006013050083CC000000940000000010009A
-:106794000400A00400210012003C2000000040007E
-:1067A4000000000202940050A0006040003C202041
-:1067B400010003C2000001040000069D9E000000C9
-:1067C400A07BE002F100083DC0000000C000000012
-:1067D40000001A9408000800C00053E000004000C4
-:1067E40083DC00002008000814F510000000000FEE
-:1067F40004010200403C00000000C0000000000250
-:10680400029400000000E00050400000000103C0BA
-:106814000F0F0008100215A79A4000402E3A0000FE
-:106824000000283CC0000200000000000000183CEA
-:1068340040000000000000000206500083DE00005B
-:106844000000000303B080000000AD0B002C4200E8
-:10685400003C20000000000000000002003C20007A
-:1068640000000000000002E8200003C20000002035
-:1068740014835C1180000040F216266500000000BD
-:1068840000800A00000000000008183C4001E000FD
-:106894000800A379E7C0200083D4081E0000000389
-:1068A40080A00B000000F00B5668F000000000F020
-:1068B4000580000000000000003C200000000000F3
-:1068C400A080C240000003C00F1050000000000070
-:1068D400000000000072206404000000008000003A
-:1068E400000000000000183C6000040000000001EB
-:1068F400E7910020A940080000000000000000000B
-:1069040000000507A46400000000007005000000FA
-:1069140000000000003C0000080000000000002807
-:1069240000001680BF00000000280DE500000000F4
-:1069340001F2A066F10000000078100000000000E1
-:106944000000083C60380000080AA76A06040080BA
-:1069540083CC00010000000406F08B0000000076E8
-:106964006425020000000008F0000000000000029E
-:10697400503C00080000010AA00247C0000003C008
-:10698400000F140030B1CDB3800000C2D33660389C
-:106994000000000000001090000000008000083C8F
-:1069A40060000000104F03000040020083CE078007
-:1069B40004000030C0808B000000DB02A400020051
-:1069C40000000000E004000000000002503C200031
-:1069D4000000000F00800328032003C20000000011
-:1069E40000C3C6A0000000000A7300000000283C99
-:1069F400E000000000000000020000426AD0000035
-:106A040000005175E0000000006FA00B0000003C86
-:106A14003E00000000800F0B40000000003C00001E
-:106A2400000000000000050020005B70000000056D
-:106A3400F0F1C00000010014B01E000000C3C4E562
-:106A440000001400053F80000000283D60000001A4
-:106A540040000000000000416B80A0814407A3E2D5
-:106A640066600540ABDD8B9A0014003C000080009A
-:106A74000400050000000000003C0000000040008D
-:106A84000000000020024A70A000400150F843C0FA
-:106A9400010016818900000400C3C4A981000040DC
-:106AA4000037C0000000083DE070000880000000CE
-:106AB4000008083D4050A0008423D1E56000000098
-:106AC400202FAB1CA000003C010108000000800F37
-:106AD400C0000000003C00080004C00000000000EA
-:106AE400003C205000008802607420000000001464
-:106AF400B710000000C3C4A818000040C230000052
-:106B04000000083DC001E800000000000200083D4C
-:106B14004038A408008767F0038000008135E81D31
-:106B24004000003C010100000000C10B0000000017
-:106B3400203C00000000000000000400003C20385D
-:106B4400A200000347F4040000800024D9182000A8
-:106B540000C3C5E000000000507336680000083D23
-:106B6400C0000000000000000000409EC1180000AA
-:106B74000020F700E04000000A06150E0020003C4B
-:106B84000000000000000A0354000000203C0070D4
-:106B94000000000000000000006F69000000000019
-:106BA400F08022400020051CC090000000C3C5A056
-:106BB40000000000000000040000483CC000E000A9
-:106BC400000000000000083C60800000000051ACA0
-:106BD40046C000110016B00F0080003C0000000009
-:106BE4000000000000280000003C2090000000008D
-:106BF40000000000003C00100000000AF074424055
-:106C040030800081C00A014000C3C5A718000000FD
-:106C14000000200400000A9400108000000000001E
-:106C24000000083C60000140000A53F600400000E8
-:106C34000094C7180000003C0100000000000000A0
-:106C44000428000001680F09E000000000000000B3
-:106C5400003C00000000000550A9C3C00000001E55
-:106C6400F080000000AA85E181000C000000366974
-:106C74000004083CE0000008000000000000029549
-:106C84007D000000000AF32560000000007C900AEB
-:106C94000000002A81000800000000001400000029
-:106CA400003C2000900000000000000001543B0064
-:106CB400000000005074000000000034E0180000E0
-:106CC40000007200901103010100000000000000A8
-:106CD40000020000000000000800000000020000A4
-:106CE400000000000000000004000020000000007C
-:106CF40000008000280000000000000000000001E7
-:106D0400000000000000040000000001000000007A
-:106D1400000000000000000000100000000000005F
-:106D2400000040000000000000000000000000001F
-:106D3400000000000000000000000000000000004F
-:106D44000000040008000000000000000000000033
-:106D5400000000000000000000000000000000002F
-:106D640000000000000000004000000000000000DF
-:106D7400028000000000000000000000000000008D
-:106D840000000000000000000000000000000000FF
-:106D940000000000000000000000000002000000ED
-:106DA40004000000000000000000000000000000DB
-:106DB40000000000000000000000000000000000CF
-:106DC40000000000000000000000020000000000BD
-:106DD40000000000000000000000000000000000AF
-:106DE400000000000000000000000000000000009F
-:106DF400000000000000000000000000000000008F
-:106E0400000000000000000000000000000000007E
-:106E1400000000000000000000000000000000006E
-:106E2400000000000000000000000000000000005E
-:106E3400000000000000000000000000000000004E
-:106E4400000000000000000000000000000000003E
-:106E5400000000000001000000000000000000002D
-:106E6400000000000000000000000000000000001E
-:106E7400000000000000000000000000000000000E
-:106E840000000000000000000000000000000000FE
-:106E940000000000000000000000000000000000EE
-:106EA40000000000000000000000000000000000DE
-:106EB4000200040000000000000000000000300098
-:106EC40000000000000000000000000000000000BE
-:106ED40000000000000000000000000000000300AB
-:106EE400028004000000000000000000F000000028
-:106EF400400000000000000000004000000000000E
-:106F0400000000000000000000000000000000007D
-:106F14000000000000000000000000003800000035
-:106F2400000000000000000000000000000000005D
-:106F34000000000000000000000000000000080045
-:106F4400000000000000000000004000800000007D
-:106F5400000000000000000000000000000000002D
-:106F6400000000000000000000020000000000001B
-:106F740000000000000000200000000000000000ED
-:106F840000000000000000000000000000000000FD
-:106F940000000000000000000000040000000000E9
-:106FA4000000000010000000400030C0000000009D
-:106FB40000000000000000000000000000000000CD
-:106FC40000000000000000000000000000000000BD
-:106FD400003C02000000001030C00000000000006F
-:106FE400000000000000000000000000000000009D
-:106FF4000000000000000000000000000000203C31
-:1070040016018000000030C00000000000000000F5
-:10701400000000000000000000000000000000006C
-:107024000000000000000000000000000029409063
-:107034000000001030C0000000000000000000004C
-:10704400000000000000000000000000000000003C
-:107054000000000000000000000000168010000086
-:10706400000030C00000000000000000000000002C
-:10707400000000000000000000000000000000000C
-:107084000000000000000000003C000000000010B0
-:1070940030C00000000000000000000000000000FC
-:1070A40000000000000000010000000000000000DB
-:1070B400000000000000003C16000000000030C08A
-:1070C40000000000000000000000000000000000BC
-:1070D40000000000000000000000000000000000AC
-:1070E40000000000003C00000000001030C0000060
-:1070F400000000000000000000000000000000008C
-:10710400000000000000000000000000000000007B
-:107114000000003C16000000000030C00000000029
-:10712400000000000000000000000000000000005B
-:10713400000000000000000000000000000000004B
-:10714400000000000A00001030C000000000000031
-:10715400000000000000000000000000000000002B
-:10716400000000000000000000000000000000001B
-:1071740000059B00000030C000000000000000007B
-:1071840000000000000000000000000000000000FB
-:10719400000000000000000000000000201400F0C7
-:1071A4000000001030C000000000000000000000DB
-:1071B40000000000000000000000000000000000CB
-:1071C400000000000000000000000028061000007D
-:1071D400000030C0000000000000000000000000BB
-:1071E400000000000000000000000000000000009B
-:1071F4000000000000000000000000050000001076
-:1072040030C000000000000000000000000000008A
-:10721400000000000000000000000000000000006A
-:10722400000000000000000000080E00000030C054
-:10723400000000000000000000000000000000004A
-:10724400000000000000000000000000000000003A
-:1072540000000000000000000000001030C000002A
-:10726400000000000000000000000000000000001A
-:10727400000000000000000000000000000000000A
-:107284000000000000000000000030C0000000000A
-:1072940000000000000000000000000000000000EA
-:1072A400000000000000000000080AA040024000A6
-:1072B400000000000000001030C0000000000000CA
-:1072C40000000000000000000000100000000000AA
-:1072D40000000000000000002AA168004003000034
-:1072E40000058000000030C0000000000000000025
-:1072F400000000000000000000000000000000008A
-:107304003C6D000000000F00400000000000000081
-:107314000A00001030C0000000000000000000005F
-:1073240000000000000000000000000000023B78A4
-:107334000000000030F168060000000000000100B9
-:10734400000030C000000000000000000020000029
-:107354000000000000000000000000000000000029
-:1073640000080F000002400020000FD000000010B1
-:1073740030C0000000000000000000000000000019
-:1073840000000000000000000000000000000000F9
-:1073940030F16800400000041EC00000000030C04E
-:1073A40000000000000000000000000000000000D9
-:1073B4000000000000000040006B100000080F00F7
-:1073C40000000000000000050000001030C00000B4
-:1073D40000000000000000000000000000000000A9
-:1073E40000000000020043788000000030F16800D3
-:1073F40000040000000D9A00000030C000000000EE
-:107404000000000000000000000000000000000078
-:10741400000000023800500000000F00404200004D
-:10742400000000000000801030C0000000000000D8
-:107434000000000000000000000000000000000048
-:107444000102397881A0000030F12A664000000072
-:1074540000000001400030C00000000000000000F7
-:107464000000000000000000C00000000000000355
-:10747400FC2B500000000F00404200000000000000
-:107484000000001030C000000000000000000000F8
-:107494000000000000000000000000000002BD48E1
-:1074A400D800002030F12A604000000000000010E5
-:1074B400000030C000000000000000000000800058
-:1074C400000000000000000000000000000000A018
-:1074D40000100F000000000100004FE00000001049
-:1074E40030C00000000000000000000000000000A8
-:1074F40000000000000000000000000001B00010C7
-:1075040030F13800000520015EC00000000030C0EA
-:107514000000000000000000000000000000000067
-:1075240008000000000000000000000000080F0335
-:1075340000000000000000000000001030C0000047
-:107544000000000000000000000000000000100027
-:10755400000000000000000001A0000030FFA800AF
-:107564000000000000000000000030C00000000027
-:107574000000000000000001683E50800080000010
-:1075840000000410001C10000000000079424000BC
-:10759400002D6DE30A00001030C000000000000060
-:1075A4000000000004097DFBF18000800000000061
-:1075B4000500046CF00000000053B4060000001243
-:1075C4009CD00000000030C0000000000000024019
-:1075D40000000000000000000000000000000000A7
-:1075E40021CA01B0000000F0A4000000003E8300A6
-:1075F4000900001030C00000000000053E0000003B
-:107604000000000000000000000000000610016EF1
-:1076140000A00000055121400000003E8FA70A0091
-:10762400000030C000000000000000004000040220
-:10763400380E00000000000000000040001FD800C9
-:1076440002000550400280000000000018000010F5
-:1076540030C000000000000000006000010935E1B6
-:1076640018000000000000000000146D500000002D
-:10767400055520000000000000050E00000030C089
-:10768400000000000000000000000000017F000175
-:10769400C800000000000000000011D000080F0026
-:1076A4006D440020000282051040001030C000002C
-:1076B40000000000000000000000065D000004005F
-:1076C400000000000000000080F0000000F17E06D1
-:1076D4008840000296C50C80000030C00000000005
-:1076E4000000000000000000000000000000000096
-:1076F40000000002941C00A20000069D40400020EF
-:1077040001003E850E00001030C0000000000000A3
-:10771400000000000000000018A0000000000000AD
-:1077240001116C780004000816993B6000100000F9
-:107734007DD00100000030C0000000000000000007
-:107744000002000000000000000000000000002013
-:1077540000FF00000000069740040400001680901B
-:107764000000001030C00000000000000000000114
-:107774000000000000E00000000000000242005D84
-:1077840000A0000816996002800014148E90000076
-:10779400000030C0000000000000000000000000F5
-:1077A40003F900E00140000000000401401D10B096
-:1077B4000008069340400000003FA6E19F0000102F
-:1077C40030C000000000000000006800000007FA5C
-:1077D40000000100000000000003E87D80000000BC
-:1077E400169163660000003FED890C00000030C074
-:1077F400000000000000000C000000000000000079
-:1078040000000000000000000000000000200661ED
-:107814000366C000400000800000001030C000007B
-:1078240000000000002000000000000050000040A4
-:1078340000000000000000005000000016606142DB
-:10784400800000014FB00A0C00000000000000009E
-:107854000000000000010000000000008080000023
-:1078640000000001694C010140C00FA0C0000000ED
-:10787400413FFCD0080000000000000000000000B0
-:107884000000000000000000000000C00000000034
-:10789400000293CB11E000C00FA1E8000003609F39
-:1078A400D6A5000000000000000000000000000059
-:1078B40000000000000000000000000000000000C4
-:1078C4000028000000000C396C001080250057AB24
-:1078D4000804000000000000000000000000000098
-:1078E4000000000000000000000000000500057C0E
-:1078F4000180001028BDF406080000801CDB800015
-:107904000000000000000000000000000000000370
-:107914000C7C00F000000000000000002830000093
-:1079240000010E33B74000000032C3B000408000B5
-:1079340000000000000000000000000000098E7B31
-:107944000090880000000100000029EA0080200067
-:10795400283DA74600803030CDF188A30000000008
-:10796400000000000000000000000000000000C053
-:107974000000000000700402BC0A000000000000C7
-:1079840000000000000001F580000000000000007D
-:1079940000000000000000000000000000100000D3
-:1079A40000000000021A815A00000000000000607C
-:1079B400001000014FC39A00000000000000000006
-:1079C40000000000000000436B7908000000000084
-:1079D400000000403C2A308000000000E802D00093
-:1079E40000000FE180000000000000000000000023
-:1079F400000000000008947A50000000000000001D
-:107A04000318AD4E80F000000053A162A8000000EE
-:107A140055AF0E0000000000000000000000000050
-:107A2400010000000000B10000000000000200039B
-:107A3400E80000A0000000000023862000000000F1
-:107A440010000000000000000000000000000280A0
-:107A54000000000080A00000000000010003E968AD
-:107A640018A00000000001E00040000000038C00AA
-:107A740000000000000000000000000000000011F1
-:107A84007C08900201000000000008203D4800002E
-:107A9400004105B03442400100029ED300000400BE
-:107AA400000000000000000000000000000ABD40CB
-:107AB4008180014000000000084A3BDA00000144D4
-:107AC400ADB1EF404005000126980000140000000D
-:107AD40000000000000000000000000000000000A2
-:107AE400080000000030000291CB00D000000C37E9
-:107AF400EFC2C600000000000D00000000000000FE
-:107B04000000000000000000000000001980044094
-:107B1400000000000041696800B000000631B208AE
-:107B240020000000000001800000000000000000B0
-:107B340000000B4040000040003F00000000000037
-:107B44000000000006E9B8D000000080A02000007A
-:107B54000003FE9B10000000000000000000000570
-:107B640077802800000015CC780000C000000000D9
-:107B7400080001FFF9D000148003B542000002039D
-:107B840085FD0E000C000000000000000000B7C2DC
-:107B9400000800000000B98020000000000000037D
-:107BA400BEEC000020800AF03DC700800000000FFA
-:107BB4000002000000000000000080013B142010BF
-:107BC40000000000F9E1800000000000000179E9F4
-:107BD4007980008005F50607430000000008004096
-:107BE4000000000000000000000A0AC0400000007D
-:107BF400000031F000000000000200000039F880AD
-:107C040000000580F44003000000000300000000B1
-:107C14000000000000008205500028080000000059
-:107C240080E0200000000005000029DD9000200411
-:107C340005A5E54001800000000D9E020000000043
-:107C44000000000000050ACE00000003C000D0E0E0
-:107C54000000000000000052901DB09000000807D2
-:107C6400600280500030E7B0000C0000000000000B
-:107C74000000060A502E00080803C0C081900000CE
-:107C8400000000000110014DF8100000000D344008
-:107C940000280018EE80000800000000000000002A
-:107CA40000AF06C028000001603B30000000000067
-:107CB400000000000358B0020000000000000000B3
-:107CC400050FC0B90900000000000000000002A078
-:107CD40052940000010169E950000800000000000E
-:107CE400000202DF81840000000001E00000108F28
-:107CF40046978800000000000000000000F3081C04
-:107D04000000000020CE000000000000010000027E
-:107D1400D5EF00BA0000000001C28000001780F017
-:107D24008000000000000000000040F350266000C6
-:107D3400000002EE18000000000002800803D6FED6
-:107D4400180CC000000000000300100757D7000003
-:107D5400000000000000000000811E94000050415B
-:107D64006C190000004000000200044120100100D2
-:107D7400004040003D4740400016C3FF0800040097
-:107D840000000000000000A1DE402800510B6CCA76
-:107D940000C4014000000000011921C81080014402
-:107DA400001720024020102957D7010014000000BA
-:107DB400000000000000000000700003974D7000F8
-:107DC4000000000000000202836A100008000000A6
-:107DD400BC038500040F17EB8F4000000000000077
-:107DE40000000000000000000000966D90000000FC
-:107DF40000000000000340EB80A0100000553C0090
-:107E04000000000E3D9D0020000000000000000066
-:107E14000000F68020000241403F71D0088000003D
-:107E2400000000400A7C790000000FA03E4340009F
-:107E340000210DD90004080000000000000000101B
-:107E4400728004000011685A50D0108000000000B5
-:107E54000000027E50C000C00F55046040000020A6
-:107E64007CF8008008000000000000000050074477
-:107E740000000042BC0A700400000000000000037F
-:107E84000EEB010400000CBD2064000000000000A3
-:107E940000004000000000000000020A12E0600040
-:107EA4000000155C000A000000000000000A2EDC3F
-:107EB400018200000C3BFD460300000000058E001B
-:107EC400000000000000000000A002C4000008013F
-:107ED4007C0E50080000000000000001683B1900FF
-:107EE40000000F008000005000028300100000001A
-:107EF400000000000000030A16A00000000014CBDC
-:107F040001C0000000000000010290EBD0C000009E
-:107F14000F070003010000028CA50C000000000004
-:107F24000000000000A0024000000000000000C0AB
-:107F340000000000006000016C2B00E00000000065
-:107F4400A5C000000000000B0000000000000000BD
-:107F54000000030A17800000000000000000000079
-:107F64000000000001029559119140180057300695
-:107F740080000000000180000000000000000000FC
-:107F840000A006C0000008030E6800000000000006
-:107F940000000000140FD800000000F06822400028
-:107FA400004282DD00000800000000000000030A17
-:107FB40012806000000B1DFE500000000000000055
-:107FC400000029C17180000400D5FCE6C000408196
-:107FD4004C080001480000000000000000A00674E6
-:107FE40020000800142001E000000000000000430D
-:107FF400C00058040000000938020000440F03D1F7
-:10800400001C0000000000000000030A13860400A6
-:10801400000015E801E00000000000400003C0C0BB
-:10802400900A0000080D6002C000100F5EA59800C1
-:10803400000000000000000000A002C00000420395
-:10804400FC2800900100000000000003C40CF8B1FB
-:1080540000400F008143C70000140290080144004F
-:10806400000000000000030A13800000400814FE12
-:108074000000010000000000011BD17878A001403D
-:108084000F030002C00000168D8000009400000061
-:108094000000000040A0027420000000000010F066
-:1080A400000000000000000081FC0000000300F05C
-:1080B40002C00000040F17D0000000000000000000
-:1080C4000000030A1280000000000000198008402C
-:1080D40000000000000002F80000002000F102008F
-:1080E4000004040F57E580000000000000000000B9
-:1080F400000000000000004002F801D10000000070
-:1081040000100003FC3E0890000000054000002021
-:10811400001001D9890000000000000000000000E8
-:10812400000000003002917F79D0000000000000C0
-:108134000003E8DF38C000001008204000501100A0
-:108144001FE38C000C000000000000000000000091
-:108154000000000000000000000000000000000318
-:10816400FF48F0B00428069F00E000000002EDF094
-:10817400900000000000000000000000000000501B
-:108184000000000001E00000000000000001FDDD2F
-:1081940080000800169160C00820000167C1080132
-:1081A4004000000000000000000000000004020085
-:1081B400003C09000000000000000000015D010017
-:1081C4000020469F01400800000000099000800044
-:1081D4000000000000000000000000720100047BA9
-:1081E40079E00000000000000000066B19C00008E0
-:1081F400169129C01000000000011E01400000007B
-:10820400000000000105080000000000003F3000ED
-:108214000000000000000003FF6B7000000846939C
-:10822400400700002017C0838000200000000000E9
-:108234000000020556800000000014F919C0000077
-:10824400000000220003F97B0180000816916002FF
-:10825400000000A95E9B0000000000000000000078
-:10826400000000002000002316EB70000000000056
-:1082740001000200001F70A0000006910002C0006F
-:10828400000FC29080800000000000000000000089
-:1082940000000400021B004FB00000000000028038
-:1082A4000100117899B20000169160004000D0AF2F
-:1082B400D695000000000000000000000000001C33
-:1082C400200000100750010000000000000000031F
-:1082D400E800000080000EDF6C068600001FDCB0A2
-:1082E4000000000000000000000000000020040066
-:1082F400000006EC00800000000000020003E968B2
-:108304003000000017B97062C000001E9E8180001A
-:108314000000000000000000000000000000100247
-:10832400E80CF0005440000002000001400850F046
-:108334000020869340268000201542008800040017
-:108344000000000000000000000000005120695EF1
-:10835400B8C0014000000104000281E08010000068
-:10836400169171C28000011554811F001400000091
-:10837400000000000105080000000001542DF80071
-:108384000000000000000800025A000000000F0175
-:10839400804200000030C6D0180000000000000039
-:1083A40000001205528000000002945EF8000000F4
-:1083B40000000000000006CF01A000001F012B6296
-:1083C400F00400A2DFC01D1C00200142E00B0000ED
-:1083D40000000000000002217C303800140000007E
-:1083E40000000003F40F7900000043F0A0074020D0
-:1083F4008029A7C108000000028C100000000000C2
-:108404000000000000017DDA700008000000000098
-:108414000103697EB1C000D423D17842401300A97E
-:1084240077E9801800000000000000000000000050
-:1084340000000000000008F0000000000000000040
-:10844400003FF09000000FC020000000001680AD37
-:108454009000000000000000000000000000000088
-:10846400000000003810000000000002000014DDCD
-:10847400800000040585F942000000A940010C10A9
-:1084840000000000000000000000000000000001E7
-:108494007C3C00901000000000000000F82CB0D0DC
-:1084A40000000C29E167000000004F90000040002C
-:1084B400000000000000000000000000000014DEC6
-:1084C4000180C80000000070074AF0FBB2E0000819
-:1084D400081BBDC30000000006E00000800000008F
-:1084E4000F0000000000000C00000000143F110009
-:1084F4000000000000000001683B7800000004A5B3
-:108504006020000000300200180000000000080095
-:1085140000000000002000000002BD5901C000005E
-:10852400000000200102917FB9E100002AD7E44055
-:10853400000011B01C000F00000000000000180033
-:108544000000000000400001542B50820000000095
-:10855400000400016CEE7000000000000002000046
-:108564000020C2E000A0C0000000000000000000E5
-:1085740000000000000295E9101200000000000253
-:10858400000294DC9980000000000060402010008C
-:108594000795004C400000000000000000000000AF
-:1085A4003C002020980C5000000000000000000057
-:1085B400003F000000000C3D70000B1000061E8000
-:1085C400004800000000000000000000000004005B
-:1085D4003108F57D0000000000000000001014DDEB
-:1085E40000001400063BA4039000000B84D0080094
-:1085F4000000000000000000000000000000100067
-:10860400A80900F14040000000000203C00000007F
-:1086140000400F00802600010003C005080004008C
-:108624000000000000400000000000804101E8F864
-:1086340078100140000000000003C1600001014007
-:108644000F0580E241050083CC0581001400000081
-:108654000000000000F0000000000002BC2F00D069
-:10866400000000000280000000000000000000F78D
-:10867400FC6200000003C200000140000000000092
-:10868400000006F050000000000015EF1810000074
-:1086940000000100000000000008000000E3B7E350
-:1086A400C0000083DE010000C000007200801100E1
-:1086B40062002F8200000103D7D728080000F7D3F7
-:1086C4000C240200F3F708000002FFFF0000010180
-:1086D400BFBF44042020FBFB04142020EBEF100058
-:1086E4000420FDFD02004004FFFF00000040EFEF06
-:1086F40010200000F7DF28088584F7DF200400013C
-:10870400DBEB1C188000E7F700080080F7FF080087
-:108714000202FFF30C0C0200F3F30C080002F7F75B
-:1087240008080000F7F708000000FFF71008000031
-:10873400C7EF20000400EFCF31110004EDCE360462
-:108744000000DBF90A0C0000FFF500020000FFFF47
-:1087540000000404FBFB04000000FFFF0000000015
-:10876400EFFF10100000CBEF24242000FFFB0000DB
-:108774002020FFFF00082020E5F613190100FDED7D
-:1087840002220001FDD52A0A0000DFDD22000000DC
-:10879400FBDF04240000FFFB00000000FFFF0404D3
-:1087A4000000FFEB10100000CFDF22020101FFFDEB
-:1087B40000000000FFFF08080000FEE6111242005E
-:1087C400EFFD02000042F7F50E000202F9FB00047F
-:1087D4000000FFFF08002120F7F700082021F3FB29
-:1087E4000C141020EFE718081414F7F50A0A505077
-:1087F400F7F708081010F7F708101010EDE7120843
-:108804009511F7FD02001094FFFD06049090F1F31A
-:1088140008001010FFFF00000210BFBF4404020252
-:10882400FBFB14100000EFEF00100000FDFD020040
-:108834000000FFFF00000000EFEF10100404F7FF3A
-:1088440008080000F7FF00000000EFFB1C1E0000FA
-:10885400E3E50A0A0000F5F50A0A0400F5F10E043E
-:108864000004F9F300080000F7FF00000000FFFF18
-:1088740000000000FFEF10102000FFEF0000202098
-:10888400E7ED130B2020FDEC12160101F9E90E0AA5
-:108894000000FDF502020000FDFD02000000FBFBEC
-:1088A40004000000FFFF00100000EFEF10100100B3
-:1088B400EFFB04040001FBFF00000000FFFF0A00BF
-:1088C4000000F5F4130B0000EDED12004242FFF539
-:1088D4000A080002FDFD02023020FDFD06003030D2
-:1088E400FBFB00041111FFFB14041410EBEF100048
-:1088F4005014DFDF22021050FFFD00001010FFFFB4
-:108904000A081110FCF413121011EDED12029494E4
-:10891400F5F50A021090F9F906021010FFFD08009F
-:108924001210F7F7080C1212E3F3181C1010E7E703
-:1089340008080010FFF50A020000F7FF0000040019
-:10894400FDFF02020004FDED12120000FDED020223
-:108954000000F5FD060A0000F1F10A0E0000FDFF1B
-:1089640000000000FFFF04040404EBEB10140000FB
-:10897400EFFF00000000FDFD02000000FFFF00000B
-:108984000000FFEF10100000EFF708082020FFFFA1
-:1089940000022120FDFD0E160001E5E11A10000081
-:1089A400E7FD02080000FDF906060000FDF90200DB
-:1089B4000000FFFF0000010100008200800103FFAE
-:1089C400FF10000000EFEF10000000FFFF0208009E
-:1089D40000E5E51B030000FDFE10005202EFEB1C56
-:1089E4001C3052E3F700023030FFFD02021010F990
-:1089F400F904121110FFEF10100415EFEF001040EE
-:108A040040FBFB04000000FFFF00000000FDFD0A26
-:108A1400020101F7F401030000FFEF10108400E7E6
-:108A2400EF08180004F7FF00020000FDFD02061223
-:108A340002FBF914001210EFEB14141012FFEF00F4
-:108A4400001010DFDF22021010FFFD00000414F5F7
-:108A5400FD0A0A0000F6FC01020000EFEF1010000E
-:108A640000F7E708100000FDFB06040000FDFD020E
-:108A74000A0000E5F71C000400E3EB10180004EF03
-:108A8400FF00000000FFFD02020000FFFF020000E3
-:108A940000FDFD02020000FFFD10020000EBEF10DC
-:108AA400142020F7E30C120121F3F10E0A0000F563
-:108AB400FD02100000FFEF14140000EBEB100001A6
-:108AC40000FFFF00000001FDFD02000000FFFF00A9
-:108AD400000000EFFF10101000F7E708001210FF6D
-:108AE400FD02023012FDFD040A7272F3E310180055
-:108AF40010EFEF10000000EFFB04060400FBFD0282
-:108B0400024105FDFD00120040EFEF10100000FFD0
-:108B1400EF00000100FFFD0A020001E7E511090072
-:108B240000FFFE00000000FBEF1C140404E3E71048
-:108B3400180200EFEF10120002E9E916120000ED2E
-:108B4400EF10000202FFFF00041000FBFB00041002
-:108B540010FFFF02001010FDFD0A081010FFF601BF
-:108B6400010010FFFF00100000E7EF18180000EFED
-:108B7400E710140000EFEB16100000E9E9161400EA
-:108B840000EBEB04100000FFFF00000000DFDF2219
-:108B9400020000FFFD02020000FDF50A080000F6D5
-:108BA400FE01000000FFFF10000000E7E71810219D
-:108BB40020EBEF14140021E9EF12120000E5E51C8C
-:108BC400140000FBEB00000101FFFF00000000FFA8
-:108BD400FD02020000FFFD02061000FBFD04001070
-:108BE40010FFFB04041212EBFB141C2030E3E31C03
-:108BF400144220E3E31C180042EDE512120000EDDC
-:108C0400EF14140000EFFB00004140FFFF000000E0
-:108C140001FDFD02000000FFFF00000101FFFF183D
-:108C2400000000E7E712180000EDFD02000000FF5D
-:108C3400FF04000000F3F3081C0202EFEF10100021
-:108C440000EFEB14140000EFEF10120200EDED1230
-:108C5400120002EFEF10000000FFFF02001000FD01
-:108C6400FD0A081010E7E711011010FFFE000000D4
-:108C740010FFFF040C0000E7F318000000FFEF10E2
-:108C8400000000F9EB06120000EDFD00000000FFFB
-:108C9400FF04000000FBFB00000000FFFD020200D7
-:108CA40000FFF508080000F7FE01050000FBFF04C3
-:108CB400000000FFFB0C142000F3E3140421210046
-:108CC40000110162003F8200000103000000000067
-:108CD4000000001B1B0000000000001F1B00000020
-:108CE400000000041F00000000000000000000005D
-:108CF4000000001B000000000000001B1B0000001F
-:108D04000000001F1B0000000000001F1F000000E7
-:108D140000000000000000000000001B1B00000019
-:108D24000000001B1B0000000000001F1F000000CB
-:108D34000000001F1F000000000000001B000000D6
-:108D44000000001B1B000000000000001B000000CE
-:108D540000000004040000000000001F1F000000C9
-:108D6400000000001B0000000000001B1B000000AE
-:108D7400000000E4FB000000000000E4E400000048
-:108D84000000001FFF000000000000001B000000A6
-:108D9400000000F919000000000000E4F9000000E0
-:108DA400000000E4E4000000000000F7F700000009
-:108DB4000000000013000000000000F9F9000000AA
-:108DC400000000E4F9000000000000E4E4000000FA
-:108DD400000000F7F700000000000000F3000000AE
-:108DE400000000F9E900000000000014FD0000008C
-:108DF4000000001E1C000000000000F7FF0000003F
-:108E040000000000E1000000000000E9E9000000AB
-:108E14000000001CFD0000000000001E1A000000FD
-:108E2400000000EFFF00000000000000E10000006F
-:108E3400000000DDC90000000000001EDD0000008D
-:108E44000000003E3A000000000000BDBF0000002A
-:108E540000000000A9000000000000DDD9000000AF
-:108E6400000000A2FF000000000000A6A200000015
-:108E7400000000BDBD00000000000000B9000000BB
-:108E8400000000FFDD000000000000A6FF0000005D
-:108E94000000008486000000000000BDBD0000004A
-:108EA40000000000BD000000000000FFFD00000005
-:108EB40000000006FF0000000000000404000000A1
-:108EC4000000003D3D000000000000003D000000E7
-:108ED400000000FFFF00000000000006FF0000008B
-:108EE4000000000404000000000000FDFD0000007C
-:108EF40000000000FD000000000000FBFB0000007B
-:108F040000000000FB00000000000024000000003E
-:108F1400000000FDFD00000000000000F90000005A
-:108F2400000000FBFB000000000000FBFB00000051
-:108F3400000000FFFB000000000000FFFF00000035
-:108F440000000000FB000000000000FB2200000005
-:108F5400000000FBFB000000000000DFFB0000003D
-:108F6400000000FFFF0000000000000022000000DD
-:108F74000000002202000000000000FBFB000000D3
-:108F8400000000DFDB00000000000026FF000000FE
-:108F940000000000220000000000000000000000AB
-:108FA40000000000000000000000000000000000BD
-:108FB40000000000000000000000000000000000AD
-:108FC400000000000000000000000000000000009D
-:108FD400000000000000000000000000000000008D
-:108FE400000000000000000000000000000000007D
-:108FF400000000000000000000000000000000006D
-:10900400000000000000000000000000000000005C
-:10901400000000000000000000000000000000004C
-:10902400000000000000000000000000000000003C
-:10903400000000000000000000000000000000002C
-:10904400000000000000000000000000000000001C
-:10905400000000000000000000000000000000000C
-:1090640000000000000000000000000000000000FC
-:1090740000000000000000000000000000000000EC
-:1090840000000000000000000000000000000000DC
-:1090940000000000000000000000000000000000CC
-:1090A40000000000000000000000000000000000BC
-:1090B40000000000000000000000000000000000AC
-:1090C400000000000000000000000000008200809A
-:1090D40001032C2C0000000000001F3E00000000D3
-:1090E40000009F1F000000000000CCDE0000000014
-:1090F400000000480000000000003E2C00000000BA
-:1091040000001F3F0000000000009F9F00000000BF
-:109114000000DEDE00000000000000480000000047
-:1091240000003F3E0000000000009F3F00000000E0
-:1091340000009F9F000000000000DEDE0000000031
-:109144000000005A00000000000037360000000054
-:109154000000813700000000000089810000000049
-:1091640000005A5A000000000000005200000000F5
-:109174000000F636000000000000C1F60000000008
-:109184000000A981000000000000FAFA00000000BD
-:1091940000000052000000000000F4740000000011
-:1091A4000000C1F4000000000000A9E90000000074
-:1091B4000000F2FA0000000000000072000000004D
-:1091C4000000F474000000000000E5F4000000005A
-:1091D4000000EDED000000000000F2FE00000000C1
-:1091E4000000007200000000000074740000000021
-:1091F4000000A774000000000000CF8F00000000F2
-:109204000000767E000000000000007000000000F6
-:10921400000074740000000000009F74000000004F
-:1092240000009F9F00000000000074760000000012
-:1092340000000074000000000000746400000000DE
-:1092440000009B740000000000009B9B00000000D5
-:1092540000007676000000000000007400000000AA
-:109264000000606000000000000099700000000031
-:1092740000008999000000000000767600000000DC
-:1092840000000076000000000000606000000000A4
-:1092940000008960000000000000898900000000CF
-:1092A4000000767600000000000000760000000058
-:1092B40000006464000000000000896C00000000ED
-:1092C40000008189000000000000767600000000A4
-:1092D4000000007600000000000076760000000028
-:1092E4000000897E00000000000081890000000069
-:1092F4000000767600000000000000760000000008
-:1093040000007676000000000000A97E0000000046
-:109314000000C18900000000000076760000000013
-:1093240000000076000000000000777600000000D6
-:109334000000FF7F000000000000F7FF00000000B5
-:1093440000007777000000000000007600000000B5
-:1093540000007760000000000000DF7F00000000D4
-:109364000000B7FF00000000000077770000000055
-:109374000000006000000000000061200000000008
-:109384000000DF7F000000000000B79F0000000025
-:1093940000006177000000000000004000000000B1
-:1093A40000000000000000000000000000000000B9
-:1093B40000000000000000000000000000000000A9
-:1093C4000000000000000000000000000000000099
-:1093D4000000000000000000000000000000000089
-:1093E4000000000000000000000000000000000079
-:1093F4000000000000000000000000000000000069
-:109404000000000000000000000000000000000058
-:109414000000000000000000000000000000000048
-:109424000000000000000000000000000000000038
-:109434000000000000000000000000000000000028
-:109444000000000000000000000000000000000018
-:109454000000000000000000000000000000000008
-:1094640000000000000000000000000000000000F8
-:1094740000000000000000000000000000000000E8
-:1094840000000000000000000000000000000000D8
-:1094940000000000000000000000000000000000C8
-:1094A40000000000000000000000000000000000B8
-:1094B40000000000000000000000000000000000A8
-:1094C4000000000000000000000000000000000098
-:1094D40000000000110262002F820000010300005E
-:1094E4000020000000000022000000000022000014
-:1094F40000000002000000000022000000000066DE
-:10950400000000000066000000000066000000008B
-:10951400006200000000004400000000004400005D
-:109524000000003700000000004400000000006458
-:10953400000000000076000000000063000000004E
-:109544000046000000000066000000000037000034
-:1095540000000046000000000062000000000066F9
-:10956400000000000046000000000026000000008B
-:1095740000620000000000260000000000640000FB
-:1095840000000066000000000066000000000040CB
-:10959400000000000044000000000044000000003F
-:1095A400000400000000006600000000000000004D
-:1095B40000000066000000000020000000000046DB
-:1095C4000000000000200000000000420000000035
-:1095D40000260000000000000000000000620000FF
-:1095E40000000064000000000046000000000024A9
-:1095F40000000000004600000000002200000000FF
-:1096040000200000000000460000000000200000D0
-:1096140000000002000000000044000000000044BC
-:109624000000000000660000000000400000000090
-:1096340000260000000000200000000000020000DE
-:1096440000000020000000000002000000000022D2
-:109654000000000000440000000000620000000060
-:10966400000400000000002200000000004400008C
-:10967400000000440000000000330000000000442B
-:109684000000000000600000000000160000000060
-:1096940000610000000000060000000000660000F9
-:1096A400000000110000000000440000000000223F
-:1096B400000000000044000000000044000000001E
-:1096C400002200000000004000000000002600000E
-:1096D40000000060000000000046000000000004DC
-:1096E4000000000000000000000000440000000032
-:1096F40000440000000000000000000000660000BC
-:1097040000000000000000000066000000000020CF
-:1097140000000000006600000000002200000000BD
-:1097240000560000000000230000000000000000BC
-:109734000000002200000000006400000000004659
-:1097440000000000002000000000004600000000AF
-:10975400002200000000002000000000006600005D
-:109764000000002200000000000200000000004091
-:10977400000000000044000000000026000000007B
-:109784000040000000000004000000000020000071
-:1097940000000002000000000020000000000002A1
-:1097A400000000000022000000000044000000004F
-:1097B4000022000000000000000000000022000061
-:1097C4000000000000000000000000000000003362
-:1097D4000000000000000000000000200000000065
-:1097E400820080010300000032000000000023001A
-:1097F4000000000002000000000022000000000041
-:109804001100000000000000000000002200000021
-:109814000000000000000000000000000000220022
-:109824000000000000000000000022000000000012
-:109834002000000000000200000000000000000002
-:109844000000000000000000000000000000000014
-:1098540000000000000000000000220000000000E2
-:1098640000000000000022000000000020000000B2
-:10987400000022000000000022000000000056004A
-:1098840000000000230000000000000000000000B1
-:109894002200000000002000000000000200000080
-:1098A4000000200000000000020000000000220070
-:1098B4000000000020000000000022000000000062
-:1098C4002200000000000200000000000000000070
-:1098D4000000000000000000220000000000000062
-:1098E4000000000000000000000020000000000054
-:1098F4000200000000002000000000000200000040
-:1099040000003300000000005400000000002300A9
-:109914000000000000000000000033000000000010
-:1099240011000000000020000000000013000000EF
-:1099340000001000000000002100000000003200C0
-:1099440000000000230000000000130000000000DD
-:1099540022000000000011000000000000000000D0
-:1099640000003300000000001100000000000000AF
-:1099740000000000220000000000000000000000C1
-:10998400320000000000310000000000030000006D
-:1099940000000000000000001100000000001100A1
-:1099A40000000000000000000000110000000000A2
-:1099B400320000000000010000000000320000003E
-:1099C4000000210000000000020000000000000070
-:1099D4000000000010000000000023000000000050
-:1099E400000000000000330000000000310000000F
-:1099F400000002000000000031000000000012001E
-:109A040000000000230000000000310000000000FE
-:109A1400120000000000010000000000100000001F
-:109A240000001100000000000100000000003200EE
-:109A340000000000010000000000330000000000EE
-:109A440020000000000002000000000020000000D0
-:109A54000000020000000000330000000000550078
-:109A640000000000330000000000100000000000AF
-:109A7400330000000000110000000000210000007D
-:109A8400000013000000000011000000000031007D
-:109A9400000000001200000000001100000000009F
-:109AA400110000000000230000000000110000006D
-:109AB400000010000000000033000000000011004E
-:109AC400000000000100000000002200000000006F
-:109AD400000000000000330000000000310000001E
-:109AE40000001300000000110362003F8200000127
-:109AF400030000000000000000000000000000005F
-:109B04000000000000000000000000000000000051
-:109B14000000000000000000000000000000000041
-:109B24000000000000000000000000000000000031
-:109B34000000000000000000000000000000000021
-:109B44000000000000000000000000000000000011
-:109B54000000000000000000000000000000000001
-:109B640000000000000000000000000000000000F1
-:109B740000000000000000000000000000000000E1
-:109B840000000000000000000000000000000000D1
-:109B940000000000000000000000000000000000C1
-:109BA40000000000000000000000000000000000B1
-:109BB40000000000000000000000000000000000A1
-:109BC4000000000000000000000000000000000091
-:109BD4000000000000000000000000000000000081
-:109BE4000000000000000000000000000000000071
-:109BF4000000000000000000000000000000000061
-:109C04000000000000000000000000000000000050
-:109C14000000000000000000000000000000000040
-:109C24000000000000000000000000000000000030
-:109C34000000000000000000000000000000000020
-:109C44000000000000000000000000000000000010
-:109C54000000000000000000000000000000000000
-:109C640000000000000000000000000000000000F0
-:109C740000000000000000000000000000000000E0
-:109C840000000000000000000000000000000000D0
-:109C940000000000000000000000000000000000C0
-:109CA40000000000000000000000000000000000B0
-:109CB40000000000000000000000000000000000A0
-:109CC4000000000000000000000000000000000090
-:109CD4000000000000000000000000000000000080
-:109CE4000000000000000000000000000000000070
-:109CF4000000000000000000000000000000000060
-:109D0400000000000000000000000000000000004F
-:109D1400000000000000000000000000000000003F
-:109D2400000000000000000000000000000000002F
-:109D3400000000000000000000000000000000001F
-:109D4400000000000000000000000000000000000F
-:109D540000000000000000000000000000000000FF
-:109D640000000000000000000000000000000000EF
-:109D740000000000000000000000000000000000DF
-:109D840000000000000000000000000000000000CF
-:109D940000000000000000000000000000000000BF
-:109DA40000000000000000000000000000000000AF
-:109DB400000000000000000000000000000000009F
-:109DC400000000000000000000000000000000008F
-:109DD400000000000000000000000000000000007F
-:109DE400000000000000000000000000000000006F
-:109DF400000000000000000000000000000000005F
-:109E0400000000000000000000000000000000004E
-:109E1400000000000000000000000000000000003E
-:109E2400000000000000000000000000000000002E
-:109E3400000000000000000000000000000000001E
-:109E4400000000000000000000000000000000000E
-:109E540000000000000000000000000000000000FE
-:109E640000000000000000000000000000000000EE
-:109E740000000000000000000000000000000000DE
-:109E840000000000000000000000000000000000CE
-:109E940000000000000000000000000000000000BE
-:109EA40000000000000000000000000000000000AE
-:109EB400000000000000000000000000000000009E
-:109EC400000000000000000000000000000000008E
-:109ED400000000000000000000000000000000007E
-:109EE400000000000000000000000000000000006E
-:109EF4000000008200800103000000000000000058
-:109F0400000000000000000000000000000000004D
-:109F1400000000000000000000000000000000003D
-:109F2400000000000000000000000000000000002D
-:109F3400000000000000000000000000000000001D
-:109F4400000000000000000000000000000000000D
-:109F540000000000000000000000000000000000FD
-:109F640000000000000000000000000000000000ED
-:109F740000000000000000000000000000000000DD
-:109F840000000000000000000000000000000000CD
-:109F940000000000000000000000000000000000BD
-:109FA40000000000000000000000000000000000AD
-:109FB400000000000000000000000000000000009D
-:109FC400000000000000000000000000000000008D
-:109FD400000000000000000000000000000000007D
-:109FE400000000000000000000000000000000006D
-:109FF400000000000000000000000000000000005D
-:10A00400000000000000000000000000000000004C
-:10A01400000000000000000000000000000000003C
-:10A02400000000000000000000000000000000002C
-:10A03400000000000000000000000000000000001C
-:10A04400000000000000000000000000000000000C
-:10A0540000000000000000000000000000000000FC
-:10A0640000000000000000000000000000000000EC
-:10A0740000000000000000000000000000000000DC
-:10A0840000000000000000000000000000000000CC
-:10A0940000000000000000000000000000000000BC
-:10A0A40000000000000000000000000000000000AC
-:10A0B400000000000000000000000000000000009C
-:10A0C400000000000000000000000000000000008C
-:10A0D400000000000000000000000000000000007C
-:10A0E400000000000000000000000000000000006C
-:10A0F400000000000000000000000000000000005C
-:10A10400000000000000000000000000000000004B
-:10A11400000000000000000000000000000000003B
-:10A12400000000000000000000000000000000002B
-:10A13400000000000000000000000000000000001B
-:10A14400000000000000000000000000000000000B
-:10A1540000000000000000000000000000000000FB
-:10A1640000000000000000000000000000000000EB
-:10A1740000000000000000000000000000000000DB
-:10A1840000000000000000000000000000000000CB
-:10A1940000000000000000000000000000000000BB
-:10A1A40000000000000000000000000000000000AB
-:10A1B400000000000000000000000000000000009B
-:10A1C400000000000000000000000000000000008B
-:10A1D400000000000000000000000000000000007B
-:10A1E400000000000000000000000000000000006B
-:10A1F400000000000000000000000000000000005B
-:10A20400000000000000000000000000000000004A
-:10A21400000000000000000000000000000000003A
-:10A22400000000000000000000000000000000002A
-:10A23400000000000000000000000000000000001A
-:10A24400000000000000000000000000000000000A
-:10A2540000000000000000000000000000000000FA
-:10A2640000000000000000000000000000000000EA
-:10A2740000000000000000000000000000000000DA
-:10A2840000000000000000000000000000000000CA
-:10A2940000000000000000000000000000000000BA
-:10A2A40000000000000000000000000000000000AA
-:10A2B400000000000000000000000000000000009A
-:10A2C400000000000000000000000000000000008A
-:10A2D400000000000000000000000000000000007A
-:10A2E400000000000000000000000000000000006A
-:10A2F400000000000000000000002206DE0106004D
-:10A30400040000000103000001000000010000003F
-:10A3140003000000010000000F0000000F00000017
-:10A324000000000036A500080018024010000000DC
-:10A33400060400003BA500080018024008000000C5
-:10A34400060301003EA500080018024002000000B8
-:10A354000601010045A500080018024004000000A1
-:10A36400060201000000000000000000005400404C
-:10A374000004024040000000060004000004024003
-:10A38400000200000900040000002000801A0600FA
-:10A39400004000001F20000000000000000000003A
-:10A3A40000580040001402400200000001000400B4
-:10A3B40000140240010000000000040000004000FE
-:10A3C400801A0600FFBF00002122000000000000E8
-:10A3D400F513000801000300820007008400070051
-:10A3E4000100030002000300400003008000070096
-:10A3F40084000700000001000000000000000008C5
-:10A40400004000080080000800C0000800000108A7
-:10A414000000020800000408000006080000080804
-:10A4240000000A0800000C0800000E0800000800E4
-:10A4340010001800200028003000380040004800B8
-:10A4440050005800537475636B20627574746F6E9A
-:10A4540020726567697374657220697320696E760A
-:10A46400616C69642C20636C656172696E672E008F
-:10A47400427574746F6E20697320707573686564B7
-:10A4840020617420626F6F740069636534306C708E
-:10A494002E630043444F4E45206E6F74206C6F77DB
-:10A4A40020647572696E6720726573657400435227
-:10A4B40045534554206E6F7420686967682064753D
-:10A4C40072696E6720726573657400446973706C99
-:10A4D400617920627573792D776169742074696D6F
-:10A4E400656F7574206578706972656421004469CC
-:10A4F40073706C617920696E697469616C697A65DD
-:10A5040064206166746572200020726574726965E6
-:10A51400732E00446973706C617920696E69746983
-:10A52400616C697A6174696F6E206661696C6564D7
-:10A534002E004261636B0055700053656C65637453
-:10A5440000446F776E006372632E63006932632E7A
-:10A554006300493243206465766963652049442079
-:10A564006F7574206F6620626F756E647320256446
-:10A5740020286D61783A20256429006F6E0073707D
-:10A58400692E6300206973206F7574736964652094
-:10A5940073797374656D20666C6173680D0A00735A
-:10A5A400797374656D5F666C6173685F65726173FE
-:10A5B4006528002C2000290D0A006661696C656419
-:10A5C40020746F20657261736520736563746F72A4
-:10A5D400200073797374656D5F666C6173685F776F
-:10A5E4007269746528006661696C656420746F2003
-:10A5F40077726974652061646472657373200049BD
-:10A604006E76616C6964206669726D77617265202B
-:10A614006465736372697074696F6E210043686561
-:10A62400636B73756D6D696E67206669726D7761B2
-:10A6340072652075706461746500496E76616C6939
-:10A6440064206669726D77617265204352432069A4
-:10A654006E2053504920666C6173682100657261F5
-:10A6640073655F6F6C645F6669726D7761726500B4
-:10A6740077726974655F6E65775F6669726D77611D
-:10A68400726500436865636B73756D6D696E6720F1
-:10A69400002062797465730D0A00436865636B7307
-:10A6A400756D202D2077616E746564200020676FBE
-:10A6B4007420004F757220696E7465726E616C202F
-:10A6C400666C61736820636F6E74656E7473206169
-:10A6D4007265206261642028636865636B73756DBD
-:10A6E400206661696C656429212054686973206956
-:10A6F40073207265616C6C792062616421004F750E
-:10A70400722070726576696F7573206669726D77F1
-:10A7140061726520757064617465206661696C6539
-:10A72400642C2061626F7274696E67207570646155
-:10A7340074652E004E6577206669726D7761726567
-:10A7440020697320617661696C61626C6521004CDB
-:10A754006F6164696E67207265636F7665727920D4
-:10A764006669726D77617265004661696C65642023
-:10A77400746F206C6F6164207265636F76657279A3
-:10A78400206669726D776172652C20737472696BCF
-:10A7940065206F6E652E2054727920616761696E41
-:10A7A4002E004661696C656420746F206C6F61646F
-:10A7B400207265636F76657279206669726D776160
-:10A7C40072652C20737472696B652074776F2E2008
-:10A7D40054727920616761696E2E004661696C6507
-:10A7E4006420746F206C6F6164207265636F76659A
-:10A7F4007279206669726D776172652C2073747248
-:10A80400696B652074687265652E20534144205736
-:10A81400415443480048415244204641554C540059
-:10A8240065786974207374616E64627900205F5F77
-:10A834005F5F202020202020202020202020202096
-:10A84400205F5F002F5C20205F605C2020202020A0
-:10A854002020202020202F275F5F605C005C205C8C
-:10A864002C5C4C5C5F5C202020205F5F5F202F5CB1
-:10A87400205C2F5C205C20205F5F20205F5F202015
-:10A884005F5F20205F5F20205F5F00205C2F5F5CA4
-:10A894005F5F205C20202F27205F20605C205C20ED
-:10A8A4005C205C205C2F5C205C2F5C205C2F5C2097
-:10A8B4005C2F5C205C2F5C205C002020202F5C201F
-:10A8C4005C4C5C205C2F5C205C2F5C205C205C205A
-:10A8D4005C5F5C205C205C205C5F2F205C5F2F2031
-:10A8E4005C205C205C5F5C205C002020205C20609D
-:10A8F4005C5F5F5F5F5C205C5F5C205C5F5C205C36
-:10A904005F5F5F5F2F5C205C5F5F5F785F5F5F2FDF
-:10A91400275C2F605F5F5F5F205C00202020205C4D
-:10A924002F5F5F5F5F5F2F5C2F5F2F5C2F5F2F5C5C
-:10A934002F5F5F5F2F20205C2F5F5F2F2F5F5F2FC4
-:10A94400202020602F5F5F5F2F3E205C00202020AE
-:10A9540020202020202020202020202020202020F3
-:10A9640020202020202020202020202020202020E3
-:10A9740020202020202020202F5C5F5F5F2F0020DC
-:10A9840020202020202020202020202020202020C3
-:10A9940020202020202020202020202020202020B3
-:10A9A400202020202020202020205C2F5F5F2F00EB
-:10A9B4004C617374206669726D7761726520626F91
-:10A9C4006F742077617320737461626C653B2063DC
-:10A9D4006C65617220737472696B657300486F6C87
-:10A9E4006420646F776E205550202B204241434BE6
-:10A9F40020666F72203520736563732E20746F2078
-:10AA0400666F7263652D626F6F7420505246004604
-:10AA140069726D776172652069732065726173650F
-:10AA240064005761746368646F672063617573655C
-:10AA340064206120726573657400536F6674776176
-:10AA44007265206661696C757265206361757365F2
-:10AA5400642061207265736574004661696C656485
-:10AA640020746F207374617274206669726D7761EB
-:10AA740072652C20737472696B65207468726565E5
-:10AA84002E004661696C656420746F207374617272
-:10AA940074206669726D776172652C2073747269B3
-:10AAA4006B652074776F2E004661696C6564207451
-:10AAB4006F207374617274206669726D7761726558
-:10AAC4002C20737472696B65206F6E652E00426F63
-:10AAD4006F74696E67206669726D77617265204074
-:10AAE40020002E2E2E0D0A0D0A00466F7263652D6E
-:10AAF400626F6F74696E67207265636F76657279D1
-:10AB0400206D6F64652E2E2E00536F66747761720C
-:10AB140065206661696C7572653B20726573657446
-:10AB240074696E6721004153534552543A20002002
-:10AB340020003A0041535345525400415353455267
-:10AB4400544E002A2A2A20575446200053544D3389
-:10AB5400320053544D3332207065726970686572E7
-:10AB6400616C206C696272617279207472697070B0
-:10AB7400656420616E206173736572740043524F83
-:08AB8400414B204F4F4D000032
-:10AB8C00FF00000000010203040102030406070891
-:04AB9C0009000000AC
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/boot_v1_5@1447134832.bin b/bin/boot/boot_v1_5@1447134832.bin
deleted file mode 100755
index d014ccbc42..0000000000
Binary files a/bin/boot/boot_v1_5@1447134832.bin and /dev/null differ
diff --git a/bin/boot/boot_v1_5@1447134832.hex b/bin/boot/boot_v1_5@1447134832.hex
deleted file mode 100644
index 6100a99676..0000000000
--- a/bin/boot/boot_v1_5@1447134832.hex
+++ /dev/null
@@ -1,1062 +0,0 @@
-:020000040800F2
-:10000000482001208D2C0008ED2F0008ED2F00085E
-:10001000ED2F0008ED2F0008ED2F00080000000074
-:10002000000000000000000000000000ED2F0008AC
-:10003000ED2F000800000000ED2F0008ED2F000854
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0C2FD3A
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000AFFD05B05DF804FBE2
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:080188009BFD05B05DF804FBCE
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F06CFCDDF820C026
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F00DFC089B9CE0BA4268
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00C83F00084B45F7DBEDE70D9907910798BC
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01CF3F0008D2
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C00BFF34F8F044A054BD16801F4E0610B43E0
-:10191C00D360BFF34F8FFEE700ED00E00400FA0543
-:10192C0010B5044608484021FFF784FC0028F9D084
-:10193C0005482146FFF77AFC03484021FFF77AFC63
-:10194C000028F9D010BD00BF00480040014608B582
-:10195C000448FFF757FC03480221FFF755FC002809
-:10196C00F9D008BD0038004000B9074803680133BE
-:10197C0008D04368013305D0C069044BC31A5842E0
-:10198C005841704700207047004000086F57654E63
-:10199C00074B1A69C2F306427F2A07D11869C0F3B4
-:1019AC000C00B0F1FF0358425841704700207047BB
-:1019BC000028004000F13F4000F57E00800A082816
-:1019CC000FD8084A52F820305BB1013B42F8203066
-:1019DC003BB9012101FA00F0034B1A6B22EA00001B
-:1019EC0018637047200000200038024000F13F408F
-:1019FC0000F57E00800A08280DD8074A52F82030DE
-:101A0C00591C42F8201033B9012101FA00F0034BA4
-:101A1C001A6B1043186370472000002000380240F6
-:101A2C0010B50C4C2046FFF7E1FF072001F01AFB24
-:101A3C004FF4805100222046FFF776FB042001F082
-:101A4C0011FB2046FFF7B6FF4FF480400021FFF753
-:101A5C0067F810BD0004024010B50B4C01214FF487
-:101A6C008040FFF75DF82046FFF7C0FF20464FF49B
-:101A7C0080510122FFF758FB072001F0F3FA2046B2
-:101A8C00FFF798FF10BD00BF00040240F0B55E25C3
-:101A9C006843204BB0FBF1F51A68ADF6DC3D95427E
-:101AAC0034D002AC00214FF43D6220461D60FEF79D
-:101ABC00CEFA1B238DE81800174810214022692309
-:101ACC0001F0B3FA08238DE818001448602318219C
-:101ADC006A2201F0AAFA0DF2FA760DF28E73002248
-:101AEC00AA420DD002F11900C0B2C108012700F0C2
-:101AFC00070007FA00F05F5C013238435854EFE7F7
-:101B0C001233B342EBD1204601F0F9FA0DF6DC3D6D
-:101B1C00F0BD00BF00000020FC370008903B00081F
-:101B2C002DE9F043ADF6DC3D02AC00214FF43D62F3
-:101B3C0080462046FEF78BFA2C238DE818002022D5
-:101B4C00284818215C2301F070FA1C2215460F2737
-:101B5C00974007EA0807D740234B242101FB07379E
-:101B6C000DF50366002117F801C00023082B07D0E0
-:101B7C000120984010EA0C0F0CBF0020012003E05C
-:101B8C007818407800F0010078B15819C0B24FEACB
-:101B9C00D00E4FF0010900F0070009FA00F016F81A
-:101BAC000E9040EA090006F80E000133092BDDD136
-:101BBC000231242906F11206D5D10B35742DA2F170
-:101BCC000402C4D10E238DE81800102190226D233D
-:101BDC00064801F02AFA204601F091FA0DF6DC3D98
-:101BEC00BDE8F083EC350008E83200082835000821
-:101BFC0010B5ADF6D83D02AC204600214FF43D6245
-:101C0C00FEF725FA1B238DE81800102140226923CA
-:101C1C00044801F00AFA204601F071FA0DF6D83D9D
-:101C2C0010BD00BFFC3700082DE9F74F434E444F61
-:101C3C0001214FF48040FEF773FF3046FFF7D6FECC
-:101C4C003846404CFFF7D2FE30460D210522FFF7F7
-:101C5C0070FA052230460F21FFF76BFA3046214609
-:101C6C000125FFF70EFA2023384621462360257103
-:101C7C00A5714FF0000A01934FF4805BFFF701FA56
-:101C8C00304621464FF002084FF48049257184F804
-:101C9C0006A0C4F800B0FFF7F4F93046214684F8EA
-:101CAC000480C4F80080FFF7ECF921462571A5717A
-:101CBC00C4F80090244C3046FFF7E3F92046FFF7B8
-:101CCC0049F920462149FFF76FFA20462946FFF7CC
-:101CDC008AFA019B384619465246FFF725FA2A46DE
-:101CEC0030464946FFF720FA40462946FEF718FFD2
-:101CFC00A4F5505480232380F92323854FF4F0421C
-:101D0C004FF6FF13E3623046A28329462364424612
-:101D1C00A4F820B0FFF70DFA29462046A582FEF75D
-:101D2C002FFD3846FFF746FE3046FFF743FE484688
-:101D3C005146FEF7F5FE03B0BDE8F08F00040240FB
-:101D4C000008024004000020003800400C00002075
-:101D5C0010B5074C2046FFF749FE20461021FFF72F
-:101D6C00DFF92046FFF726FE012001F07BF910BDBC
-:101D7C000000024038B50A4B0C2404FB00346068A8
-:101D8C00FFF734FE21896068FFF7C4F905466068E7
-:101D9C00FFF710FED5F1010038BF002038BD00BFA1
-:101DAC00A032000810B5064C2046FFF71FFE204657
-:101DBC001021FFF7B7F92046FFF7FCFD10BD00BF5F
-:101DCC0000000240F0B587B0FFF7E2FD002841D1DA
-:101DDC000320FFF769F807460420FFF765F8474B27
-:101DEC000A241A68C2F30545C2F30626C2F302138D
-:101DFC0002F00F0204FB0322330906F00F0604FB6A
-:101E0C0003662B0905F00F0504FB03533C2505FB6A
-:101E1C00036305FB0323191A44BF01F5A83101F52F
-:101E2C00C07107EB91210320FFF72EF803A8FFF7F1
-:101E3C00A8F903A8FEF704FF01A8FFF7A8F901A968
-:101E4C000020FEF741FF02A8FFF7A7F9002002A926
-:101E5C00FEF7A4FF0A2442F2107501F072F910B9D2
-:101E6C00013DFAD107E0264D01F06BF908B1013DB7
-:101E7C00FAD1013CEFD10020FEF7A2FD00214FF278
-:101E8C000400FFF72DF84FF43C50FFF755F81D4BAD
-:101E9C0001201A6842F004021A60FEF791FD1A4BF9
-:101EAC001B781BB1194801F06BF908E01848FEF7D4
-:101EBC0011F9174902461748FEF7EDF970B11648AB
-:101ECC0001F05EF90020FEF7FFFF08200121FEF76C
-:101EDC00C7FF4FF400400121FFF702F80F4801F053
-:101EEC004FF9084B1A6842F002021A600C4B1A693F
-:101EFC0042F004021A6130BF07B0F0BD0028004068
-:101F0C00A086010000700040017AFF1F763900089E
-:101F1C008B3900082078FF1F90390008A53900087C
-:101F2C0000ED00E0B0F1006F10B504460BD20D4887
-:101F3C0001F01DF9204601F029F90B4801F020F9B8
-:101F4C004FF0FF3010BD094A002352F8041FA14284
-:101F5C0002D851688C4202D30133072BF5D11846B5
-:101F6C0010BD00BFB93A0008B63900087C32000831
-:101F7C0008B5024801F004F9FFF7C2FCCF3900089C
-:101F8C0010B504460A480221FFF73EF90028F9D0A3
-:101F9C0007482146FFF736F905480121FFF734F9C8
-:101FAC000028F9D00248FFF72AF9C0B210BD00BFD3
-:101FBC00003001402DE9F04F87B00121814600AF80
-:101FCC000020FFF763FD042001F067F807F10C0017
-:101FDC0049460C2201F0FFF8FD683C690C2DD7F83E
-:101FEC0014B013D0994801F0C2F8284601F0CEF88D
-:101FFC00974801F0BCF8204601F0C8F8954801F06C
-:10200C00B6F8584601F0C2F8934833E0934801F013
-:10201C00B7F84FF480500121FEF776FD09F10C0959
-:10202C00EA46FEF7EFFBA0B06E462546C846802D6B
-:10203C000CD941463046802201F0CDF830462021A3
-:10204C00FEF7ECFB803D08F18008F0E725B1304647
-:10205C0041462A4601F0BFF82946304600F0CAFF37
-:10206C00002180464FF48050FEF74EFDD845D546F2
-:10207C0004D07B4801F084F80120E3E088B0684686
-:10208C004946202201F0A7F86846FFF76DFC7860FE
-:10209C007448D54601F074F87B682BB9724801F08E
-:1020AC006FF804F5404600E02646002E3BD06F4802
-:1020BC00FFF738FF05466E483044FFF733FF002D1D
-:1020CC00824630DB00282EDB431B01334FEA430BE7
-:1020DC0000205946FFF7DAFCFEF7C0FB654B0026E3
-:1020EC0003EB45033B6055451BDCF320FEF7CCFBB3
-:1020FC003B68002133F81600FEF7E6FB082806F1D2
-:10210C00010608D05C4801F032F8284601F03EF890
-:10211C0001F025F805E030465946FFF7B7FC0135CC
-:10212C00E1E7FEF7A9FB554801F02AF87B680BB1F3
-:10213C004E4B00E0524B7B6063083B600025A54290
-:10214C003CD2661BB6F5803F28BF4FF480362EB1CB
-:10215C004C4805EB0901324601F03DF8D7F804A0D4
-:10216C00FEF77CFBF320FEF78FFBAA444FF0000B2D
-:10217C00B34519D043490BEB0A0011F80B10FEF7CD
-:10218C00DBFB08280DD0404800F0F1FF504600F072
-:10219C00FDFF00F0E4FFFEF76FFB3C4800F0F0FFA2
-:1021AC000CE00BF1010BE3E7FEF766FB3B68214605
-:1021BC0003EB5500FFF76AFC5D44C0E7344800F0C0
-:1021CC00D6FF204600F0E2FF324800F0D9FF002095
-:1021DC00FFF7CAFB20B1304800F0D2FF234D03E0DB
-:1021EC002E4800F0CDFF264D4FF480500121A6085B
-:1021FC00FEF78AFCFEF706FB31462846FEF70EFB7F
-:10220C0004F0030105EB860000F0F4FE0021044607
-:10221C004FF48050FEF778FC214800F0A8FF4046B0
-:10222C0000F0B4FF1F4800F0A2FF204600F0AEFF04
-:10223C0000F095FF444504D01B4800F0A1FF02209C
-:10224C0000E000201C37BD46BDE8F08FDA390008ED
-:10225C00E3390008ED390008F4390008133A000896
-:10226C00303A0008533A0008663A0008004000086B
-:10227C00FF3F0008D83200087E3A0008963A000862
-:10228C000000010844000020A93A0008C23A0008E6
-:10229C00CD3A0008DB3A0008E23A0008073B000898
-:1022AC002C3B00083F3B0008453B000870B54FF441
-:1022BC0080500121FEF740FCFFF774FD0520164C01
-:1022CC00FFF75EFE002C04F1FF341FDCFFF740FD2E
-:1022DC00FFF768FD9F20FFF753FEA920FFF750FE84
-:1022EC000546A920FFF74CFE0646A920FFF748FE3D
-:1022FC003602044646EA0545FFF72AFD4FF48050A6
-:10230C000021FEF719FC45EA040070BDA920FFF777
-:10231C0037FEC307D6D4D9E70090D00308B50446DE
-:10232C00114800F024FF204600F030FF00F017FFAA
-:10233C002046FFF7F5FB00F004FF0C4B20F00400E7
-:10234C0018701D4600F0FDFE2B7800F0FB00834258
-:10235C0001D10B2401E000F0C0FE013CF2D04FF49F
-:10236C007A7000F07FFEF8E7F03B00084400012093
-:10237C0080B5464B4FF4C06290B01A6001214FF00B
-:10238C008050FEF7CDFB0120FEF714FB4048FFF711
-:10239C002DFB4FF480200121FEF7C2FB3C480A21A3
-:1023AC000722FEF7C6FE072239480B21FEF7C1FEB5
-:1023BC0010AF4FF4806347F8383D00244FF001080C
-:1023CC000225334839468DF80E408DF80F808DF874
-:1023DC000C508DF80D50FEF754FE4FF400632C4852
-:1023EC00394602938DF80C5004AEFEF74AFE4FF4BA
-:1023FC006133049327480C233146ADF81A30ADF8FD
-:10240C001440ADF81640ADF81840ADF81C40FEF77E
-:10241C00CFFD41461F48FEF7FDFE1D48FFF7CAFAE7
-:10242C001D4800F0A4FE1D4B586F00F0AFFE00F0ED
-:10243C0096FE7920FEF7C8FB404502D1184800F003
-:10244C009FFE012000F014FE10B90121FEF71CFDC7
-:10245C004120FEF7B9FB58BB124800F091FE012059
-:10246C00FEF7E0FA47F230544120FEF7ADFBF8B925
-:10247C004FF47A7000F0F6FD013CF5D10A4800F0FB
-:10248C007FFEFFF7D1FB094837E100BF003C02405B
-:10249C000008024000480040FC3B000800380240A5
-:1024AC000C3C00081C3C0008343C0008114550FE54
-:1024BC004FF48070FEF70AFB0120FEF71FFBFEF7BE
-:1024CC00E1FB0020FEF77CFA01214FF48040FEF77F
-:1024DC0033FBBB48FFF78AFA3046FEF712FE0024A6
-:1024EC000125B74831468DF815408DF816408DF80A
-:1024FC00174004958DF81450FEF7C3FD2246B048E2
-:10250C002946FEF711FEAE48FFF754FAAD4C04F124
-:10251C00300954F8040CFFF769FA3046FEF7F1FD68
-:10252C00236854F8040C4FF000083146022504933C
-:10253C008DF814808DF815508DF817800C34FEF73B
-:10254C00A0FD54F8100CFFF735FA4C45E1D14FF4CF
-:10255C0080404146FEF7F0FA4FF4807000F088FDA1
-:10256C00002800F0CC804FF4807000F08BFDFFF75A
-:10257C0029FC954800F004FE0220FEF795FC9349D7
-:10258C00884202D00220FEF77FFC914800F0EFFD5C
-:10259C000220FEF789FC00F0F9FD00F0E0FD4FF49D
-:1025AC00804000F065FD90B18A4800F0E9FD4FF4E1
-:1025BC00804000F067FD082000F064FD102000F062
-:1025CC0061FD202000F05EFD402000F05BFDFFF778
-:1025DC002BFBFFF70DFB01214FF48050FEF7ACFAFB
-:1025EC007748FFF703FA01200146FEF78DFA052123
-:1025FC000A467348FEF79DFD714806210522FEF739
-:10260C0098FD05226E480721FEF793FD0024022554
-:10261C00C0236B4839468DF80C508DF80D50029341
-:10262C008DF80E408DF80F40FEF72BFD20236448EB
-:10263C0039468DF80F5002930125FEF722FD102329
-:10264C0039465F4802938DF80C508DF80F50FEF709
-:10265C0018FD6148FEF77EFC4FF48273ADF8123022
-:10266C004FF40073ADF81A305B4807233146ADF8D0
-:10267C002030ADF81040ADF81440ADF81640ADF870
-:10268C001840ADF81C40ADF81E40FEF78DFD2946F4
-:10269C005148FEF7A8FD4A48FFF78CF9FFF782FB7B
-:1026AC00AB20FFF76DFCFFF753FB642000F0DAFC66
-:1026BC0021464FF48050FEF73FFAFFF7F7FD28460E
-:1026CC00FEF7F2FB25460490E8B2FFF753FB98BBEC
-:1026DC0070550135042DF7D1049D3DB13F4800F0F4
-:1026EC0046FD284600F052FD00F039FD0120294638
-:1026FC00FEF7CAFB002C3DD03948FFF70FFE2846E9
-:10270C00FEF764F9012814D12846FEF769F94FF455
-:10271C000060FEF703FC18B1324800F031FDB9E05F
-:10272C00314C00F00EFD002800F00481013CF8D182
-:10273C00B0E000F0BDFC1CE7735D042B0ADD2B48F8
-:10274C0000F01EFD049800F021FD01200021FEF791
-:10275C009BFB0FE00133DBB2042B7355B9DD24482E
-:10276C0000F005FD284600F011FD224800F008FDA0
-:10277C000124AEE7FFF79AFD1F4B0344012B01D94F
-:10278C001E48BAE71E4800F0F2FC0020FEF78CFB56
-:10279C0000F0FCFC00F0E3FC802000F069FC18B1B8
-:1027AC00802000F06FFC73E04FF4003000F060FC10
-:1027BC00044638B34FF4003000F064FC04E100BF71
-:1027CC0000000240A83200086C3C0008708641569C
-:1027DC00A83C0008BD3C0008003001402B3D00081F
-:1027EC00014550FE513C0008A0860100EA3C00085F
-:1027FC00163D0008213D0008EA44DFFF024550FE6B
-:10280C00573D00080120FFF7B5FAD8B12046FFF775
-:10281C00B1FAB8B1B74800F0B3FC41F288340120EA
-:10282C00FFF7A8FA002800F08B800020FFF7A2FA2F
-:10283C00002800F085804FF47A7000F013FC013C06
-:10284C00EDD1C1E00020FFF78FF808B1AA4B00E0F2
-:10285C00AA4B0CCB013301D0013271D1A84800F046
-:10286C008FFCB1E0A74800F08BFC082000F00AFCBC
-:10287C00102000F007FC202000F004FC402000F0A9
-:10288C0001FC0024042000F0FDFB002C40F008812A
-:10289C009D4832E7FFF77CF8002847D0002001A9BB
-:1028AC009A4DFEF759FA344600203946FEF7B8FA2D
-:1028BC000FCD0FC40FCD0FC495E80F0084E80F00A7
-:1028CC009DF8092010A901EB82039DF80BE053F849
-:1028DC00343C40F26D1101FB0E3303EB9E030EF101
-:1028EC00010E1EF0030F02D1022A88BF01339DF89E
-:1028FC000A409DF80410013C2344182404FB0314E3
-:10290C009DF805103C2202FB04149DF806100320D0
-:10291C0002FB0414FEF7C8FA01190320FEF7B4FAFF
-:10292C0004200021FEF7B0FA00F0C2FB784800F05A
-:10293C0027FC1EE6774800F023FCFFF743FAF5E787
-:10294C007D20FEF741F970B94FF4007000F090FB58
-:10295C0048B9714800F014FC082000F093FB1020DB
-:10296C0000F090FB85E07D20FEF72EF910B16B484E
-:10297C0000F006FC4FF4007000F07AFB10B16848D0
-:10298C0000F0FEFB4FF4007000F07CFB102000F018
-:10299C006FFB48B1634800F0F3FB082000F072FBBA
-:1029AC00102000F06FFB12E0082000F061FB20B15A
-:1029BC005D4800F0E5FB102003E05C4800F0E0FB14
-:1029CC00082000F06AFB54E0594800F0D9FB594844
-:1029DC0000F0D6FB4FF40010FFF7ECFA10B1022810
-:1029EC0028D809E0202000F04DFB402000F04AFBE5
-:1029FC00802000F052FB1DE0082000F04EFB102060
-:102A0C0000F04BFB202000F033FB20B94A4800F0CB
-:102A1C00B7FB202009E0402000F02AFB00287FF4BF
-:102A2C0021AF464800F0ACFB402000F036FB4FF4E1
-:102A3C0000701AE0012425E7414800F0A1FB0820B2
-:102A4C0000F020FB102000F01DFB202000F01AFBF2
-:102A5C00402000F017FB2046FFF7ACFA022840F0AC
-:102A6C00F480082000F019FB102000F016FB00F099
-:102A7C0034FB022000F0FCFA90B1042000F0F8FACC
-:102A8C0004460028D8D02F4800F07AFB042000F030
-:102A9C00F9FA022000F0F6FA4FF4004000F0F2FAD6
-:102AAC004FF4005000F0E4FA04464FF4805000F06C
-:102ABC00DFFA400040EA84044FF4006000F0D8FADA
-:102ACC00E4B22043431C03F0FF03013B4FF40060CE
-:102ADC00062B5CD8DFE803F03C383C043C383C0067
-:102AEC0000F0D0FA4FF4805000F0CCFA4FF40050C4
-:102AFC002EE000BF633D0008004000080000010804
-:102B0C00953D0008BF3E0008034550FE50320008BA
-:102B1C005C3C00085E3F0008A83D0008B93D000879
-:102B2C00D13D0008F13D0008073E00081D3E00089D
-:102B3C00733F0008333E00084D3E0008863E0008F7
-:102B4C002F3F0008F93E000800F09CFA4FF480502B
-:102B5C0000F0A3FA45F25550FDF70AFF0420FDF7EB
-:102B6C000DFF40F6FF70FDF70FFF0020FDF700FF93
-:102B7C004FF480500121FDF765FEFDF713FFFDF7C3
-:102B8C0009FF0020FEF7F0FE68B9354B0CE000F0B1
-:102B9C0079FA4FF4805000F075FA4FF4005000F0C1
-:102BAC0071FA3048A9E5304B5D6830481E6800F07A
-:102BBC00DEFA284600F0EAFA00F0D1FA00F0CFFA7B
-:102BCC0000239A0002F16042013302F561424FF09A
-:102BDC00FF31082BC2F88010C2F88011F1D1244BC0
-:102BEC0000241C635C639C631C645C64FDF700FF45
-:102BFC0020480121FDF7ACFF21461E48FDF7A8FF38
-:102C0C00F1200121FDF7B0FF2146F120FDF7ACFFCB
-:102C1C0001200146FDF7B4FF21460120FDF7B0FF6E
-:102C2C0015480121FDF7B8FF21461348FDF7B4FF05
-:102C3C0012480121FDF7BCFF10482146FDF7B8FFF3
-:102C4C0063B64FF0FF3EB5462847042000F01AFA51
-:102C5C00022000F017FA4FF4004000F01EFA1FE7B4
-:102C6C0000000108044550FE004000084A3F0008DF
-:102C7C000038024000106022FFC9FE3633590700AD
-:102C8C000748084A08B50849121AFDF7D7F907484A
-:102C9C00074A0021121AFDF7DAF9FFF769FB00BFAA
-:102CAC000000002020000020E03F00082000002051
-:102CBC00480001202DE9F04FDDE909AB0E469C469A
-:102CCC0003783B490746C95C01300D07F8D42B2B20
-:102CDC0005D02D2B04D107464FF0FF3301E00746FA
-:102CEC000123397830290ED17978782905D132F041
-:102CFC00100103D10237102207E00AB1082A04D1CF
-:102D0C000137082201E002B90A2200200021B8464E
-:102D1C0017F8015BA5F13004E4B2092C0DD9A5F12B
-:102D2C004104192C02D8A5F1370405E0A5F1610482
-:102D3C00192C30D8A5F15704E4B294422BDA4FEA9F
-:102D4C00E27900FB09F502FB0155A0FB0201E4B29C
-:102D5C00294400194FF0000541EB0501BCF1000FAF
-:102D6C00D5D0012B06D182457BEB0104CFDA50463E
-:102D7C005946CCE75C1CCAD1DDE90B89444261EBB6
-:102D8C004105444575EB0909C1DADDE90B01404207
-:102D9C0061EB4101BBE70EB1C6F80080DD1700FB0B
-:102DAC0005F203FB0122A0FB03011144BDE8F08FE7
-:102DBC004C1200082DE9F04F91B01F9E0C463106C5
-:102DCC0091468046DDE91A231E9D04D5CDE90223E8
-:102DDC004FF0000C1BE0002A73F100071046194657
-:102DEC0002DA504263EB4301002A73F1000ACDE989
-:102DFC00020107DBB70708D416F0040C07D04FF01C
-:102E0C00200C04E04FF02D0C01E04FF02B0C16F0D1
-:102E1C004007089714BF704F704FDDE902AB07975E
-:102E2C0000271C980137C117CDE90401DDE9042303
-:102E3C000AA93944099150465946CDF804C0FEF709
-:102E4C007FFA07980999835C504601F8013C594672
-:102E5C00DDE90423FEF774FA82468B465AEA0B022C
-:102E6C00DDF804C001D0162FDBD116F0080239466C
-:102E7C001DD01C9B082B02D0102B0ED01CE0DDE9C2
-:102E8C0002AB1DB95AEA0B0B13D004E05AEA0B0B38
-:102E9C0012D0BD4210DC7B1C0FE0DDE902AB5AEA1C
-:102EAC000B0B09D008982B4648B1582208E02B464A
-:102EBC0006E02A46012303E02B46002200E078229C
-:102ECC001CF1000B1D98C7EB030A18BF4FF0010B48
-:102EDC00BB42A8BF1F46C01B2AEAEA7ACBEB000014
-:102EEC000AB1022700E01746C71B16F0010027EABB
-:102EFC00E77701D07F4205E0F60603D5013504BF24
-:102F0C00BA4407463D46002D0BDD2068013D461CAA
-:102F1C004E453CBF202608F8006020680130206038
-:102F2C00F1E727EAE7703F1ABBF1000F08D02068E1
-:102F3C00451C4D4538BF08F800C0206801302060A2
-:102F4C008AB12068451C4D453CBF302508F800501F
-:102F5C002568681C02354D45206038BF08F80020F4
-:102F6C00226801322260BAF1000F0CD022680AF1FB
-:102F7C00FF3A501C48453CBF302008F8020022683C
-:102F8C0001322260EFE7DDE902AB5AEA0B0B10D1FC
-:102F9C007BB919460DE0236801395A1C4A4505D204
-:102FAC0001F1280568462A5C08F8032023680133E0
-:102FBC0023600029EFD15FB1236801375A1C4A45C1
-:102FCC003CBF202208F80320236801332360F2E77A
-:102FDC0011B0BDE8F08F00BFA63F0008B73F000856
-:102FEC001EF0040F0CBFEFF30880EFF30980FEF71F
-:102FFC00BFBF7047032970B505460C4606D98E082D
-:10300C003146FDF70BFCB6003544A41B14B9FDF793
-:10301C0013FC70BD00231846EA5C0133A34242EA5C
-:10302C000020F9D1FDF7F4FB70BD2DE9F041073319
-:10303C00DE08079B4FF0120808FB02320731069F8F
-:10304C00054602EBD1080024BC4209D0122000FB3B
-:10305C00048029463246FCF7F1FF01343544F3E78E
-:10306C00BDE8F0810623584301387FF4FDAF70476B
-:10307C0010B504460020FDF717FF20420CBF0020BE
-:10308C00012010BD10B504460020FDF70DFF20EA0D
-:10309C0004010020FDF7F8FE10BD10B50446002019
-:1030AC00FDF702FF40EA04010020FDF7EDFE10BD24
-:1030BC001FB501A8FEF765F80723029301A80323A7
-:1030CC000393FDF7BDFD6846FEF761F869460020E5
-:1030DC00FDF7FAFD05B05DF804FB08B5FEF7BCFC86
-:1030EC000020FEF733FC0020FEF730FC0020FEF73A
-:1030FC002DFCFEF795FCFDF73BFBFEF701FC70B5D4
-:10310C000646FEF7A9FC8020FEF720FCA82420BA76
-:10311C0090FAA0F0C0B2FEF719FC1125705DFEF715
-:10312C0015FC15F1FF35F9D20020FEF70FFC013C20
-:10313C0006F11206EBD12046FEF708FCFEF770FCF8
-:10314C0070BD38B500242546E0B2FEF713FEA04052
-:10315C0001340543042CEDB2F6D1284638BD08B530
-:10316C000D20FEF7DDFB0A20FEF7DAFB08BD10B5DB
-:10317C00441E14F8010F10B1FEF7D2FBF9E710BD95
-:10318C0008B5FFF7F4FFFFF7EAFF08BD1FB53023C2
-:10319C008DF8043078238DF80530072399000F2221
-:1031AC008A400240CA40092A01D8303202E00F2A74
-:1031BC0002D85732D2B200E0202201A9CC1A13F166
-:1031CC00FF336272EAD2002308468DF80E30FFF707
-:1031DC00CEFF04B010BD70B504460D464FF48050C0
-:1031EC0001211646FDF7A8FCFEF7DCFD0520FEF7D5
-:1031FC00C7FEA920FEF7C4FEC307FAD4FEF7A8FD4C
-:10320C00FEF7D0FD0320FEF7BBFEC5F30740FEF72B
-:10321C00B7FEC5F30720FEF7B3FEE8B2FEF7B0FE2B
-:10322C002644B44205D0A920FEF7AAFE04F8010BEF
-:10323C00F7E7FEF78DFD4FF480500021FDF77CFC85
-:10324C0070BD0000000000001F0000003B000000EB
-:10325C005A0000007800000097000000B500000044
-:10326C00D4000000F3000000110100003001000048
-:10327C004E0100000000000800400008008000081B
-:10328C0000C000080000010800000208000004084B
-:10329C0000000608923F00080008024008000000E9
-:1032AC00973F000800000240040000009A3F00080D
-:1032BC000008024040000000A13F0008000002404E
-:1032CC0002000000000002400100000000000800A5
-:1032DC001000180020002800300038007C00FE0090
-:1032EC00FF01C701C701C701C701C701C701C7015A
-:1032FC00C701C701C701C701C701FF01FE007C0060
-:10330C0038003C003E003E003800380038003800E1
-:10331C003800380038003800380038003800FE001B
-:10332C00FE00FE007C00FE00FF01C701C701C001CA
-:10333C00C001E000F00078003C001E000E000F0001
-:10334C000700FF01FF01FF017C00FE00FF01C70128
-:10335C00C701C001C001F8007800F800C001C0012D
-:10336C00C001C701C701FF01FE007C00E000E000C6
-:10337C00F000F000F800F800F800FC00EC00EE00A3
-:10338C00E600FF01FF01FF01E000E000E000E000CB
-:10339C00FF00FF00FF000700070007007F00FF0091
-:1033AC00FF01C701C001C001C701C701C701FF016F
-:1033BC00FE007C007C00FE00FF01C701C701070076
-:1033CC0007007700FF00FF01C701C701C701C70154
-:1033DC00C701FF01FE007C00FF01FF01FF01E000BF
-:1033EC00E0007000700070003800380038003800C1
-:1033FC001C001C001C001C001C001C007C00FE009F
-:10340C00FF01C701C701C701C701FE007C00FE0018
-:10341C00C701C701C701C701C701FF01FE007C003E
-:10342C007C00FE00FF01C701C701C701C701C7012E
-:10343C00FF01FE01DC01C001C001C701C701FF0192
-:10344C00FE007C0000000000000000007C00FE007C
-:10345C00FF01C701C701F001FC01CE01C701C70183
-:10346C00E701FF01DF01CE0107000700070007009D
-:10347C00E700F701FF01CF01C701C701C701C70171
-:10348C00C701C701CF01FF01F701E70000000000F1
-:10349C00000000007C00FE00FF01C701C70107000F
-:1034AC00070007000700C701C701FF01FE007C00F1
-:1034BC00C001C001C001C001CE01DF01FF01E70165
-:1034CC00C701C701C701C701C701C701E701FF0158
-:1034DC00DF01CE0100000000000000007C00FE00B7
-:1034EC00FF01C701C701C701FF01FF010700C701A9
-:1034FC00C701FF01FE007C00E000F000F80038007E
-:10350C00FE00FE00FE00380038003800380038009D
-:10351C0038003800380038003800380000000683C6
-:10352C000100000000000000000000000683010004
-:10353C000000000C000000000000068301000000E9
-:10354C00000C00000000D878369B79C0E3D90C8CB5
-:10355C0067DB3C1BF8FD7EBFFDE0F7FB1FC6EFFBF6
-:10356C007E1F98CD66B3CD60369B19C66C1866036A
-:10357C0098FD66B3FD60309B19C66F18660398FD05
-:10358C0066B3FD60309B19C36F186603980D66B364
-:10359C000D60369B19C360186603F8FD7EBFFDEC09
-:1035AC00F79B19C36F187E03D878369B79CCE399B7
-:1035BC00998167183C03180000000000000080018E
-:1035CC0000000000180000000000000000000000D7
-:1035DC0000001800000000000000000000000000C7
-:1035EC00000C000600000000600030000018000312
-:1035FC0000000000C0001800003080010000000036
-:10360C0080010C000060C0000000000000030600F8
-:10361C0000C06000000000000006030000803100C4
-:10362C0000000000008C010000001B0000000000E6
-:10363C0000D8000000000E00000000000070000028
-:10364C0000000E00000000000070000000001B00D5
-:10365C000000000000D800000080310000000000D5
-:10366C00008C010000C06000000000000006030098
-:10367C000060C00000000000000306000030800164
-:10368C000000000080010C00001800030000000086
-:10369C00C0001800000C00060000000060003000A4
-:1036AC00000000000000000000000000000000000E
-:1036BC0000000000000000000000000000000000FE
-:1036CC0000000000000000000000000000000000EE
-:1036DC0000000000000000000000000000000000DE
-:1036EC0000000000000000000000000000000000CE
-:1036FC0000000000000000000000000000000000BE
-:10370C000000000080FFFF0100000000000000002E
-:10371C00FEFFFF7F00000000000000E07F0000FEC5
-:10372C0007000000000000FE010000807F00000088
-:10373C000000801F00000000F80100000000F001F4
-:10374C0000000000800F000000007C000000000062
-:10375C00003E000000000F000000000000F0000020
-:10376C00008003000000000000C0010000E0000029
-:10377C0000000000000007000070000000000000C6
-:10378C0000000E00001800000000000000001800EF
-:10379C00000C0000000000000000300000060000DB
-:1037AC0000000000000060000003000000000000AA
-:1037BC000000C0008001000000000000000080013B
-:1037CC00C0000000000000000000000360000000CA
-:1037DC0000000000000000063000000000000000A7
-:1037EC000000000C100000000000000000000008A9
-:1037FC000000000000600000030018000000000042
-:10380C000000006000000300180000000000000031
-:10381C0000600000030018000000000000000060C1
-:10382C000000030018000000000000000060000011
-:10383C0003001800000000E003001F60F800C3073D
-:10384C0018C0070000F80FC07F60FE03F31F18F0CC
-:10385C001F00000C1860C06003061B3018183000E5
-:10386C000006303080E1010C0F60180C6000000382
-:10387C00601800E3001807C01806C0008001400C57
-:10388C00006200100380180380008001C00C0066E9
-:10389C0000300380190380018001C0FCFF670030F9
-:1038AC00038019FFFF018001C0FCFF63003003801F
-:1038BC0019FFFF008001C00C006000300380190369
-:1038CC0000008001C00C0060003003801903000070
-:1038DC008001400C006200100380180380008003FC
-:1038EC00601800C3001806C01806C00080073030EE
-:1038FC008081010C0C60180C6000800D1860C000F9
-:10390C00030618303818300080F90FC07F00FE0312
-:10391C00F01F70F01F0080E103001F00F800C007CB
-:10392C0060C00700800100000000000000000000E3
-:10393C0000008001000000000000000000000000FA
-:10394C008001000000000000000000000000800169
-:10395C0000000000000000000000000080010000DA
-:10396C00000000000000000000004E6F20485720AF
-:10397C0056657273696F6E20696E204F54500056F5
-:10398C00335231007573622077616B6575702073EB
-:10399C007570706F7274656400456E746572696ED3
-:1039AC0067207374616E64627900206973206F758F
-:1039BC0074736964652073797374656D20666C61CA
-:1039CC0073680048415244204641554C54004465AC
-:1039DC0073636C656E20000A4669726D6C656E20AF
-:1039EC00000A5873756D20000A496E76616C696423
-:1039FC00206669726D7761726520646573637269A4
-:103A0C007074696F6E2100436865636B73756D6DBF
-:103A1C00696E67206669726D776172652075706476
-:103A2C0061746500496E76616C6964206669726DBB
-:103A3C00776172652043524320696E2053504920B0
-:103A4C00666C617368210065726173655F6F6C648D
-:103A5C005F6669726D77617265004F6C6420576F99
-:103A6C00726C64206669726D776172652062617335
-:103A7C0065006661696C656420746F2065726173A2
-:103A8C006520736563746F72200077726974655F6B
-:103A9C006E65775F6669726D7761726500666169E4
-:103AAC006C656420746F207772697465206164643E
-:103ABC0072657373200057652772652064656164B5
-:103ACC0000436865636B73756D6D696E67200020CC
-:103ADC006279746573004E657720576F726C642041
-:103AEC006669726D776172652073797374656D5F49
-:103AFC00666C6173685F62617365004F6C6420571C
-:103B0C006F726C64206669726D776172652073796F
-:103B1C007374656D5F666C6173685F626173650079
-:103B2C00436865636B73756D202D2077616E7465CA
-:103B3C0064200020676F7420004F757220696E74CA
-:103B4C0065726E616C20666C61736820636F6E7455
-:103B5C00656E7473206172652062616420286368ED
-:103B6C0065636B73756D206661696C6564292120D2
-:103B7C0054686973206973207265616C6C7920627A
-:103B8C0061642100FFFFFFFFFFFFFFFFFFFFFFFF4F
-:103B9C000100000000000000000000800100000097
-:103BAC000000000000000080010000000000000088
-:103BBC0000000080010000000000000000000080F8
-:103BCC000100000000000000000000800100000067
-:103BDC000000000000000080FFFFFFFFFFFFFFFF61
-:103BEC00FFFFFFFF5341442057415443483A200004
-:103BFC005265736574205265676973746572200031
-:103C0C0042726F776E206F757420726573657400E5
-:103C1C005374617274696E67204C5345206F7363E3
-:103C2C00696C6C61746F72004C5345206F736369DF
-:103C3C006C6C61746F7220646964206E6F74207395
-:103C4C0074617274005553422077616B6575700016
-:103C5C006C656176696E67207374616E646279005D
-:103C6C00205F5F5F5F5F5F202020205F5F0D0A2F6A
-:103C7C005F20205F5F2F205F5F2F202F0D0A202FEA
-:103C8C00202F2020202F5F20205F5F2F0D0A2F5F19
-:103C9C002F20202020202F5F2F0D0A00426F6F74E1
-:103CAC006C6F616465722076657273696F6E3A2011
-:103CBC00004C617374206669726D77617265206265
-:103CCC006F6F742077617320737461626C653B2035
-:103CDC00636C65617220737472696B6573005374E5
-:103CEC0075636B20627574746F6E2072656769738F
-:103CFC0074657220697320696E76616C69642C201E
-:103D0C00636C656172696E672E00427574746F6EB8
-:103D1C002069642000697320737475636B21004201
-:103D2C007574746F6E207761732070757368656439
-:103D3C00206F6E20626F6F742E20427574746F6EDC
-:103D4C0020636F756E7465723A2000426F6F742039
-:103D5C00626974733A2000486F6C6420646F776EEC
-:103D6C00205550202B204241434B20666F7220354A
-:103D7C0020736563732E20746F20666F7263652DDC
-:103D8C00626F6F7420505246004669726D77617293
-:103D9C00652069732065726173656400426F6F748E
-:103DAC00696E67206E6F726D616C6C79005761740F
-:103DBC006368646F6720636175736564206120724A
-:103DCC006573657400536F66747761726520666104
-:103DDC00696C75726520636175736564206120720E
-:103DEC006573657400426F6F74206661696C6564FD
-:103DFC002C20737472696B65203300426F6F7420D2
-:103E0C006661696C65642C20737472696B65203211
-:103E1C0000426F6F74206661696C65642C2073744A
-:103E2C0072696B652031004C6F6164696E6720723A
-:103E3C0065636F76657279206669726D77617265FC
-:103E4C00004661696C656420746F206C6F6164203E
-:103E5C007265636F76657279206669726D776172CF
-:103E6C00652C20737472696B65206F6E652E2054FF
-:103E7C00727920616761696E2E004661696C6564B8
-:103E8C0020746F206C6F6164207265636F7665724D
-:103E9C0079206669726D776172652C207374726912
-:103EAC006B652074776F2E2054727920616761697D
-:103EBC006E2E004661696C656420746F206C6F61B6
-:103ECC0064207265636F76657279206669726D77AE
-:103EDC006172652C20737472696B652074687265ED
-:103EEC00652E20534144205741544348004F75726E
-:103EFC002070726576696F7573206669726D776173
-:103F0C00726520757064617465206661696C6564A6
-:103F1C002C2061626F7274696E67207570646174B5
-:103F2C00652E004E6577206669726D77617265202B
-:103F3C00697320617661696C61626C652100426F06
-:103F4C006F74696E67206669726D77617265204067
-:103F5C00200072657475726E696E6720746F2073C1
-:103F6C0074616E64627900466F7263652D626F6F67
-:103F7C0074696E67207265636F76657279206D6FF8
-:103F8C0064652E2E2E004261636B005570005365E4
-:103F9C006C65637400446F776E00303132333435A6
-:103FAC003637383941424344454600303132333498
-:103FBC00353637383961626364656600286E756C16
-:103FCC006C29000000000001020304010203040636
-:043FDC0007080900C9
-:103FE000FFFFFFFF00A000000202000000C004016C
-:103FF00000000000000000021000000007000000A8
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/boot_v2_0@1447134832.bin b/bin/boot/boot_v2_0@1447134832.bin
deleted file mode 100755
index fcfc20957d..0000000000
Binary files a/bin/boot/boot_v2_0@1447134832.bin and /dev/null differ
diff --git a/bin/boot/boot_v2_0@1447134832.hex b/bin/boot/boot_v2_0@1447134832.hex
deleted file mode 100644
index e43d08d6d0..0000000000
--- a/bin/boot/boot_v2_0@1447134832.hex
+++ /dev/null
@@ -1,1060 +0,0 @@
-:020000040800F2
-:1000000048200120712C0008D12F0008D12F0008B2
-:10001000D12F0008D12F0008D12F000800000000C8
-:10002000000000000000000000000000D12F0008C8
-:10003000D12F000800000000D12F0008D12F0008A8
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0B4FD48
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000A1FD05B05DF804FBF0
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:080188008DFD05B05DF804FBDC
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F05EFCDDF820C034
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F0FFFB089B9CE0BA4277
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00A73F00084B45F7DBEDE70D9907910798DD
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01AE3F0008F3
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C00BFF34F8F044A054BD16801F4E0610B43E0
-:10191C00D360BFF34F8FFEE700ED00E00400FA0543
-:10192C0010B5044608484021FFF784FC0028F9D084
-:10193C0005482146FFF77AFC03484021FFF77AFC63
-:10194C000028F9D010BD00BF00480040014608B582
-:10195C000448FFF757FC03480221FFF755FC002809
-:10196C00F9D008BD0038004000B9074803680133BE
-:10197C0008D04368013305D0C069044BC31A5842E0
-:10198C005841704700207047004000086F57654E63
-:10199C00074B1A69C2F306427F2A07D11869C0F3B4
-:1019AC000C00B0F1FF0358425841704700207047BB
-:1019BC000028004000F13F4000F57E00800A082816
-:1019CC000FD8084A52F820305BB1013B42F8203066
-:1019DC003BB9012101FA00F0034B1A6B22EA00001B
-:1019EC0018637047200000200038024000F13F408F
-:1019FC0000F57E00800A08280DD8074A52F82030DE
-:101A0C00591C42F8201033B9012101FA00F0034BA4
-:101A1C001A6B1043186370472000002000380240F6
-:101A2C0010B50C4C2046FFF7E1FF072001F00CFB32
-:101A3C004FF4805100222046FFF776FB042001F082
-:101A4C0003FB2046FFF7B6FF4FF480400021FFF761
-:101A5C0067F810BD0004024010B50B4C01214FF487
-:101A6C008040FFF75DF82046FFF7C0FF20464FF49B
-:101A7C0080510122FFF758FB072001F0E5FA2046C0
-:101A8C00FFF798FF10BD00BF00040240F0B55E25C3
-:101A9C006843204BB0FBF1F51A68ADF6DC3D95427E
-:101AAC0034D002AC00214FF43D6220461D60FEF79D
-:101ABC00CEFA1B238DE81800174810214022692309
-:101ACC0001F0A5FA08238DE81800144860231821AA
-:101ADC006A2201F09CFA0DF2FA760DF28E73002256
-:101AEC00AA420DD002F11900C0B2C108012700F0C2
-:101AFC00070007FA00F05F5C013238435854EFE7F7
-:101B0C001233B342EBD1204601F0EBFA0DF6DC3D7B
-:101B1C00F0BD00BF08000020A03500082F390008D8
-:101B2C002DE9F043ADF6DC3D02AC00214FF43D62F3
-:101B3C0080462046FEF78BFA2C238DE818002022D5
-:101B4C00284818215C2301F062FA1C2215460F2745
-:101B5C00974007EA0807D740234B242101FB07379E
-:101B6C000DF50366002117F801C00023082B07D0E0
-:101B7C000120984010EA0C0F0CBF0020012003E05C
-:101B8C007818407800F0010078B15819C0B24FEACB
-:101B9C00D00E4FF0010900F0070009FA00F016F81A
-:101BAC000E9040EA090006F80E000133092BDDD136
-:101BBC000231242906F11206D5D10B35742DA2F170
-:101BCC000402C4D10E238DE81800102190226D233D
-:101BDC00064801F01CFA204601F083FA0DF6DC3DB4
-:101BEC00BDE8F083903300088F390008CC32000830
-:101BFC0010B5ADF6D83D02AC204600214FF43D6245
-:101C0C00FEF725FA1B238DE81800102140226923CA
-:101C1C00044801F0FCF9204601F063FA0DF6D83DBA
-:101C2C0010BD00BFA03500082DE9F74F434E444FBF
-:101C3C0001214FF48040FEF773FF3046FFF7D6FECC
-:101C4C003846404CFFF7D2FE30460D210522FFF7F7
-:101C5C0070FA052230460F21FFF76BFA3046214609
-:101C6C000125FFF70EFA2023384621462360257103
-:101C7C00A5714FF0000A01934FF4805BFFF701FA56
-:101C8C00304621464FF002084FF48049257184F804
-:101C9C0006A0C4F800B0FFF7F4F93046214684F8EA
-:101CAC000480C4F80080FFF7ECF921462571A5717A
-:101CBC00C4F80090244C3046FFF7E3F92046FFF7B8
-:101CCC0049F920462149FFF76FFA20462946FFF7CC
-:101CDC008AFA019B384619465246FFF725FA2A46DE
-:101CEC0030464946FFF720FA40462946FEF718FFD2
-:101CFC00A4F5505480232380F92323854FF4F0421C
-:101D0C004FF6FF13E3623046A28329462364424612
-:101D1C00A4F820B0FFF70DFA29462046A582FEF75D
-:101D2C002FFD3846FFF746FE3046FFF743FE484688
-:101D3C005146FEF7F5FE03B0BDE8F08F00040240FB
-:101D4C000008024000000020003800400C00002079
-:101D5C0010B5074C2046FFF749FE20461021FFF72F
-:101D6C00DFF92046FFF726FE012001F06DF910BDCA
-:101D7C000000024038B50A4B0C2404FB00346068A8
-:101D8C00FFF734FE21896068FFF7C4F905466068E7
-:101D9C00FFF710FED5F1010038BF002038BD00BFA1
-:101DAC008432000810B5064C2046FFF71FFE204673
-:101DBC001021FFF7B7F92046FFF7FCFD10BD00BF5F
-:101DCC0000000240F0B587B0FFF7E2FD002841D1DA
-:101DDC000320FFF769F807460420FFF765F8424B2C
-:101DEC000A241A68C2F30545C2F30626C2F302138D
-:101DFC0002F00F0204FB0322330906F00F0604FB6A
-:101E0C0003662B0905F00F0504FB03533C2505FB6A
-:101E1C00036305FB0323191A44BF01F5A83101F52F
-:101E2C00C07107EB91210320FFF72EF803A8FFF7F1
-:101E3C00A8F903A8FEF704FF01A8FFF7A8F901A968
-:101E4C000020FEF741FF02A8FFF7A7F9002002A926
-:101E5C00FEF7A4FF0A2442F2107501F064F910B9E0
-:101E6C00013DFAD107E0214D01F05DF908B1013DCA
-:101E7C00FAD1013CEFD10020FEF7A2FD00214FF278
-:101E8C000400FFF72DF84FF43C50FFF755F8184BB2
-:101E9C0001201A6842F004021A60FEF791FD154BFE
-:101EAC001B7813B1144801F05DF9144801F05AF98C
-:101EBC000020FFF709F808200121FEF7D1FF0121CE
-:101ECC004FF40040FFF70CF80D4801F04BF9084BAC
-:101EDC001A6842F002021A600A4B1A6942F00402B4
-:101EEC001A6130BF07B0F0BD00280040A086010089
-:101EFC0000700040017AFF1F1A3700082F370008C6
-:101F0C004437000800ED00E0B0F1006F10B5044656
-:101F1C000BD20D4801F01DF9204601F029F90B48B0
-:101F2C0001F020F94FF0FF3010BD094A002352F8A0
-:101F3C00041FA14202D851688C4202D30133072BF3
-:101F4C00F5D1184610BD00BF5838000855370008A9
-:101F5C006032000808B5024801F004F9FFF7D0FC24
-:101F6C006E37000810B504460A480221FFF74CF9F9
-:101F7C000028F9D007482146FFF744F9054801210C
-:101F8C00FFF742F90028F9D00248FFF738F9C0B240
-:101F9C0010BD00BF003001402DE9F04F87B001218A
-:101FAC00814600AF0020FFF771FD042001F067F8B7
-:101FBC0007F10C0049460C2201F0FFF8FD683C6962
-:101FCC000C2DD7F814B013D0994801F0C2F828465C
-:101FDC0001F0CEF8974801F0BCF8204601F0C8F8A3
-:101FEC00954801F0B6F8584601F0C2F8934833E032
-:101FFC00934801F0B7F84FF480500121FEF784FDAF
-:10200C0009F10C09EA46FEF7FDFBA0B06E46254629
-:10201C00C846802D0CD941463046802201F0CDF8BF
-:10202C0030462021FEF7FAFB803D08F18008F0E7EE
-:10203C0025B1304641462A4601F0BFF829463046C4
-:10204C0000F0CAFF002180464FF48050FEF75CFD83
-:10205C00D845D54604D07B4801F084F80120E3E054
-:10206C0088B068464946202201F0A7F86846FFF779
-:10207C007BFC78607448D54601F074F87B682BB90A
-:10208C00724801F06FF804F5404600E02646002E39
-:10209C003BD06F48FFF738FF05466E483044FFF7DA
-:1020AC0033FF002D824630DB00282EDB431B01332F
-:1020BC004FEA430B00205946FFF7E8FCFEF7CEFB36
-:1020CC00654B002603EB45033B6055451BDCF320B9
-:1020DC00FEF7DAFB3B68002133F81600FEF7F4FB41
-:1020EC00082806F1010608D05C4801F032F82846B1
-:1020FC0001F03EF801F025F805E030465946FFF7AF
-:10210C00C5FC0135E1E7FEF7B7FB554801F02AF8AD
-:10211C007B680BB14E4B00E0524B7B6063083B601D
-:10212C000025A5423CD2661BB6F5803F28BF4FF474
-:10213C0080362EB14C4805EB0901324601F03DF8D2
-:10214C00D7F804A0FEF78AFBF320FEF79DFBAA4408
-:10215C004FF0000BB34519D043490BEB0A0011F8B3
-:10216C000B10FEF7E9FB08280DD0404800F0F1FFFA
-:10217C00504600F0FDFF00F0E4FFFEF77DFB3C480D
-:10218C0000F0F0FF0CE00BF1010BE3E7FEF774FB42
-:10219C003B68214603EB5500FFF778FC5D44C0E734
-:1021AC00344800F0D6FF204600F0E2FF324800F041
-:1021BC00D9FF0020FFF7D8FB20B1304800F0D2FF48
-:1021CC00234D03E02E4800F0CDFF264D4FF48050F8
-:1021DC000121A608FEF798FCFEF714FB31462846B1
-:1021EC00FEF71CFB04F0030105EB860000F0F4FE87
-:1021FC00002104464FF48050FEF786FC214800F085
-:10220C00A8FF404600F0B4FF1F4800F0A2FF204694
-:10221C0000F0AEFF00F095FF444504D01B4800F0E1
-:10222C00A1FF022000E000201C37BD46BDE8F08F66
-:10223C0079370008823700088C370008933700087C
-:10224C00B2370008CF370008F2370008053800080D
-:10225C0000400008FF3F0008BC3200081D38000891
-:10226C0035380008000001084400002048380008F8
-:10227C00613800086C3800087A380008813800088A
-:10228C00A6380008CB380008DE380008E43800080F
-:10229C0070B54FF480500121FEF74EFCFFF782FD24
-:1022AC000520164CFFF75EFE002C04F1FF341FDCFA
-:1022BC00FFF74EFDFFF776FD9F20FFF753FEA92099
-:1022CC00FFF750FE0546A920FFF74CFE0646A92055
-:1022DC00FFF748FE3602044646EA0545FFF738FD8F
-:1022EC004FF480500021FEF727FC45EA040070BD36
-:1022FC00A920FFF737FEC307D6D4D9E70090D00347
-:10230C0008B50446114800F024FF204600F030FFC9
-:10231C0000F017FF2046FFF703FC00F004FF0C4B06
-:10232C0020F0040018701D4600F0FDFE2B7800F024
-:10233C00FB00834201D10B2401E000F0C0FE013C04
-:10234C00F2D04FF47A7000F07FFEF8E7CF3B000834
-:10235C004400012080B5464B4FF4C06290B01A6027
-:10236C0001214FF08050FEF7DBFB0120FEF722FB32
-:10237C004048FFF73BFB4FF480200121FEF7D0FBD8
-:10238C003C480A210722FEF7D4FE072239480B21CC
-:10239C00FEF7CFFE10AF4FF4806347F8383D0024B2
-:1023AC004FF001080225334839468DF80E408DF860
-:1023BC000F808DF80C508DF80D50FEF762FE4FF427
-:1023CC0000632C48394602938DF80C5004AEFEF78E
-:1023DC0058FE4FF46133049327480C233146ADF873
-:1023EC001A30ADF81440ADF81640ADF81840ADF801
-:1023FC001C40FEF7DDFD41461F48FEF70BFF1D4854
-:10240C00FFF7D8FA1D4800F0A4FE1D4B586F00F0E2
-:10241C00AFFE00F096FE7920FEF7D6FB404502D1C8
-:10242C00184800F09FFE012000F014FE10B90121A5
-:10243C00FEF72AFD4120FEF7C7FB58BB124800F0FF
-:10244C0091FE0120FEF7EEFA47F230544120FEF7E0
-:10245C00BBFBF8B94FF47A7000F0F6FD013CF5D1F6
-:10246C000A4800F07FFEFFF7DFFB094837E100BFA9
-:10247C00003C02400008024000480040DB3B0008E2
-:10248C0000380240EB3B0008FB3B0008133C000803
-:10249C00114550FE4FF48070FEF718FB0120FEF73B
-:1024AC002DFBFEF7EFFB0020FEF78AFA01214FF41B
-:1024BC008040FEF741FBBB48FFF798FA3046FEF729
-:1024CC0020FE00240125B74831468DF815408DF8C3
-:1024DC0016408DF8174004958DF81450FEF7D1FD79
-:1024EC002246B0482946FEF71FFEAE48FFF762FAB7
-:1024FC00AD4C04F1300954F8040CFFF777FA304670
-:10250C00FEF7FFFD236854F8040C4FF00008314629
-:10251C00022504938DF814808DF815508DF81780D2
-:10252C000C34FEF7AEFD54F8100CFFF743FA4C4593
-:10253C00E1D14FF480404146FEF7FEFA4FF4807033
-:10254C0000F088FD002800F0CC804FF4807000F083
-:10255C008BFDFFF737FC954800F004FE0220FEF7D8
-:10256C00A3FC9349884202D00220FEF78DFC9148CF
-:10257C0000F0EFFD0220FEF797FC00F0F9FD00F0F3
-:10258C00E0FD4FF4804000F065FD90B18A4800F00A
-:10259C00E9FD4FF4804000F067FD082000F064FD79
-:1025AC00102000F061FD202000F05EFD402000F0C6
-:1025BC005BFDFFF739FBFFF71BFB01214FF480504C
-:1025CC00FEF7BAFA7748FFF711FA01200146FEF739
-:1025DC009BFA05210A467348FEF7ABFD71480621AC
-:1025EC000522FEF7A6FD05226E480721FEF7A1FD88
-:1025FC0000240225C0236B4839468DF80C508DF809
-:10260C000D5002938DF80E408DF80F40FEF739FDFA
-:10261C002023644839468DF80F5002930125FEF7AC
-:10262C0030FD102339465F4802938DF80C508DF81D
-:10263C000F50FEF726FD6148FEF78CFC4FF48273B9
-:10264C00ADF812304FF40073ADF81A305B48072325
-:10265C003146ADF82030ADF81040ADF81440ADF86F
-:10266C001640ADF81840ADF81C40ADF81E40FEF712
-:10267C009BFD29465148FEF7B6FD4A48FFF79AF9EB
-:10268C00FFF790FBAB20FFF76DFCFFF761FB6420BD
-:10269C0000F0DAFC21464FF48050FEF74DFAFFF7BC
-:1026AC00F7FD2846FEF700FC25460490E8B2FFF73C
-:1026BC0061FB98BB70550135042DF7D1049D3DB1DC
-:1026CC003F4800F046FD284600F052FD00F039FD71
-:1026DC0001202946FEF7D8FB002C3DD03948FFF7E6
-:1026EC000FFE2846FEF772F9012814D12846FEF792
-:1026FC0077F94FF40060FEF711FC18B1324800F086
-:10270C0031FDB9E0314C00F00EFD002800F00481E1
-:10271C00013CF8D1B0E000F0BDFC1CE7735D042B6C
-:10272C000ADD2B4800F01EFD049800F021FD01206D
-:10273C000021FEF7A9FB0FE00133DBB2042B73552C
-:10274C00B9DD244800F005FD284600F011FD2248B3
-:10275C0000F008FD0124AEE7FFF79AFD1F4B034480
-:10276C00012B01D91E48BAE71E4800F0F2FC0020EC
-:10277C00FEF79AFB00F0FCFC00F0E3FC802000F07C
-:10278C0069FC18B1802000F06FFC73E04FF400304E
-:10279C0000F060FC044638B34FF4003000F064FCE9
-:1027AC0004E100BF000002408C3200084B3C0008E2
-:1027BC0070864156873C00089C3C00080030014064
-:1027CC000A3D0008014550FE303C0008A08601007F
-:1027DC00C93C0008F53C0008003D0008EA44DFFF56
-:1027EC00024550FE363D00080120FFF7C3FAD8B170
-:1027FC002046FFF7BFFAB8B1B74800F0B3FC41F27E
-:10280C0088340120FFF7B6FA002800F08B800020F6
-:10281C00FFF7B0FA002800F085804FF47A7000F0D2
-:10282C0013FC013CEDD1C1E00020FFF79DF808B18D
-:10283C00AA4B00E0AA4B0CCB013301D0013271D171
-:10284C00A84800F08FFCB1E0A74800F08BFC0820F2
-:10285C0000F00AFC102000F007FC202000F004FC23
-:10286C00402000F001FC0024042000F0FDFB002CB3
-:10287C0040F008819D4832E7FFF78AF8002847D0DE
-:10288C00002001A99A4DFEF767FA3446002039461C
-:10289C00FEF7C6FA0FCD0FC40FCD0FC495E80F008D
-:1028AC0084E80F009DF8092010A901EB82039DF824
-:1028BC000BE053F8343C40F26D1101FB0E3303EB8B
-:1028CC009E030EF1010E1EF0030F02D1022A88BFE7
-:1028DC0001339DF80A409DF80410013C2344182450
-:1028EC0004FB03149DF805103C2202FB04149DF814
-:1028FC000610032002FB0414FEF7D6FA011903207C
-:10290C00FEF7C2FA04200021FEF7BEFA00F0C2FB6B
-:10291C00784800F027FC1EE6774800F023FCFFF710
-:10292C0051FAF5E77D20FEF74FF970B94FF40070BE
-:10293C0000F090FB48B9714800F014FC082000F03E
-:10294C0093FB102000F090FB85E07D20FEF73CF916
-:10295C0010B16B4800F006FC4FF4007000F07AFBED
-:10296C0010B1684800F0FEFB4FF4007000F07CFBE7
-:10297C00102000F06FFB48B1634800F0F3FB082017
-:10298C0000F072FB102000F06FFB12E0082000F04A
-:10299C0061FB20B15D4800F0E5FB102003E05C48D2
-:1029AC0000F0E0FB082000F06AFB54E0594800F00E
-:1029BC00D9FB594800F0D6FB4FF40010FFF7ECFAA6
-:1029CC0010B1022828D809E0202000F04DFB40204F
-:1029DC0000F04AFB802000F052FB1DE0082000F0C4
-:1029EC004EFB102000F04BFB202000F033FB20B9F5
-:1029FC004A4800F0B7FB202009E0402000F02AFBF9
-:102A0C0000287FF421AF464800F0ACFB402000F0DA
-:102A1C0036FB4FF400701AE0012425E7414800F022
-:102A2C00A1FB082000F020FB102000F01DFB202053
-:102A3C0000F01AFB402000F017FB2046FFF7ACFA21
-:102A4C00022840F0F480082000F019FB102000F060
-:102A5C0016FB00F034FB022000F0FCFA90B10420CD
-:102A6C0000F0F8FA04460028D8D02F4800F07AFB82
-:102A7C00042000F0F9FA022000F0F6FA4FF40040BE
-:102A8C0000F0F2FA4FF4005000F0E4FA04464FF470
-:102A9C00805000F0DFFA400040EA84044FF40060FC
-:102AAC0000F0D8FAE4B22043431C03F0FF03013BCF
-:102ABC004FF40060062B5CD8DFE803F03C383C0494
-:102ACC003C383C0000F0D0FA4FF4805000F0CCFAC7
-:102ADC004FF400502EE000BF423D000800400008BB
-:102AEC0000000108743D00089E3E0008034550FE9E
-:102AFC00343200083B3C00083D3F0008873D00088D
-:102B0C00983D0008B03D0008D03D0008E63D0008A7
-:102B1C00FC3D0008523F0008123E00082C3E000805
-:102B2C00653E00080E3F0008D83E000800F09CFAF5
-:102B3C004FF4805000F0A3FA45F25550FDF718FF02
-:102B4C000420FDF71BFF40F6FF70FDF71DFF002072
-:102B5C00FDF70EFF4FF480500121FDF773FEFDF7DA
-:102B6C0021FFFDF717FF0020FEF7FEFE68B9354B7D
-:102B7C000CE000F079FA4FF4805000F075FA4FF445
-:102B8C00005000F071FA3048A9E5304B5D683048D0
-:102B9C001E6800F0DEFA284600F0EAFA00F0D1FADE
-:102BAC0000F0CFFA00239A0002F16042013302F5E3
-:102BBC0061424FF0FF31082BC2F88010C2F880112F
-:102BCC00F1D1244B00241C635C639C631C645C6427
-:102BDC00FDF70EFF20480121FDF7BAFF21461E48E4
-:102BEC00FDF7B6FFF1200121FDF7BEFF2146F120D4
-:102BFC00FDF7BAFF01200146FDF7C2FF2146012077
-:102C0C00FDF7BEFF15480121FDF7C6FF214613480D
-:102C1C00FDF7C2FF12480121FDF7CAFF10482146FB
-:102C2C00FDF7C6FF63B64FF0FF3EB54628470420BC
-:102C3C0000F01AFA022000F017FA4FF4004000F0EE
-:102C4C001EFA1FE700000108044550FE0040000872
-:102C5C00293F00080038024000106022FFC9FE36F0
-:102C6C00335907000748084A08B50849121AFDF7F6
-:102C7C00E5F90748074A0021121AFDF7E8F9FFF7B2
-:102C8C0069FB00BF0000002020000020C03F0008AE
-:102C9C0020000020480001202DE9F04FDDE909ABB0
-:102CAC000E469C4603783B490746C95C01300D072C
-:102CBC00F8D42B2B05D02D2B04D107464FF0FF3326
-:102CCC0001E007460123397830290ED1797878292B
-:102CDC0005D132F0100103D10237102207E00AB1FE
-:102CEC00082A04D10137082201E002B90A22002087
-:102CFC000021B84617F8015BA5F13004E4B2092CA9
-:102D0C000DD9A5F14104192C02D8A5F1370405E021
-:102D1C00A5F16104192C30D8A5F15704E4B2944202
-:102D2C002BDA4FEAE27900FB09F502FB0155A0FB17
-:102D3C000201E4B2294400194FF0000541EB0501F2
-:102D4C00BCF1000FD5D0012B06D182457BEB0104E1
-:102D5C00CFDA50465946CCE75C1CCAD1DDE90B8969
-:102D6C00444261EB4105444575EB0909C1DADDE9E3
-:102D7C000B01404261EB4101BBE70EB1C6F800808C
-:102D8C00DD1700FB05F203FB0122A0FB030111443C
-:102D9C00BDE8F08F4C1200082DE9F04F91B01F9E4A
-:102DAC000C46310691468046DDE91A231E9D04D55A
-:102DBC00CDE902234FF0000C1BE0002A73F1000751
-:102DCC001046194602DA504263EB4301002A73F1B4
-:102DDC00000ACDE9020107DBB70708D416F0040C92
-:102DEC0007D04FF0200C04E04FF02D0C01E04FF019
-:102DFC002B0C16F04007089714BF704F704FDDE98D
-:102E0C0002AB079700271C980137C117CDE90401C5
-:102E1C00DDE904230AA93944099150465946CDF8F5
-:102E2C0004C0FEF78DFA07980999835C504601F8A7
-:102E3C00013C5946DDE90423FEF782FA82468B46B3
-:102E4C005AEA0B02DDF804C001D0162FDBD116F0C4
-:102E5C00080239461DD01C9B082B02D0102B0ED01B
-:102E6C001CE0DDE902AB1DB95AEA0B0B13D004E0F0
-:102E7C005AEA0B0B12D0BD4210DC7B1C0FE0DDE9D3
-:102E8C0002AB5AEA0B0B09D008982B4648B15822D2
-:102E9C0008E02B4606E02A46012303E02B460022DD
-:102EAC0000E078221CF1000B1D98C7EB030A18BF39
-:102EBC004FF0010BBB42A8BF1F46C01B2AEAEA7A9F
-:102ECC00CBEB00000AB1022700E01746C71B16F037
-:102EDC00010027EAE77701D07F4205E0F60603D52B
-:102EEC00013504BFBA4407463D46002D0BDD206872
-:102EFC00013D461C4E453CBF202608F8006020686A
-:102F0C0001302060F1E727EAE7703F1ABBF1000FB0
-:102F1C0008D02068451C4D4538BF08F800C0206813
-:102F2C00013020608AB12068451C4D453CBF3025DE
-:102F3C0008F800502568681C02354D45206038BFE4
-:102F4C0008F80020226801322260BAF1000F0CD080
-:102F5C0022680AF1FF3A501C48453CBF302008F863
-:102F6C000200226801322260EFE7DDE902AB5AEA87
-:102F7C000B0B10D17BB919460DE0236801395A1C93
-:102F8C004A4505D201F1280568462A5C08F8032059
-:102F9C002368013323600029EFD15FB12368013727
-:102FAC005A1C4A453CBF202208F8032023680133F1
-:102FBC002360F2E711B0BDE8F08F00BF853F000839
-:102FCC00963F00081EF0040F0CBFEFF30880EFF3E0
-:102FDC000980FEF7BFBF7047032970B505460C4644
-:102FEC0006D98E083146FDF719FCB6003544A41BF2
-:102FFC0014B9FDF721FC70BD00231846EA5C0133BF
-:10300C00A34242EA0020F9D1FDF702FC70BD2DE984
-:10301C00F0410733DE08079B4FF0120808FB023221
-:10302C000731069F054602EBD1080024BC4209D0AB
-:10303C00122000FB048029463246FCF7FFFF0134C6
-:10304C003544F3E7BDE8F0810623584301387FF49B
-:10305C00FDAF704710B504460020FDF725FF204258
-:10306C000CBF0020012010BD10B504460020FDF758
-:10307C001BFF20EA04010020FDF706FF10BD10B570
-:10308C0004460020FDF710FF40EA04010020FDF784
-:10309C00FBFE10BD1FB501A8FEF773F807230293C2
-:1030AC0001A803230393FDF7CBFD6846FEF76FF8E9
-:1030BC0069460020FDF708FE05B05DF804FB08B575
-:1030CC00FEF7CAFC0020FEF741FC0020FEF73EFC98
-:1030DC000020FEF73BFCFEF7A3FCFDF749FBFEF7D7
-:1030EC000FFC70B50646FEF7B7FC8020FEF72EFCF1
-:1030FC00A82420BA90FAA0F0C0B2FEF727FC112544
-:10310C00705DFEF723FC15F1FF35F9D20020FEF7B8
-:10311C001DFC013C06F11206EBD12046FEF716FC15
-:10312C00FEF77EFC70BD38B500242546E0B2FEF7F4
-:10313C0021FEA04001340543042CEDB2F6D1284603
-:10314C0038BD08B50D20FEF7EBFB0A20FEF7E8FBB7
-:10315C0008BD10B5441E14F8010F10B1FEF7E0FBCA
-:10316C00F9E710BD08B5FFF7F4FFFFF7EAFF08BD5C
-:10317C001FB530238DF8043078238DF805300723E4
-:10318C0099000F228A400240CA40092A01D83032E5
-:10319C0002E00F2A02D85732D2B200E0202201A955
-:1031AC00CC1A13F1FF336272EAD2002308468DF871
-:1031BC000E30FFF7CEFF04B010BD70B504460D46BF
-:1031CC004FF4805001211646FDF7B6FCFEF7EAFDE0
-:1031DC000520FEF7C7FEA920FEF7C4FEC307FAD4EC
-:1031EC00FEF7B6FDFEF7DEFD0320FEF7BBFEC5F3D2
-:1031FC000740FEF7B7FEC5F30720FEF7B3FEE8B2B3
-:10320C00FEF7B0FE2644B44205D0A920FEF7AAFE74
-:10321C0004F8010BF7E7FEF79BFD4FF480500021FB
-:10322C00FDF78AFC70BD0000000000001F000000CC
-:10323C003B0000005A0000007800000097000000DE
-:10324C00B5000000D4000000F300000011010000E4
-:10325C00300100004E010000000000080040000892
-:10326C000080000800C000080000010800000208EF
-:10327C000000040800000608713F00080008024026
-:10328C0008000000763F0008000002400400000027
-:10329C00793F00080008024040000000803F000811
-:1032AC00000002400200000000000240010000008B
-:1032BC000000080010001800200028003000380022
-:1032CC000000068301000000000000000000000068
-:1032DC00068301000000000C0000000000000683C3
-:1032EC0001000000000C00000000D878369B79C06B
-:1032FC00E3D90C8C67DB3C1BF8FD7EBFFDE0F7FBD4
-:10330C001FC6EFFB7E1F98CD66B3CD60369B19C6EA
-:10331C006C18660398FD66B3FD60309B19C66F1878
-:10332C00660398FD66B3FD60309B19C36F18660386
-:10333C00980D66B30D60369B19C360186603F8FDD3
-:10334C007EBFFDECF79B19C36F187E03D878369BB4
-:10335C0079CCE399998167183C03180000000000B0
-:10336C0000008001000000001800000000000000B8
-:10337C000000000000001800000000000000000029
-:10338C0000000000000C000600000000600030008F
-:10339C000018000300000000C0001800003080017D
-:1033AC000000000080010C000060C0000000000064
-:1033BC000003060000C060000000000000060300CF
-:1033CC000080310000000000008C010000001B0098
-:1033DC000000000000D8000000000E0000000000FB
-:1033EC000070000000000E000000000000700000E3
-:1033FC0000001B000000000000D80000008031001D
-:10340C0000000000008C010000C060000000000003
-:10341C00000603000060C00000000000000306006E
-:10342C00003080010000000080010C000018000337
-:10343C0000000000C0001800000C00060000000096
-:10344C0060003000000000000000000000000000E0
-:10345C000000000000000000000000000000000060
-:10346C000000000000000000000000000000000050
-:10347C000000000000000000000000000000000040
-:10348C000000000000000000000000000000000030
-:10349C000000000000000000000000000000000020
-:1034AC00000000000000000080FFFF010000000091
-:1034BC0000000000FEFFFF7F00000000000000E0A5
-:1034CC007F0000FE07000000000000FE01000080ED
-:1034DC007F0000000000801F00000000F8010000C9
-:1034EC000000F00100000000800F000000007C00D4
-:1034FC0000000000003E000000000F000000000073
-:10350C0000F00000008003000000000000C001007B
-:10351C0000E0000000000000000007000070000048
-:10352C000000000000000E00001800000000000069
-:10353C0000001800000C000000000000000030002B
-:10354C000006000000000000000060000003000006
-:10355C00000000000000C00080010000000000001E
-:10356C0000008001C000000000000000000000030B
-:10357C0060000000000000000000000630000000A9
-:10358C00000000000000000C100000000000000013
-:10359C00000000080000000000600000030018009C
-:1035AC000000000000000060000003001800000094
-:1035BC000000000000600000030018000000000084
-:1035CC000000006000000300180000000000000074
-:1035DC000060000003001800000000E003001F6002
-:1035EC00F800C30718C0070000F80FC07F60FE0387
-:1035FC00F31F18F01F00000C1860C06003061B308E
-:10360C00181830000006303080E1010C0F60180CE7
-:10361C0060000003601800E3001807C01806C00023
-:10362C008001400C006200100380180380008001B0
-:10363C00C00C006600300380190380018001C0FCBF
-:10364C00FF670030038019FFFF018001C0FCFF639E
-:10365C000030038019FFFF008001C00C00600030B7
-:10366C000380190300008001C00C0060003003804F
-:10367C00190300008001400C006200100380180345
-:10368C0080008003601800C3001806C01806C00034
-:10369C00800730308081010C0C60180C6000800DAC
-:1036AC001860C000030618303818300080F90FC0BD
-:1036BC007F00FE03F01F70F01F0080E103001F006D
-:1036CC00F800C00760C00700800100000000000087
-:1036DC00000000000000800100000000000000005D
-:1036EC00000000008001000000000000000000004D
-:1036FC00000080010000000000000000000000003D
-:10370C0080010000000000000000000000004E6F6F
-:10371C002048572056657273696F6E20696E204F72
-:10372C005450007573622077616B657570207375EA
-:10373C0070706F7274656400456E746572696E6743
-:10374C00207374616E64627900206973206F7574E4
-:10375C00736964652073797374656D20666C61732D
-:10376C00680048415244204641554C54004465730E
-:10377C00636C656E20000A4669726D6C656E200084
-:10378C000A5873756D20000A496E76616C69642065
-:10379C006669726D776172652064657363726970B6
-:1037AC0074696F6E2100436865636B73756D6D6929
-:1037BC006E67206669726D776172652075706461E1
-:1037CC00746500496E76616C6964206669726D7708
-:1037DC006172652043524320696E20535049206624
-:1037EC006C617368210065726173655F6F6C645FF7
-:1037FC006669726D77617265004F6C6420576F72E9
-:10380C006C64206669726D776172652062617365A4
-:10381C00006661696C656420746F20657261736504
-:10382C0020736563746F72200077726974655F6EC4
-:10383C0065775F6669726D77617265006661696C48
-:10384C00656420746F20777269746520616464729A
-:10385C006573732000576527726520646561640089
-:10386C00436865636B73756D6D696E6720002062CC
-:10387C0079746573004E657720576F726C6420669F
-:10388C0069726D776172652073797374656D5F66AB
-:10389C006C6173685F62617365004F6C6420576F75
-:1038AC00726C64206669726D7761726520737973CE
-:1038BC0074656D5F666C6173685F6261736500430C
-:1038CC006865636B73756D202D2077616E7465640C
-:1038DC00200020676F7420004F757220696E74652C
-:1038EC00726E616C20666C61736820636F6E7465B8
-:1038FC006E74732061726520626164202863686550
-:10390C00636B73756D206661696C65642921205445
-:10391C00686973206973207265616C6C79206261CF
-:10392C00642100FFFFFFFFFFFFFFFFFFFFFFFF0111
-:10393C0000000000000000000000800100000000FA
-:10394C0000000000000080010000000000000000EA
-:10395C000000800100000000000000000000800159
-:10396C0000000000000000000000800100000000CA
-:10397C0000000000000080FFFFFFFFFFFFFFFFFFC4
-:10398C00FFFFFF7C00FE00FF01C701C701C701C795
-:10399C0001C701C701C701C701C701C701C701C7DB
-:1039AC0001FF01FE007C0038003C003E003E003868
-:1039BC00003800380038003800380038003800383B
-:1039CC000038003800FE00FE00FE007C00FE00FF08
-:1039DC0001C701C701C001C001E000F00078003C44
-:1039EC00001E000E000F000700FF01FF01FF017C0D
-:1039FC0000FE00FF01C701C701C001C001F800783B
-:103A0C0000F800C001C001C001C701C701FF01FEE1
-:103A1C00007C00E000E000F000F000F800F800F896
-:103A2C0000FC00EC00EE00E600FF01FF01FF01E0EE
-:103A3C0000E000E000E000FF00FF00FF00070007CF
-:103A4C000007007F00FF00FF01C701C001C001C7D4
-:103A5C0001C701C701FF01FE007C007C00FE00FFD6
-:103A6C0001C701C701070007007700FF00FF01C76E
-:103A7C0001C701C701C701C701FF01FE007C00FFA0
-:103A8C0001FF01FF01E000E00070007000700038E1
-:103A9C00003800380038001C001C001C001C001CE6
-:103AAC00001C007C00FE00FF01C701C701C701C755
-:103ABC0001FE007C00FE00C701C701C701C701C79A
-:103ACC0001FF01FE007C007C00FE00FF01C701C766
-:103ADC0001C701C701C701FF01FE01DC01C001C024
-:103AEC0001C701C701FF01FE007C000000000000BF
-:103AFC000000007C00FE00FF01C701C701F001FCC3
-:103B0C0001CE01C701C701E701FF01DF01CE0107AB
-:103B1C0000070007000700E700F701FF01CF01C70E
-:103B2C0001C701C701C701C701C701CF01FF01F7D9
-:103B3C0001E70000000000000000007C00FE00FF18
-:103B4C0001C701C7010700070007000700C701C72D
-:103B5C0001FF01FE007C00C001C001C001C001CE0C
-:103B6C0001DF01FF01E701C701C701C701C701C799
-:103B7C0001C701E701FF01DF01CE010000000000D9
-:103B8C000000007C00FE00FF01C701C701C701FF58
-:103B9C0001FF010700C701C701FF01FE007C00E027
-:103BAC0000F000F8003800FE00FE00FE003800387F
-:103BBC000038003800380038003800380038003839
-:103BCC000038005341442057415443483A20005296
-:103BDC006573657420526567697374657220004261
-:103BEC00726F776E206F75742072657365740053F5
-:103BFC0074617274696E67204C5345206F736369EE
-:103C0C006C6C61746F72004C5345206F7363696CFC
-:103C1C006C61746F7220646964206E6F74207374AD
-:103C2C00617274005553422077616B657570006C3E
-:103C3C00656176696E67207374616E6462790020C9
-:103C4C005F5F5F5F5F5F202020205F5F0D0A2F5F4B
-:103C5C0020205F5F2F205F5F2F202F0D0A202F2049
-:103C6C002F2020202F5F20205F5F2F0D0A2F5F2F2A
-:103C7C0020202020202F5F2F0D0A00426F6F746CC4
-:103C8C006F616465722076657273696F6E3A20009D
-:103C9C004C617374206669726D7761726520626F16
-:103CAC006F742077617320737461626C653B206361
-:103CBC006C65617220737472696B657300537475F3
-:103CCC00636B20627574746F6E20726567697374B0
-:103CDC00657220697320696E76616C69642C20634F
-:103CEC006C656172696E672E00427574746F6E201C
-:103CFC0069642000697320737475636B21004275CD
-:103D0C0074746F6E207761732070757368656420AE
-:103D1C006F6E20626F6F742E20427574746F6E20FC
-:103D2C00636F756E7465723A2000426F6F74206217
-:103D3C006974733A2000486F6C6420646F776E204E
-:103D4C005550202B204241434B20666F722035206A
-:103D5C00736563732E20746F20666F7263652D62BA
-:103D6C006F6F7420505246004669726D77617265B0
-:103D7C002069732065726173656400426F6F7469AA
-:103D8C006E67206E6F726D616C6C79005761746335
-:103D9C0068646F6720636175736564206120726568
-:103DAC0073657400536F6674776172652066616920
-:103DBC006C75726520636175736564206120726532
-:103DCC0073657400426F6F74206661696C65642C56
-:103DDC0020737472696B65203300426F6F742066B8
-:103DEC0061696C65642C20737472696B6520320098
-:103DFC00426F6F74206661696C65642C20737472F9
-:103E0C00696B652031004C6F6164696E6720726567
-:103E1C00636F76657279206669726D776172650081
-:103E2C004661696C656420746F206C6F61642072EC
-:103E3C0065636F76657279206669726D77617265FC
-:103E4C002C20737472696B65206F6E652E20547212
-:103E5C007920616761696E2E004661696C6564202A
-:103E6C00746F206C6F6164207265636F7665727914
-:103E7C00206669726D776172652C20737472696B40
-:103E8C00652074776F2E2054727920616761696E9A
-:103E9C002E004661696C656420746F206C6F6164E0
-:103EAC00207265636F76657279206669726D7761D1
-:103EBC0072652C20737472696B6520746872656509
-:103ECC002E20534144205741544348004F757220D3
-:103EDC0070726576696F7573206669726D77617241
-:103EEC006520757064617465206661696C65642C0D
-:103EFC002061626F7274696E67207570646174659D
-:103F0C002E004E6577206669726D77617265206947
-:103F1C007320617661696C61626C652100426F6F20
-:103F2C0074696E67206669726D77617265204020D6
-:103F3C000072657475726E696E6720746F2073748D
-:103F4C00616E64627900466F7263652D626F6F7487
-:103F5C00696E67207265636F76657279206D6F6428
-:103F6C00652E2E2E004261636B0055700053656CFC
-:103F7C0065637400446F776E0030313233343536FC
-:103F8C0037383941424344454600303132333435B9
-:103F9C003637383961626364656600286E756C6CFF
-:103FAC0029000000000001020304010203040607BB
-:043FBC0008090000F0
-:103FC00000A0000002020000FFFFFFFF00C004018C
-:103FD00000000000000000021000000007000000C8
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_asterix@1753450013.bin b/bin/boot/nowatchdog_boot_asterix@1753450013.bin
deleted file mode 100755
index 32fba9de40..0000000000
Binary files a/bin/boot/nowatchdog_boot_asterix@1753450013.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_asterix@1753450013.elf b/bin/boot/nowatchdog_boot_asterix@1753450013.elf
deleted file mode 100755
index 06b1d42760..0000000000
Binary files a/bin/boot/nowatchdog_boot_asterix@1753450013.elf and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_asterix@1753450013.hex b/bin/boot/nowatchdog_boot_asterix@1753450013.hex
deleted file mode 100644
index 73d5680b8f..0000000000
--- a/bin/boot/nowatchdog_boot_asterix@1753450013.hex
+++ /dev/null
@@ -1,1016 +0,0 @@
-:1000000000000420953A0000053B0000A91F0000F5
-:10001000093B00000B3B00000D3B0000000000000E
-:100020000000000000000000000000000F3B000086
-:10003000113B000000000000133B0000153B0000D6
-:10004000173B0000173B0000173B0000173B000068
-:10005000173B0000173B0000173B0000173B000058
-:10006000173B0000173B0000173B0000173B000048
-:10007000173B0000173B0000173B0000173B000038
-:10008000173B0000173B0000173B0000173B000028
-:10009000173B0000173B0000173B0000173B000018
-:1000A000173B0000173B0000173B0000173B000008
-:1000B000173B0000173B000000000000000000009C
-:1000C000173B0000173B0000173B0000173B0000E8
-:1000D000173B0000173B0000173B0000173B0000D8
-:1000E000173B0000173B0000173B0000000000001A
-:1000F00000000000173B000000000000173B00005C
-:1001000000000000000000000000000000000000EF
-:1001100000000000000000000000000000000000DF
-:1001200000000000000000000000000000000000CF
-:1001300000000000000000000000000000000000BF
-:1001400000000000000000000000000000000000AF
-:10015000000000000000000000000000000000009F
-:10016000000000000000000000000000000000008F
-:10017000000000000000000000000000000000007F
-:10018000000000000000000000000000000000006F
-:10019000000000000000000000000000000000005F
-:1001A000000000000000000000000000000000004F
-:1001B000000000000000000000000000000000003F
-:1001C000000000000000000000000000000000002F
-:1001D000000000000000000000000000000000001F
-:1001E000000000000000000000000000000000000F
-:1001F00000000000000000000000000000000000FF
-:10020000537475636B20627574746F6E20726567CA
-:10021000697374657220697320696E76616C6964B4
-:100220002C20636C656172696E672E004275747470
-:100230006F6E2069642000697320737475636B218D
-:1002400000427574746F6E207761732070757368E7
-:100250006564206F6E20626F6F742E204275747417
-:100260006F6E20636F756E7465723A200042616331
-:100270006B0055700053656C65637400446F776E56
-:10028000006D783235752E63004A45444543204958
-:10029000443A2000616464726573732000206973BE
-:1002A000206F7574736964652073797374656D204C
-:1002B000666C6173680073797374656D5F666C61F9
-:1002C00073685F65726173653A2061646472657317
-:1002D00073206E6F7420776F726420616C69676E33
-:1002E00065640073797374656D5F666C6173685FD4
-:1002F00077726974653A2061646472657373206E05
-:100300006F7420776F726420616C69676E6564003A
-:10031000496E76616C6964206669726D7761726599
-:10032000206465736372697074696F6E210043683D
-:1003300065636B73756D6D696E67206669726D7745
-:10034000617265207570646174650043616C6375EA
-:100350006C6174656420636865636B73756D3A20C6
-:1003600000496E76616C6964206669726D776172AE
-:10037000652043524320696E2053504920666C61CA
-:100380007368210065726173655F6F6C645F666995
-:10039000726D776172650077726974655F6E6577FB
-:1003A0005F6669726D7761726500576527726520B7
-:1003B0006465616400436865636B73756D6D696E38
-:1003C0006720002062797465730D0A0043686563D5
-:1003D0006B73756D202D2077616E7465642000202D
-:1003E000676F7420004F757220696E7465726E615C
-:1003F0006C20666C61736820636F6E74656E7473D5
-:1004000020617265206261642028636865636B7394
-:10041000756D206661696C65642921205468697373
-:10042000206973207265616C6C79206261642100BF
-:100430004F75722070726576696F75732066697288
-:100440006D7761726520757064617465206661699D
-:100450006C65642C2061626F7274696E67207570C0
-:10046000646174652E004E6577206669726D7761F0
-:10047000726520697320617661696C61626C6521C7
-:10048000004C6F6164696E67207265636F76657298
-:1004900079206669726D77617265004661696C6585
-:1004A0006420746F206C6F6164207265636F766581
-:1004B0007279206669726D776172652C207374722F
-:1004C000696B65206F6E652E2054727920616761BB
-:1004D000696E2E004661696C656420746F206C6FD4
-:1004E0006164207265636F76657279206669726DEA
-:1004F000776172652C20737472696B652074776FF5
-:100500002E2054727920616761696E2E0046616900
-:100510006C656420746F206C6F6164207265636F1A
-:1005200076657279206669726D776172652C2073C9
-:100530007472696B652074687265652E205341443E
-:100540002057415443480048415244204641554CAD
-:1005500054002020205F202020202020205F202009
-:100560002020202020202020205F2020202020006C
-:1005700020202F5F5C2020205F5F7C207C5F205F3D
-:100580005F5F205F205F285F295F205F5F00202F73
-:10059000205F205C20285F2D3C20205F2F202D5FD6
-:1005A0002920275F7C205C205C202F002F5F2F20DC
-:1005B0005C5F5C2F5F5F2F5C5F5F5C5F5F5F7C5F9A
-:1005C0007C207C5F2F5F5C5F5C00626F6F742062D9
-:1005D0006974004C617374206669726D776172652D
-:1005E00020626F6F742077617320737461626C6531
-:1005F0003B20636C65617220737472696B65730074
-:10060000504D494320696E6974206661696C656468
-:1006100000537475636B20627574746F6E00427260
-:100620006F6B656E20666C61736800486F6C642048
-:10063000646F776E205550202B204241434B202B76
-:100640002053454C45435420666F72203520736516
-:1006500063732E20746F20666F7263652D626F6FF7
-:100660007420505246004669726D77617265206948
-:100670007320657261736564005761746368646FA9
-:1006800067206361757365642061207265736574AA
-:1006900000536F667477617265206661696C75726C
-:1006A000652063617573656420612072657365748C
-:1006B000004661696C656420746F207374617274A4
-:1006C000206669726D776172652C20737472696B34
-:1006D000652074687265652E004661696C656420EA
-:1006E000746F207374617274206669726D776172C1
-:1006F000652C20737472696B652074776F2E0046C9
-:1007000061696C656420746F207374617274206613
-:1007100069726D776172652C20737472696B6520E4
-:100720006F6E652E00466F7263652D626F6F746920
-:100730006E67207265636F76657279206D6F646590
-:100740002E2E2E00426F6F74696E67206669726D7F
-:1007500077617265204020002E2E2E0D0A0D0A00B2
-:10076000426F6F7420626974733A20004669726D3B
-:1007700077617265206C656E6774683A2000436823
-:1007800065636B73756D3A20004153534552543A7B
-:1007900020003A00415353455254004153534552AF
-:1007A000544E002A2A2A20575446200053544D33D1
-:1007B000320053544D33322070657269706865722F
-:1007C000616C206C696272617279207472697070F8
-:1007D000656420616E206173736572740043524FCB
-:1007E000414B204F4F4D0052657461696E65642026
-:1007F000726567697374657220435243206661694C
-:100800006C65643A20657870656374656420435252
-:100810004320002C20676F742043524320002E2079
-:1008200020436C656172696E6720626F6F746269E4
-:100830007473210069746F61206275666665722049
-:10084000746F6F20736D616C6C002E2E2F2E2E2F07
-:100850002E2E2F2E2E2F74686972645F7061727451
-:10086000792F68616C5F6E6F726469632F6E726658
-:10087000782F68616C2F6E72665F6770696F2E6883
-:10088000002E2E2F2E2E2F2E2E2F2E2E2F746869F7
-:1008900072645F70617274792F68616C5F6E6F72E1
-:1008A0006469632F6E7266782F64726976657273FD
-:1008B0002F7372632F6E7266785F717370692E6327
-:1008C000002E2E2F2E2E2F2E2E2F2E2E2F746869B7
-:1008D00072645F70617274792F68616C5F6E6F72A1
-:1008E0006469632F6E7266782F64726976657273BD
-:1008F0002F7372632F6E7266785F7370696D2E63EB
-:10090000002E2E2F2E2E2F2E2E2F2E2E2F74686976
-:1009100072645F70617274792F68616C5F6E6F7260
-:100920006469632F6E7266782F647269766572737C
-:100930002F7372632F6E7266785F7477692E63000F
-:100940006D020000000000501C00000003000000C9
-:1009500072020000000000501D00000003000000B3
-:1009600075020000000000501E000000030000009F
-:100970007C020000000000501F0000000300000087
-:1009800001424F4F544C4F4144455200000000007B
-:10099000002A2A0000000000000000000000000003
-:1009A0000338FDD870470000000000000000000080
-:1009B000000400000000000000000000000000042F
-:1009C0000000000000000000000000000000000027
-:1009D0000000000000000000008000042000000073
-:1009E0000000000000000000010E100000000000E8
-:1009F000000000000000803F0000000000C0006018
-:100A000000300000FCF1073E000000C00060003034
-:100A10000000FCE0077F000000C000600030000024
-:100A20000C008663000000C00060003000000C0075
-:100A30008601F001F8C07C603E30E0030C008601C6
-:100A4000FC07FEC3FFE1FF30F80F4E108E030E0EC1
-:100A500007C783E3C1311C1C46100C0F060C03C6EC
-:100A600001E380310C184310183E039881CF0066D3
-:100A7000003306BE030038780398F9CF00660033D0
-:100A8000E63F431018600398FFC000660033FE0382
-:100A9000860F0CC003980FC0006600333E000E00A6
-:100AA0000EC0039801CC0066003306300C00C6C0AF
-:100AB000070C038601C380310C180C00C6C00F0E52
-:100AC0008F8783C3C1311C1C0C008661FF07FE03A6
-:100AD000FF81FF70F80FFCE0877FF301F8007C00D6
-:100AE0003E60E003FCF1071E030000000000000070
-:100AF0000000803F00000300000000000000000034
-:100B0000010E10000300000000000000008000043F
-:100B100020000300000000000000000000000000B2
-:100B200000000000000000000000000400000000C1
-:100B3000000000000000000000040000000000E0D1
-:100B4000FF0F000000000000F8FF7F000000000021
-:100B500000FEFFFF030000000080FFFFFF1F0000FA
-:100B60000000E01F00F87F00000000F80F00C0FF49
-:100B700000000000FE030000FE010000807F000076
-:100B800000F0030000C01F000000C0070000C00705
-:100B9000000000800F0000E003000000001F0000C4
-:100BA000E001000000003E0000F000000000007CBA
-:100BB0000000F00000000000780000780000000055
-:100BC00000F00000780000000000F000003C300061
-:100BD000000000E001003C7000000000E001001E89
-:100BE0007000700000C003001EF000780000C00319
-:100BF000001EE0007C00008007000FE0013E0000C6
-:100C00008007000FC0011F00008007000FC0830F86
-:100C100000008007000FC0C307000080078007E0C6
-:100C2000C303000080078007F0C103000080078035
-:100C300007F880030000800780077C8007000080A1
-:100C400007C0033E000700008007C0031E000F001E
-:100C5000008007E0030E000E00008007F001000096
-:100C60000E00008007F80000000C000080077800EC
-:100C7000C07100000080077C00E079001800800748
-:100C80003C00F0FF003C0080073C00F8FF003C0007
-:100C900080073E00F8FF011E0080071E0038CF01CC
-:100CA0001E0080071E0000C7010F00C0031F0000C8
-:100CB00000000F00C0030F000000800700E0010FDC
-:100CC000000000800700E0010F000000C00300F0FA
-:100CD000000F000000C00300F0000F000000C00380
-:100CE0000078000F600000C0030078000FF80000DB
-:100CF000C0033C3C000FFE0100C0033F3C009FFFCF
-:100D00000300C0C33F1E00FFFF0700C0E30F1E002B
-:100D1000FE870F00C0FF031E00F8031F00C0FF0086
-:100D20001E0060003E00807F001E000000FC0000EE
-:100D30003E001E000000F80F0018001E000000F02A
-:100D40007F0000001E000000E0FF0700001E000002
-:100D50000080FF3F00001E00000000F8FF03003C81
-:100D600000000000C0FF0F003C0000000000FC3F3E
-:100D700000780000000000E0FF00F8000000000024
-:100D800000FE03F0010000000000F01FE00300007F
-:100D9000000000C07FC007000000000000FFFF0F40
-:100DA000000000000000FCFF1F000000000000F039
-:100DB000FF1F000000000000C0FF0F7C00FE00FFCE
-:100DC00001C701C701C701C701C701C701C701C7E3
-:100DD00001C701C701C701C701FF01FE007C003840
-:100DE000003C003E003E0038003800380038003833
-:100DF00000380038003800380038003800FE00FEA7
-:100E000000FE007C00FE00FF01C701C701C001C059
-:100E100001E000F00078003C001E000E000F00070B
-:100E200000FF01FF01FF017C00FE00FF01C701C7B9
-:100E300001C001C001F8007800F800C001C001C085
-:100E400001C701C701FF01FE007C00E000E000F0E7
-:100E500000F000F800F800F800FC00EC00EE00E6FE
-:100E600000FF01FF01FF01E000E000E000E000FF03
-:100E700000FF00FF000700070007007F00FF00FFE2
-:100E800001C701C001C001C701C701C701FF01FEC1
-:100E9000007C007C00FE00FF01C701C701070007BE
-:100EA000007700FF00FF01C701C701C701C701C7E5
-:100EB00001FF01FE007C00FF01FF01FF01E000E0F7
-:100EC0000070007000700038003800380038001CD6
-:100ED000001C001C001C001C001C007C00FE00FF0D
-:100EE00001C701C701C701C701FE007C00FE00C7A2
-:100EF00001C701C701C701C701FF01FE007C007CDB
-:100F000000FE00FF01C701C701C701C701C701FFFC
-:100F100001FE01DC01C001C001C701C701FF01FEE4
-:100F2000007C0000000000000000007C00FE00FFCC
-:100F300001C701C701F001FC01CE01C701C701E7EC
-:100F400001FF01DF01CE010700070007000700E7EE
-:100F500000F701FF01CF01C701C701C701C701C7E2
-:100F600001C701CF01FF01F701E700000000000009
-:100F70000000007C00FE00FF01C701C70107000759
-:100F80000007000700C701C701FF01FE007C00C089
-:100F900001C001C001C001CE01DF01FF01E701C7AF
-:100FA00001C701C701C701C701C701E701FF01DF91
-:100FB00001CE0100000000000000007C00FE00FFE8
-:100FC00001C701C701C701FF01FF010700C701C732
-:100FD00001FF01FE007C00E000F000F8003800FE98
-:100FE00000FE00FE003800380038003800380038B5
-:100FF0000038003800380038003800FFFFFFFFFFDE
-:10100000FFFFFFFFFFFFFF010000000000000000E6
-:1010100000008001000000000000000000008001CE
-:10102000000000000000000000008001000000003F
-:10103000000000000000800100000000000000002F
-:10104000000080010000000000000000000080FFA0
-:10105000FFFFFFFFFFFFFFFFFFFFFF00000000009B
-:101060000338FDD8704700000E0000000F0000009C
-:101070000000980107000000004000400000000050
-:101080000701010E01000B06000B0101040201041F
-:101090000501040701040C00040D00040E000415F2
-:1010A00000020200030501050A01030C08030D04F8
-:1010B000030810030900030A2A03010103000103C6
-:1010C00010BB0311010312A40313020314540315EC
-:1010D000010316540317010123440123900123FA4D
-:1010E0000123CE0346040350010304010805000850
-:1010F0000C08080801080001080600080D08080986
-:1011000001080201060000060100060200060300B5
-:1011100006040000000000006410B71DC8206E3BEC
-:10112000AC30D9269041DC76F4516B6B5861B24DEE
-:101130003C7105502083B8ED44930FF0E8A3D6D658
-:101140008CB361CBB0C2649BD4D2D38678E20AA0C0
-:101150001CF2BDBD00000000000000000000000007
-:101160000338FDD8704700000000000000000000B8
-:101170000338FDD870470000FF000000FF000000AA
-:10118000FF000000FF000000FF000000FF00000063
-:081190000338FDD87047000090
-:081198009400000001000000BA
-:1011A0000348044B834202D0034B03B118477047F6
-:1011B0002C0100202C010020000000000548064BF7
-:1011C0001B1AD90F01EBA301491002D0034B03B145
-:1011D000184770472C0100202C010020000000005F
-:1011E00010B5064C237843B9FFF7DAFF044B13B16F
-:1011F0000448AFF300800123237010BD2C010020B0
-:1012000000000000B83D000008B5054B1BB10549C2
-:101210000548AFF30080BDE80840FFF7CFBF00BF2F
-:101220000000000030010020B83D0000A3F5803A26
-:10123000704700BF174B002B08BF134B9D46FFF7AD
-:10124000F5FF00218B460F461348144A121A02F08C
-:1012500069FD0E4B002B00D098470D4B002B00D0A2
-:1012600098470020002104000D000D48002802D0FE
-:101270000C48AFF3008002F05DFD2000290000F073
-:10128000E1FE02F03DFD00BF00000800000000008C
-:1012900000000000000004202C010020F0020120CA
-:1012A0000000000000000000F7B5012001F05AF92D
-:1012B0000024019001AD2746E0B200F049F806464F
-:1012C000A0B928700134042C05F10105F4D1019C6A
-:1012D0003CB1174800F0F6F8204600F012F900F093
-:1012E00087F82146012001F02FF90DE02B78042B1F
-:1012F0000DD9104800F0FEF8019800F002F9002125
-:10130000012001F021F90027384603B0F0BD013378
-:10131000DBB2052B2B70D5D1074800F0D3F820465F
-:1013200000F0EFF8054800F0E5F83746CAE700BFDF
-:1013300041020000000200002C0200003702000001
-:1013400008B500F049FB80F00100C0B208BD000004
-:10135000064B03EB001043688268D3F81035012078
-:1013600090401840B0FA80F04009704740090000F2
-:10137000002110B50C46C8B2FFF7EAFF88400131E2
-:1013800004430429E4B2F6D1204610BD10B5074B42
-:101390000422D3E90141187B01F5E0718000013A94
-:1013A00044F8210003F11003F3D110BD40090000FF
-:1013B000074B0422C3F80025C3F81C05D3F81C21F1
-:1013C000012AFBD10022C3F81C21C3F80025704775
-:1013D00000200040054B4FF08052C3F82425012225
-:1013E0009A601B22C3F80C25704700BF0020004004
-:1013F0002DE9F843304E346804F12E0323F007033F
-:1014000000AFADEB030D50238DF8003021238DF894
-:10141000013000238DF8023003238DF8033004F1EE
-:1014200021035BBAADF80430244B04F127086D4664
-:101430000DF1060203F11C0153F8040B42F8040BF2
-:101440008B42F9D11B78137004F1230922461C4901
-:1014500005F1230002F092FC4A462946002001F0E3
-:10146000B3F804F59273FE22B3FBF2F3434407335F
-:1014700023F00703ADEB030D45F80900424629466A
-:10148000684601F075F801465520FFF791FF6C465C
-:1014900069448C4207D15520FFF78AFF002333604F
-:1014A000BD46BDE8F88314F8010B552808BF00209D
-:1014B000FFF77EFFEDE700BF480100208009000034
-:1014C0004C01002038B50A4D441E14F8012F12B10A
-:1014D0002B68FF2B00D938BD0A2A02D1FFF788FFFD
-:1014E000F3E70D2A1FBF591C5B1929601A71ECE73D
-:1014F0004801002008B5FFF7E5FFBDE80840FFF709
-:1015000077BF1FB50C2201A901F08CF801A8FFF7E5
-:10151000D9FF05B05DF804FB7FB50DF1070300228C
-:101520008DF80700029302A9012304480592CDE932
-:10153000033201F077FE07B05DF804FB00010020E4
-:10154000F8B50733122706460698079C0731DD08D1
-:1015500007FB02F303EBD1031044234407FB0044D1
-:1015600004EBD104314618462A4602F007FC034634
-:101570001233A3422E44F5D1F8BD0000044B0822DB
-:10158000C3F80825034B4FF4E07043F001031847FC
-:1015900000030050A009000010B5084C4FF4E070A3
-:1015A00044F00104A047064B0822C3F80C254FF471
-:1015B00080702346BDE81040184700BFA009000016
-:1015C000000300502DE9F0410646FFF7D7FF8020C9
-:1015D000FFF7A2FF0025012420BA90FAA0F0C0B2C4
-:1015E000FFF79AFF06EB0508002718F8010B00BA71
-:1015F00090FAA0F00137C0B2FFF78EFF122FF4D19E
-:1016000000200134FFF788FFA92C05F11205E3D172
-:101610000020FFF781FFBDE8F041FFF7BDBF0000EC
-:1016200010B5ADF6D83D02AC4FF43D620021204626
-:1016300002F078FB1D2300934522702310210548FA
-:101640000194FFF77DFF2046FFF7BCFF0DF6D83D64
-:1016500010BD00BFA60900002DE9F04FADF6E43D36
-:1016600004AF03904FF43D620021384602F05AFB6C
-:101670004723264800930197452318222321FFF78B
-:101680005FFF1C2005464FF024084FF0010C039A21
-:101690000F23834013401E4AC34008FB03230DF66B
-:1016A0003806002403F1010913F814B00022082AB7
-:1016B00006D00CFA02F111EA0B0F05D10132F6E760
-:1016C00019F81410C9070FD55119C1F3C40E01F050
-:1016D000070116F80EA00CFA01F1013241EA0A01E5
-:1016E000092A06F80E10E2D10134122C06F1120676
-:1016F000DAD10B35742DA0F10400C8D13846FFF7BC
-:1017000061FF0DF6E43DBDE8F08F00BF3C0B00002B
-:10171000BB0D000008B5FFF731FF0020FFF7FCFE0E
-:101720000020FFF7F9FE0020FFF7F6FEBDE80840B5
-:10173000FFF732BF5E23F0B55843214BB0FBF1F405
-:101740009A68A242ADF6DC3D37D002AD4FF43D625F
-:10175000002128469C6002F0E5FA1D2319480093F9
-:101760004522702310210195FFF7EAFE082300931C
-:1017700018211548019560236A22FFF7E1FE0DF25A
-:101780008E7700214FF0010C781800220DE002F155
-:101790001903C3F3C40603F0070310F806E00CFABC
-:1017A00003F343EA0E0383550132A242EFD1123113
-:1017B0006C29E9D12846FFF705FF0DF6DC3DF0BDA9
-:1017C00000010020A6090000FB0F000038B51B4DEA
-:1017D0001B481C4B2B621C4A48F20C0303802F232E
-:1017E000C2F8603501210723C2F8001540F2114408
-:1017F000C2F80C350023C2F80435C2F80845C2F817
-:101800001435C2F81035C2F82005C2F82415284650
-:10181000C2F82835C2F82C3591601A4605F10C0142
-:1018200001F068FC094B0322C3F80C274FF0A043DA
-:10183000C3F810271022C3F8082538BD0001002086
-:101840004C02002040420F0000C001400003005045
-:1018500008B5044801F08AFC034B0022C3F80025B8
-:1018600008BD00BF0001002000C0014070B50C465B
-:10187000ADF5806D00254618B4F5806FA6EB040128
-:101880000BD82246684600F0C9F822466946284629
-:1018900000F09AFE0DF5806D70BD4FF480626846D1
-:1018A00000F0BCF828464FF48062694600F08CFED8
-:1018B000A4F580640546DFE707B540F20113013265
-:1018C000ADF8023000238DF800008DF80120684645
-:1018D0000A461946ADF8043001F04CF9044B984221
-:1018E00003D00448162100F0D3FD03B05DF804FBDB
-:1018F0000000AD0B8102000007B5013240F2011378
-:101900008DF800008DF8012068460022ADF8023005
-:10191000ADF8042001F02EF9044B984203D004489E
-:101920001F2100F0B5FD03B05DF804FB0000AD0B16
-:101930008102000010B513238CB00024CDE90143CF
-:1019400011221423CDE9032315211623CDE9051314
-:101950001E4BDFF880C01720CDE907034FF4FA7360
-:10196000CDE909C322460723214601A80B9301F0C4
-:10197000D1F8224621466620FFF7BEFF22462146C7
-:101980009920FFF7B9FF124B4FF40C6043F00103AD
-:10199000984722462146B720FFF7AEFF694601224D
-:1019A0000520FFF789FF01220DEB02013520FFF72B
-:1019B00083FF9DF80130022243F0020369460120B3
-:1019C0008DF80130FFF798FF0CB010BD0402010044
-:1019D000601000000500000313B5032201A99F2039
-:1019E000FFF76AFF9DF805409DF80430094824027E
-:1019F00044EA03449DF806301C43FFF763FD20468C
-:101A0000FFF77FFDFFF7F4FC0348231A58425841C3
-:101A100002B010BD890200001960C8002DE9F34131
-:101A2000454205F00305954288BFD5B2541B04F02A
-:101A3000030806460F4624F003049DB10A4604211C
-:101A40000DEB010001F0FEF8184B984203D05D2128
-:101A5000174800F01DFD30462A4601A902F08EF914
-:101A60002F442E445CB13A462146304601F0EAF854
-:101A70000E4B984201D06621EAE727442644B8F18C
-:101A8000000F0FD004213A460DEB010001F0DAF807
-:101A9000064B984201D06E21DAE7424601A9304652
-:101AA00002F06CF902B0BDE8F08100BF0000AD0BA0
-:101AB000810200002DE9F0411F4900231A46ACB015
-:101AC00001F1100001F09EFE1C4B984206462ED1FB
-:101AD0001B4801F0EBFE1B49932207A802F04EF9C8
-:101AE00007AC00274FF4D648002503202178627800
-:101AF000A3788DF80410CDE9030501A8CDE905050B
-:101B00008DF805200E48ADF808802A4602A98DF808
-:101B1000063001F017FFB04209D10137312F04F12F
-:101B20000304E1D1064801F0E1FE284601E04FF050
-:101B3000FF302CB0BDE8F081681000000000AD0B54
-:101B40007810000080100000B0F5801F10B504462A
-:101B50000BD90F48FFF7B6FC2046FFF7D2FC0D4823
-:101B6000FFF7C8FC4FF0FF3010BD00231A46B4EB5E
-:101B7000023F03F101034FEA023105D301F5805121
-:101B80008C4201D21046EFE7FF2BEFD11846EBE76E
-:101B9000940200009D0200002DE9F047054616461C
-:101BA0009846894641B310F0030705D01C48FFF75B
-:101BB000A1FC0020BDE8F087FFF7C6FF0446681EC1
-:101BC0004844FFF7C1FF611C0546F2D0421CF0D02B
-:101BD000A0EB040909F101091EB142464946384605
-:101BE000B047104F0223C7F80435C4F1010AAC42D4
-:101BF00004DD0023C7F804350120DBE72303C7F821
-:101C00000835D7F80034DB07FBD500F059F826B1CA
-:101C1000424649460AEB0400B0470134E7E700BFFB
-:101C2000B602000000E001402DE9F74F10F0030478
-:101C300006460F46984606D01F48FFF75BFC00207B
-:101C400003B0BDE8F08FDFF874B0012302F0030A9F
-:101C500022F00309CBF80435D5094C4518D3BAF165
-:101C6000000F0FD04FF0FF330193DBF80034DB0798
-:101C7000FBD5524607EB090101A802F07FF8019B52
-:101C800046F809300D4B0022C3F804250120D7E7A0
-:101C9000DBF80034D907FBD53B59A35100F010F80D
-:101CA000B8F1000F05D0620603D10C9A2946E0096D
-:101CB000C0470434D1E700BFE302000000E0014068
-:101CC0000B4AD2F8003430B58BB10A480023012109
-:101CD000D2F8084501FA03F5254218BF03F5C07490
-:101CE00003F1010318BF42F82400082BF0D130BDE6
-:101CF000000001403546526E4FF080434FF0FF32F6
-:101D0000D3F80004C3F80024C0F340007047490032
-:101D1000FFF710BD2DE9F047012186B005460020F0
-:101D2000FFF708FD042000F0F6FA03A8294600F0AA
-:101D30004DFB03A800F06EFB30B93C48FFF7DAFB1F
-:101D4000012006B0BDE8F08739480C35FFF7D2FB1B
-:101D500004992846FFF78AFD04463648FFF7B2FB90
-:101D60002046FFF7CEFBFFF743FB059B9C4201D0CB
-:101D70003148E3E7049CDFF8E0803048FFF7BAFB26
-:101D800021462F4A00234046FFF706FF2D48049FB7
-:101D9000FFF7B0FB0024A1464FEA570AA74217D924
-:101DA0003E1BB6F5803F28BF4FF4803626483246AA
-:101DB0002919FFF733FE2449CDF80090002332465D
-:101DC00008EB0400FFF730FF38BB2048FFF792FB19
-:101DD0001F48FFF777FB0498FFF793FB1D48FFF7B9
-:101DE00071FB049A1C49002000F0EEFB04461B48DE
-:101DF000FFF768FB0598FFF784FB1948FFF762FBC4
-:101E00002046FFF77EFBFFF7F3FA059B9C420BD0C1
-:101E10001448FFF76FFB022093E7344439460AEB7E
-:101E20005400FFF787FCB9E700208AE710030000A1
-:101E30002E0300004B030000610300008403000038
-:101E40000F1D0000970300004E020020AA030000AF
-:101E5000B5030000C303000000800000CC030000B5
-:101E6000DF030000E503000008B5022000F06BFA74
-:101E7000D8B3042000F067FA70B11C48FFF73AFBB2
-:101E8000042000F054FA022000F051FABDE80840A6
-:101E90004FF4004000F04BBA1548FFF72BFB082029
-:101EA00000F045FA102000F042FA202000F03FFA3E
-:101EB000402000F03CFA4FF48010FFF72BFF02287F
-:101EC00007D1082000F027FA102000F024FA00F0D3
-:101ED00007FB042000F02BFA022000F028FABDE8EE
-:101EE00008404FF4004000F016BA08BD300400006E
-:101EF0006604000010B52448FFF7FCFA0020FFF745
-:101F000009FF0138C0B201280ED9202000F00FFAD5
-:101F1000402000F00CFA802000F0FDF9012404209C
-:101F200000F005FA204610BD082000F0F4F910205A
-:101F300000F0F1F9202000F006FA58B91348FFF735
-:101F4000D9FA202000F0E7F94FF4007000F0E3F92F
-:101F500000F0C6FA402000F0F6F920B90C48FFF76F
-:101F6000C9FA4020EEE70B48FFF7C4FA082000F05A
-:101F7000DEF9102000F0DBF9202000F0D8F9402035
-:101F800000F0D5F90024CAE7810400009B0400009A
-:101F9000D40400000D05000008B50248FFF7AAFAB6
-:101FA00000F012FA470500001EF0040F0CBFEFF31B
-:101FB0000880EFF30980FFF7EFBF704708B50120F5
-:101FC000FFF7C6F918B9002000F0010008BD002095
-:101FD000FFF7BEF90028F6D00220FFF7B9F9002874
-:101FE000F1D00320FFF7B4F980F00100C0B2EBE7B5
-:101FF0001FB504461148FFF77DFA0C2201A92046BF
-:1020000000F010FB01A8FFF775FA2046FFF724FB4C
-:10201000FFF7AEF90A4C20F004002070FFF7A8F992
-:10202000237800F0FB00834201D000F059FAFFF75B
-:1020300047FE0A2000F0E8FAF0E700BF3D05000087
-:102040004E02012030B585B0FFF73AFEFFF7C2F926
-:102050009648FFF74FFA9648FFF74CFA9548FFF776
-:1020600049FA9548FFF746FA9448FFF743FA8F4834
-:10207000FFF740FA00F071F99148FFF73BFA00F0E2
-:1020800095F90023CDE90133039300F08BF90C227D
-:1020900001A900F0C7FA01A8FFF72CFA8348FFF75F
-:1020A00029FA8248FFF726FA4FF4804000F04BF9F6
-:1020B00090B18448FFF71EFA4FF4804000F037F9E2
-:1020C000082000F034F9102000F031F9202000F051
-:1020D0002EF9402000F02BF9FFF7ECFC28B17A48EC
-:1020E000FFF708FA7948FFF783FFFFF723FCFFF7B4
-:1020F0004DF9FFF76BFBFFF793FAFFF7D5F820B127
-:102100007348FFF7F7F97348EDE7FFF719F920B1C6
-:102110007148FFF7EFF97148E5E700F033F98020E7
-:1021200000F011F920B1802000F001F96C48DAE7E5
-:102130004FF4003000F007F938B14FF4003000F0F0
-:10214000F6F86848FFF7D6F94AE0FFF737FF78B1AD
-:102150006548FFF7CFF941F28834FFF72FFF70B1E0
-:10216000FFF7AEFD012000F04FFA013CF5D1E8E7A2
-:102170005E4B1A685B68013312D0013210D0FFF752
-:10218000BBFD88B94FF4007000F0DDF878B9082085
-:1021900000F0CDF8102000F0CAF8FFF765FE23E04C
-:1021A0005348FFF7A7F9CCE75248FFF7A3F94FF4DC
-:1021B000007000F0C8F810B14F48FFF79BF94FF4DA
-:1021C000007000F0B4F8102000F0BDF878B34B4870
-:1021D000FFF790F9082000F0AAF8102000F0A7F807
-:1021E000FFF788FE0028A1D04FF4005000F0ABF8B4
-:1021F00005464FF4805000F0A6F844004FF400600C
-:1022000000F0A1F844EA850464B2204340B20728F4
-:102210001DD14FF4006000F08AF84FF4805000F0B8
-:1022200086F84FF4005000F082F835485BE708204C
-:1022300000F089F830B13348FFF75CF9102000F066
-:102240006AF8AAE73048FFF755F90820F7E70328AE
-:1022500021D020F0040001284FF4006016D000F0D7
-:102260005AF8FFF7F5FA214B28485C681D68FFF71C
-:1022700029F92046FFF745F92548FFF723F9FFF72D
-:102280001FFD63B64FF0FF3EAD46204700F04FF80C
-:102290004FF48050E3E74FF4006000F048F84FF44B
-:1022A000805000F044F84FF40050D8E75F0700007A
-:1022B00052050000700500008E050000AC0500000E
-:1022C000CA050000D305000000060000054550FEC9
-:1022D00011060000014550FE1E060000024550FE9A
-:1022E000034550FE250700002B060000008000007B
-:1022F000660600007906000091060000B1060000A5
-:10230000044550FED9060000FF0600004407000007
-:1023100058070000704710B50446002000F022F96D
-:1023200040EA0401BDE81040002000F00DB910B5EE
-:102330000446002000F016F920EA0401BDE8104030
-:10234000002000F001B910B50446002000F00AF9A1
-:102350002040003818BF012010BD4FF0804208B562
-:10236000D2F8043943F48023C2F8043900F0BEF8EF
-:102370000120FFF7E8FF20B9BDE80840012100F087
-:10238000E3B808BD08B50648FFF79CF8002000F048
-:10239000E9F8FFF7B6F8BDE80840FFF729B800BF35
-:1023A00060070000022000F0DDB8000008B5FFF76C
-:1023B000F9FF0449884204D0BDE80840022000F03B
-:1023C000C3B808BD1D86836800BEFDE71FB50C229B
-:1023D000044601A8FFF722FB0C48FFF773F80298A8
-:1023E000FFF78FF8FFF704F80948FFF76BF8039839
-:1023F000FFF787F8FEF7FCFF01AB03CB20601868FE
-:10240000A0602046616004B010BD00BF6C070000F2
-:102410007E0700000068A0F10C0358425841704745
-:1024200080B50646174610480D461C46FFF74AF889
-:102430003846FFF747F80D48FFF744F83046FFF7F6
-:1024400041F80B48FFF73EF82846FFF75AF82CB141
-:102450000848FFF737F82046FFF734F80648FFF73B
-:1024600049F8FFF7B1FF00BF890700006D050000C4
-:10247000920700006E0500005F0700001FB506AC64
-:102480001A4654F8043B00940394FFF7C9FF000078
-:1024900007B5002300937246014BFFF7EFFF00BF23
-:1024A0009B07000007B5034B00937246024BFFF7F2
-:1024B000E5FF00BFB2070000AC070000BFF34F8F7D
-:1024C0000549064BCA6802F4E0621343CB60BFF3D0
-:1024D0004F8F00BFFDE700BF00ED00E00400FA05EC
-:1024E00008B5FFF717F9FFF7E9FF000038B5124C00
-:1024F0007C222146002000F067F8E36F8342054606
-:1025000018D00E48FEF7DEFF2846FEF7FAFF0C480B
-:10251000FEF7D8FFE06FFEF7F4FF0A48FEF7D2FFA0
-:10252000FEF766FF20464FF48072BDE83840002178
-:1025300001F0F8BB38BD00BF00000020E707000035
-:10254000130800001E08000010B5054C7C2244F85A
-:1025500020102146002000F037F8E06710BD00BFD2
-:1025600000000020014B53F82000704700000020BD
-:102570002DE9F0410546002401202746034602F1DB
-:10258000FF38944205EB070C03D18CF80030BDE80E
-:10259000F08111F804E0461CBEF1000F05D1EB55A7
-:1025A0000746012301343046EBE70133DBB2FF2B52
-:1025B00005F800E0F6D1A04504D037468CF800308D
-:1025C000861CEEE73046E0E730B5C9B10D4DC0439B
-:1025D0000A44914201D1C04330BD11F8013B83EA66
-:1025E000000404F00F0455F8244084EA101080EA37
-:1025F000131303F00F0355F8233083EA1010E8E7B4
-:102600000846E9E71411000038B5054D044645F0C9
-:10261000010504B938BD4FF47A40A847013CF8E7FA
-:10262000601100000A2A30B403DC30BC1048FEF709
-:1026300061BF0C46302304F8023B78234B701C2208
-:102640000F2505FA02F30340D340092B0AD8303393
-:10265000DBB2043A04F8013B131DF2D1002330BC75
-:102660008B7270470F2B01D85733F1E72023F0E727
-:102670003408000070B546090D4600F01F0419D05B
-:10268000012E04D14FF6FF73E340DB0704D4134857
-:102690004FF46C71FFF706FF7EB1012E1CD00F487E
-:1026A00040F2B931FFF7FEFE04F5E074002353F861
-:1026B0002430FFDE4FF0FF33E6E74FF0A04202EB9D
-:1026C0008402074BD2F800170B4043EA052343F07E
-:1026D0000203C2F8003770BD024AF0E74A08000062
-:1026E000F0F8FCFF000300500E4B0238D3F83C26F4
-:1026F000D3F8383610B5072813D8DFE800F0110FEB
-:102700000D0B0A080604100EC871100C8871100A0F
-:1027100048710A711A0ECA701A0C8A701A0A4A7025
-:102720000B7010BD00900240023807281FD8DFE868
-:1027300000F02927251123211F04CB791B068A7954
-:1027400043EA02434A7943EA02230A7913430E4AD1
-:10275000C2F83C36CB781B068A7843EA02434A78B3
-:1027600043EA02230A781343074AC2F8383670470F
-:102770000023E4E70023E5E70023E6E70023EBE797
-:102780000023ECE70023EDE7009002400268154BC0
-:10279000FF2A08BF4FF0FF32C3F824254268FF2A02
-:1027A00008BF4FF0FF32C3F828258268FF2A08BF10
-:1027B0004FF0FF32C3F83025C268FF2A08BF4FF040
-:1027C000FF32C3F834250269FF2A08BF4FF0FF32F9
-:1027D000C3F838254269FF2A08BF4FF0FF32C3F81B
-:1027E0003C25704700900240F8B5114D6C6BB4B1B8
-:1027F0004FF47A735C430A23B4FBF3F40D4E0E4F8F
-:1028000046F00106D7F8003163B995F839304BB975
-:102810004FF42070B047013CF4D10848F8BD4CF2A9
-:102820005034EBE795F83930002BF6D10448F5E742
-:102830005002012070110000009002400700AD0B13
-:102840000000AD0B0A4B10B500220124C3F800456F
-:10285000C3F800211C6038B1FFF7C6FF054B984252
-:1028600004D1054B83F83840024810BD0348FCE70B
-:10287000009002400000AD0B500201200700AD0B9C
-:102880002DE9F8433D4C994694F830300646884689
-:1028900017461BB93A487F21FFF704FE2EB9384886
-:1028A0008021FFF7FFFD374841E006F06043B3F1B8
-:1028B000005FF8D1B307F6D194F83030012B05D082
-:1028C0004B4558D194F83830002B54D02E4AB9F1EA
-:1028D000020F4FF000030BBFC2F81075C2F8047569
-:1028E000C2F81465C2F808650CBFC2F81885C2F8B2
-:1028F0000C8584F8393023680CBF08250425C3B93A
-:1029000094F838306BB1204B05F1804505F524353E
-:102910000022C3F8002101232B60BDE8F843FFF734
-:1029200063BF0120FFF78EFF184B9842EBD1BDE843
-:10293000F883A3682BB1E660C4F81480E7611448FB
-:10294000F5E7114AA660C4F81080A76184F83090BA
-:10295000C2F800310123C2F8043394F8382002F0A1
-:10296000FF0012B9FFF76EFFE9E705F1804505F5B5
-:1029700024352B60E3E70748D9E700BF5002012068
-:10298000810800000A00AD0B009002400700AD0B6B
-:102990000000AD0B0B00AD0B30B5194D0FCD8DB058
-:1029A00006AC0FC495E8030084E803001549D1F88C
-:1029B0002435DBB20093D1F82835DBB20193D1F88E
-:1029C0003035DBB20293D1F83435DBB20393D1F862
-:1029D0003835DBB20493D1F83C3506A8DBB2059359
-:1029E000FFF7D4FE0023C1F8003101230B60D1F8BA
-:1029F0000031002BFBD06846FFF7C8FE0DB030BD9C
-:102A0000781100000090024090F8293070B504461B
-:102A100013B190F82A206ABB6068FF286DD0A268C5
-:102A2000FF2A6AD0E268FF2A67D02269FF2A64D0B1
-:102A3000D3B90321FFF71EFEA0680321FFF71AFE9A
-:102A4000E0680321FFF716FE20690321FFF712FE5D
-:102A50006069FF2802D00321FFF70CFEA069FF2860
-:102A600002D00321FFF706FE94F82A3013B9201D87
-:102A7000FFF78CFE224E636A224D736394F829306F
-:102A800086F83A300123C5F80833FFF785FF23683D
-:102A9000C5F84035A37F617F227F9B0143EAC103D4
-:102AA0001343E27F43EAC213C5F84435D5F8002644
-:102AB00094F8203022F07F4222F0FF02134394F872
-:102AC000212043EA026394F8222043EA426394F807
-:102AD000232043EA0273C5F8003633685BB194F8EB
-:102AE0002830094A5B01DBB282F829334FF40073C6
-:102AF000C2F884315360054870BD0548FCE700BF4B
-:102B0000500201200090024000E100E00000AD0B07
-:102B10000400AD0BF8B50F461646054620B910481F
-:102B20004FF4DB71FFF7BEFC0E4C94F83030A3B9C4
-:102B3000C4E900764DB90023C4E9023301220A48F2
-:102B400084F8302084F83830F8BD2846FFF75CFF61
-:102B5000054B9842EFD00548F6E70548F4E700BF7B
-:102B600081080000500201200000AD0B0400AD0BF5
-:102B70000C00AD0B2DE9F047DFF8C4A09AF8303017
-:102B800005468946164623B928484FF40171FFF7D8
-:102B900089FC9AF83000012846D19AF83830DFF8DD
-:102BA000948063B3224F0123C7F80833FFF7F4FE84
-:102BB0006C78B9F1000F29D1AA784FF000098AF892
-:102BC00039902302C7F8009143EA02332A7813436D
-:102BD000EA7843EA42332A7943EA82336A7943EA5C
-:102BE000C233C7F83436FFF7FFFD404513D12B79C8
-:102BF0004BB90E4840F23621FFF754FC03E0FFF7D3
-:102C000021FE4045CED10B48BDE8F087494620461D
-:102C1000FFF78AFDD0E7C7F800911EB1687831460A
-:102C2000FFF762FD0448EFE70448EDE78108000084
-:102C3000009002400700AD0B0000AD0B0B00AD0B88
-:102C4000500201200323FFF71BBE30B50546900854
-:102C500040380124844014EA010009D0A85838B152
-:102C60000021A950AA5813B11A6822431A60012002
-:102C700030BD2DE9F341002304460D4601939046F3
-:102C800001AB4FF4A672FFF7E0FF4FF482722946C2
-:102C90002046FFF7DAFF4FF48C720746294620469C
-:102CA000FFF7D3FF064630B1B8F1000F1DD017B1C2
-:102CB000D4F83C353E4601AB4FF488722946204695
-:102CC000FFF7C3FF30B1B8F1000F03D016B90FB151
-:102CD000D4F83C3501AB4FF4907229462046FFF7FB
-:102CE000B4FF019802B0BDE8F0814646E3E700007A
-:102CF00003685A0910B504461CD0012A06D14FF6C4
-:102D0000FF7203F01F03DA40D30704D40D484FF4D9
-:102D10006C71FFF7C7FB236803F01F025B09226099
-:102D20000BD0012B0CD0074840F2B931FFF7BAFBAA
-:102D3000002010BD4FF0FF32E3E74FF0A040F8E76E
-:102D40000148F6E74A0800000003005007B501906B
-:102D500001A8FFF7CDFF019A01239340C0F8083581
-:102D600003B05DF804FB07B5019001A8FFF7C0FFB1
-:102D7000019A01239340C0F80C3503B05DF804FBC1
-:102D8000F7B51746421C1C460646089B0D4618D050
-:102D9000012902D1BBB1FFF7D9FF01A80196FFF7C6
-:102DA000A7FF019B00EB83002402D0F80027074B0C
-:102DB00044EA87042C4313401C4344EA4504C0F80A
-:102DC000004703B0F0BDFFF7CEFFE6E7F0F8FCFFE9
-:102DD000F8B51A4F012304460D46436164261F438C
-:102DE000002202212046FFF744FF18B94020B847CF
-:102DF000013EF5D14FF080530022D3F830116A77AD
-:102E0000082918D1D3F83431ABB94FF0FF32D4F8D8
-:102E10000805D4F80C15C4F80035C4F80825C4F822
-:102E20000C250922C4F80025C4F80035C4F80805AB
-:102E3000C4F80C15F8BDC4F80025FBE7901100009C
-:102E4000104B98421BD011D80F4B984217D008D87E
-:102E50000E4A0F4B984218BF90420CBF0120002031
-:102E600070470C4BC31A5842584170470A4B98425E
-:102E700005D002D8094A0A4BECE70A4BF2E70120D9
-:102E8000704700BF80841E0020A1070090D003007F
-:102E900048E8010040420F000024F40000127A00CC
-:102EA00000093D000048E8012DE9F3474B69794AE4
-:102EB00090F80490934207460C4600F0D08000F250
-:102EC000B880754A934200F0CD8000F2AB80734A1F
-:102ED000934200F0CA80724A934200F0C980714860
-:102EE0004FF4BC71FFF7DEFA4FF08045DFF8D08178
-:102EF000E67E242202FB0983997F66F3000199771D
-:102F00003B79217C02FB03839A7F61F341029A772C
-:102F10005EBB6269644B9A420CBF4FF0030A4FF0EC
-:102F2000000A237E012B94BF002301230093206815
-:102F3000534632460121FFF723FF0096606853464F
-:102F400032460121FFF71CFF0096A27EA06853467F
-:102F50003146FFF715FF237C83F001030093E068FF
-:102F6000534632460121FFF70BFF242303FB09835D
-:102F7000E2681A62217C9A7F267F61F341029A7788
-:102F800094F812C0217E94F819E03B6896B9D4E910
-:102F900001902268C3F80825C3F80C95C3F8100502
-:102FA0004FF0FF30C3F86C05C3F81405C3F868652B
-:102FB000C3F86465BEF1000218BF01220229C3F8FC
-:102FC000C0C5C3F8245559D003295AD0012901D1CD
-:102FD00042F00202C3F854250222C3F860253A7970
-:102FE00024214A4358F80220CAB1627C43F30733D4
-:102FF0005201002BD2B247DB03F1604101F5614180
-:1030000081F8002303F01F015B099B0003F160437B
-:1030100003F5614301228A40C3F880211A6002B09F
-:10302000BDE8F087214A93427FF459AF4FF08055B5
-:103030005CE71F4A93421ED00AD81E4A93423FF4CF
-:1030400053AF1D4A93427FF44AAF4FF000454DE71E
-:10305000154A93427FF443AF4FF0A05546E74FF037
-:10306000005543E74FF0006540E74FF000753DE73E
-:103070004FF080653AE74FF0206537E742F00402F1
-:10308000A8E742F00602A5E70C4903F00F03CA5473
-:10309000C5E700BF80841E0020A1070048E80100AA
-:1030A00090D00300C10800000048E80140420F0032
-:1030B0000024F40000093D0000127A0014ED00E045
-:1030C0008C020120431C07B50ED0019001A8FFF728
-:1030D0000FFE019B00EB8300054BD0F80027134047
-:1030E00043F00203C0F8003703B05DF804FB00BFF3
-:1030F000F0F8FCFF2DE9F8430646914698460D4648
-:1031000021B9154840F24B21FFF7CCF93779134C20
-:10311000242303FB07431B7FD3B91DB16869FFF765
-:103120008FFEB8B124217943631844F80190C3F8A5
-:1031300004801DB129463046FFF7B6FE242303FB69
-:10314000074400236377064801232377BDE8F8830B
-:103150000448FBE70448F9E7C10800008C0201209D
-:103160000000AD0B0C00AD0B0400AD0B2DE9F843D6
-:10317000274C0679242303FB064305461B7F23B90E
-:1031800024484FF42B71FFF78DF92B6843F3073375
-:10319000002B0DDB5A09012103F01F03994002F1B6
-:1031A00020031D4A42F82310BFF34F8FBFF36F8FE8
-:1031B00024217143635833B12868184BC0F8083391
-:1031C0002144FFF705FE24272B6807FB0647D3F8A9
-:1031D0000805D3F80C85D3F81095BB7FDB070AD41C
-:1031E000FFF770FF4846FFF76DFF4046FFF76AFFA5
-:1031F000386AFFF767FF2B68094A934204BF012230
-:103200005A60242303FB064400232377BDE8F88398
-:103210008C020120C108000000E100E0520108001A
-:1032200000F002402DE9F04F6D4F90F80480242308
-:1032300003FB087385B01B7F82460D46164623B9F3
-:10324000684840F29131FFF72DF92B6833B96B686C
-:1032500023B1644840F29231FFF724F9AB68002BA8
-:1032600055D1EB68002B4DD1EB88002B52D116F0D5
-:1032700008090AD0242303FB08731B6A013304D016
-:10328000584840F29731FFF70DF9242303FB08F368
-:10329000FA18517F002940F0A180FB5823B116F0A5
-:1032A000140F04BF0123537795E80F00242404FB77
-:1032B000087404F10C0C8CE80F00206A431C04D045
-:1032C000A37F99072CD5FFF741FDD5F800B0BBF1DE
-:1032D000000F04D00BF06043B3F1005F09D1D5F8C3
-:1032E00008E0BEF1000F1ED00EF06043B3F1005FA6
-:1032F00019D0242303FB087300223B485A7705B0FA
-:10330000BDE8F08F374840F29331FFF7CBF8EB89F7
-:10331000002BA9D033484FF46571FFF7C3F8A6E737
-:10332000FFF721FDD1E7DAF8004016F0010318BFDE
-:103330000123C4F8503516F0020318BF0123C4F866
-:10334000403595E80F00C4F844B58DE80F00C4F887
-:103350004815C4F834E5C4F838350023C4F81831EA
-:10336000D4F818310723C4F80035242303FB08F3ED
-:10337000EC46FB58B9F1000F21D10122226103BBB9
-:10338000D4F81831002BFBD0624640212046FFF7CD
-:1033900070FC242303FB0873186A421C04D09B7F33
-:1033A0009B0718D5FFF7DFFCB9F1000F05D12421E9
-:1033B00001FB08712046FFF70BFD0C489FE7002B2F
-:1033C000E7D016F0040F4FF0400314BFC4F80833E1
-:1033D000C4F80433F1E7FFF7B9FCE5E704488EE7EA
-:1033E0008C020120C10800000A00AD0B0000AD0BEB
-:1033F0000B00AD0BCA7B036810B52AB9D1E90042B6
-:10340000C3F80845C3F80C258A68C3F82425027957
-:103410003C20424311488258CAB10A7B43F3073328
-:103420005201002BD2B213DB03F1604101F561417F
-:1034300081F8002303F01F015B099B0003F1604347
-:1034400003F5614301228A40C3F880211A6010BD50
-:10345000034903F00F03CA54F9E700BFB00201208B
-:1034600014ED00E0D0F8043130B52BB10023C0F8E2
-:103470000431D0F80431012391F82F2022B3002227
-:10348000C0F82421D0F82441C0F81C21D0F81C41F8
-:10349000C0F80821D0F80821002B79D0002281F84B
-:1034A0002D2091F82F20002A37D14D6B8C6AA54230
-:1034B0001FBF0523C0F80025C0F80035134683F070
-:1034C000010381F82F3028E0D0F8244114B1C0F86E
-:1034D00024210EE0D0F81C216AB3C0F81C41D0F8BA
-:1034E0001C214A6BD0F8245101324A6345B1C0F81F
-:1034F0002441D0F824210122426181F82F20CBE71A
-:103500008C6AA24204D24C6AA25CC0F81C25C3E7B4
-:1035100091F82C201AB10123C361002030BD0A6A42
-:1035200012F0400F4FF0010203D0C26181F82D204C
-:10353000F3E74261B0E7D0F80841002CACD0C0F806
-:103540000821D0F80841D0F82441002CBFD14A6BA3
-:103550008C6AA242A0D24C6AD0F81855A5544A6B86
-:103560008C6A0132651EAA424A6308D10A6A54066F
-:1035700002D40222C0F80022012202628CE7A24299
-:10358000FAD10A6A520687D5022381F82D30C4E7A2
-:103590000120C3E72DE9F0415FEA50180E461746B7
-:1035A0001C4600F01F051DD0B8F1010F04D14FF6E5
-:1035B000FF73EB40DB0704D416484FF46C71FEF741
-:1035C00071FFB8F1000F10D0B8F1010F1FD01148F2
-:1035D00040F2B931FEF766FF05F5E075002353F8B8
-:1035E0002530FFDE4FF0FF33E3E74FF0A04303EB5E
-:1035F0008503094AD3F80017240244EA87040A40E5
-:1036000044EA46041443C3F80047BDE8F081034B85
-:10361000EDE700BF4A080000F0F8FCFF000300508F
-:1036200013B53A4B01930023C0F80431D0F80421BC
-:10363000C0F82431D0F82421C0F81C31D0F81C2166
-:10364000C0F80831D0F80821C0F800324B6381F887
-:103650002F300123036291F82D209A4218BF836016
-:103660008B6A044673B14B6A1B78C0F81C350B6833
-:1036700003B340F286238B608B682548C4F804337B
-:1036800002B010BD91F82C3013B10123C361EEE7F5
-:103690000B6A13F0400F4FF0010316BFC361436183
-:1036A00081F82D30E3E72046FFF7DCFE28B1019BCF
-:1036B000013B0193019B002BF5DC91F82F305BB9A6
-:1036C0001348019B002BDBDC0023C4F800350523E5
-:1036D0001048C4F80035D3E7D4F8C434C4F8C4346F
-:1036E0008BB10C4A0C4813F0010F08BF104613F0C1
-:1036F000020F02F5803218BF104613F0040F074B7B
-:1037000018BF1846DDE70348DBE700BFA0860100CD
-:103710000000AD0B0100AD0B0000AE0B0200AE0BC4
-:1037200013B5334B01930023C0F80431D0F80421C2
-:10373000C0F82431D0F82421C0F81C31D0F81C2165
-:10374000C0F80831D0F808214B6381F82F308B6A1C
-:10375000012B044617D10B6A5B0614D40223C4F86C
-:1037600000320123236291F82D20022A18BF236022
-:103770000B688BB140F286238B608B681D48C4F8C0
-:10378000043302B010BD0123E9E72046FFF76AFECB
-:1037900028B1019B013B0193019B002BF5DC91F8C3
-:1037A0002F305BB91348019B002BEADC0023C4F8DF
-:1037B000003505231048C4F80035E2E7D4F8C434D6
-:1037C000C4F8C4348BB10C4A0C4813F0010F08BF85
-:1037D000104613F0020F02F5803218BF104613F0A6
-:1037E000040F074B18BF1846DDE70348DBE700BFAF
-:1037F000A08601000000AD0B0100AD0B0000AE0B78
-:103800000200AE0B2DE9F047074691469A460C465A
-:1038100019B92248B521FEF745FE97F80480204DDE
-:103820003C2000FB08F0291891F82E609EBB8E60AA
-:1038300045F80090C1F804A081F82D6081F831604E
-:1038400081F83060F4B1637B81F83830A37B81F874
-:1038500039309BB9D4E900239A4203D10F48E821BB
-:10386000FEF720FE2068062303220021FFF792FEC8
-:103870006068062303220021FFF78CFE21463846AC
-:10388000FFF7B8FD3C2303FB08550648012385F8E4
-:103890002E30BDE8F0870448FBE700BF01090000B7
-:1038A000B00201200000AD0B0C00AD0B70B50D4C4B
-:1038B00006793C2303FB0643054693F82E30012B83
-:1038C00004D0094840F23111FEF7ECFD2B680522C7
-:1038D000C3F800253C2303FB0644022384F82E3062
-:1038E00070BD00BFB00201200109000070B5124C8C
-:1038F00006793C2303FB0643054693F82E3023B993
-:103900000E484FF49F71FEF7CDFD2B680C4AC3F8AB
-:103910000823D3F8002222F00302C3F80022002279
-:10392000C3F800253C2303FB0644012384F82E3012
-:1039300084F8302070BD00BFB002012001090000F2
-:10394000864204002DE9F8434D4F06793C2303FBE2
-:103950000673054693F82E30022B0C46904604D091
-:10396000484840F2AE21FEF79DFDE36833B9636835
-:1039700023B1444840F2AF21FEF794FD236933B9E7
-:10398000A36823B13F484FF42C71FEF78BFD4FF035
-:103990003C0909FB06F957F80930A3B92378022B33
-:1039A00008D02378032B0ED136484FF42D71FEF743
-:1039B00079FD08E0334840F2B321FEF773FD57F874
-:1039C0000930002BEDD03C2303FB0673D5F80090A3
-:1039D00093F82D30012B04D12378012B06D12A48EE
-:1039E00011E0022B02D12378012BF8D13C25274B83
-:1039F000C9F8083305FB067595F830302BB1AB6874
-:103A00002348C9F80433BDE8F883C8F3800383F082
-:103A10000103DBB2A64685F83030BEE80F0005F1A1
-:103A20000C0CACE80F00DEF80030CCF80030636816
-:103A3000AB62E368C5F820806B626378C9F88835AB
-:103A40002378012B17D09BB9C8F340183C2303FB04
-:103A500006732946484683F82C80FFF7E1FD3C2396
-:103A60005E43BA19BB59002BCDD182F83030CAE77A
-:103A70004FF00108EAE729464846FFF751FEEEE716
-:103A8000B0020120010900000500AD0B86420400D0
-:103A90000B00AD0B0F49104A104B00F010F8104905
-:103AA000104A114B00F00BF81049114A114B00F06D
-:103AB00006F81149114A124B00F001F806E0521ABB
-:103AC00003DD043A98588850FBDC704700F03AF860
-:103AD000FDF7B0FB000100202C010020043E000097
-:103AE0002C0100202C010020303E00002C01002081
-:103AF0002C010020303E00002C0100202C01002071
-:103B0000303E0000FEE7FEE7FEE7FEE7FEE7FEE7E9
-:103B1000FEE7FEE7FEE7FEE74FF08053D3F83021E3
-:103B2000082A03BFD3F83401B0FA80F0400900201E
-:103B300070470000024AD2F80034002BFBD07047D7
-:103B400000E0014008B54FF08053D3F83021082A37
-:103B50004ED14FF080420021C2F80C11C2F8101172
-:103B6000C2F8381502F54042D3F80414C2F8201503
-:103B7000D3F80814C2F82415D3F80C14C2F8281589
-:103B8000D3F81014C2F82C15D3F81414C2F8301559
-:103B9000D3F81814C2F83415D3F81C14C2F8401521
-:103BA000D3F82014C2F84415D3F82414C2F84815E9
-:103BB000D3F82814C2F84C15D3F82C14C2F85015B9
-:103BC000D3F83014C2F85415D3F83414C2F8601581
-:103BD000D3F83814C2F86415D3F83C14C2F8681549
-:103BE000D3F84014C2F86C15D3F84434C2F87035D9
-:103BF000FFF792FF18B13B4B3B4AC3F88C26FFF707
-:103C00008BFF18B1394BFB22C3F81825FFF784FF4F
-:103C100058B14FF080424FF08051D2F8E43ED1F8D5
-:103C2000581261F30303C2F8E43EFFF775FF20B1B9
-:103C30002F4B4FF40072C3F840264FF08053D3F857
-:103C40003031082B09D14FF08043D3F80024D2073C
-:103C500044BF6FF00102C3F80024264AD2F888302E
-:103C600043F47003C2F88830BFF34F8FBFF36F8FF8
-:103C70004FF08053D3F83021082A0BD1D3F83431D8
-:103C8000042B81BF4FF01023D3F808224FF080435C
-:103C9000C3F858254FF01021D1F80C32DB071FD59F
-:103CA00015480123C0F80435FFF744FFD1F80C3262
-:103CB00023F00103C1F80C32FFF73CFF0023C0F8EA
-:103CC0000435FFF737FFBFF34F8F0A490B4BCA6824
-:103CD00002F4E0621343CB60BFF34F8F00BFFDE7F8
-:103CE00008BD00BF005000404881030000F00040C4
-:103CF0000090024000ED00E000E001400400FA0501
-:103D000008B5064B044613B10021AFF30080044B05
-:103D10001B6803B198472046FEF7FCFA000000003C
-:103D2000EC02012002440346934200D1704703F89D
-:103D3000011BF9E770B50D4B0D4D5B1B9C10002668
-:103D4000A64209D100F028F80A4D0B4B5B1B9C10D2
-:103D50000026A64205D170BD55F8043B98470136B0
-:103D6000EEE755F8043B98470136F2E7A43D000022
-:103D7000A43D0000A43D0000A83D00000A4491427B
-:103D800000F1FF3300D1704710B511F8014B03F873
-:103D9000014F9142F9D110BDF8B500BFF8BC08BC85
-:103DA0009E46704709120000F8B500BFF8BC08BC79
-:0C3DB0009E467047E1110000000000007A
-:103DBC00043E0000000100200B000000303E00001B
-:103DCC002C01002000000000303E00002C010020DF
-:103DDC0000000000303E00002C010020000000001C
-:103DEC002C01002071400000F002012000000000B6
-:083DFC00F002012000000000AC
-:103E040000F0024000000000FFFFFFFF060000007A
-:103E140008000000FFFFFFFFFFFFFFFF0007FF0098
-:0C3E240000093D0000000000000000004C
-:020000042000DA
-:1000000000000000000000000000000000000000F0
-:1000100000000000000000000000000000000000E0
-:1000200000000000000000000000000000000000D0
-:1000300000000000000000000000000000000000C0
-:1000400000000000000000000000000000000000B0
-:1000500000000000000000000000000000000000A0
-:100060000000000000000000000000000000000090
-:100070000000000000000000000000000000000080
-:100080000000000000000000000000000000000070
-:100090000000000000000000000000000000000060
-:1000A0000000000000000000000000000000000050
-:1000B0000000000000000000000000000000000040
-:1000C0000000000000000000000000000000000030
-:1000D0000000000000000000000000000000000020
-:1000E0000000000000000000000000000000000010
-:1000F0000000000000000000000000000000000000
-:0400000300003A952A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_bb2@1447134832.bin b/bin/boot/nowatchdog_boot_bb2@1447134832.bin
deleted file mode 100755
index 06d3acffae..0000000000
Binary files a/bin/boot/nowatchdog_boot_bb2@1447134832.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_bb2@1447134832.hex b/bin/boot/nowatchdog_boot_bb2@1447134832.hex
deleted file mode 100644
index dba413e6e6..0000000000
--- a/bin/boot/nowatchdog_boot_bb2@1447134832.hex
+++ /dev/null
@@ -1,1061 +0,0 @@
-:020000040800F2
-:1000000048200120A52C0008053000080530000814
-:100010000530000805300008053000080000000029
-:100020000000000000000000000000000530000893
-:100030000530000800000000053000080530000809
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0CEFD2E
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000BBFD05B05DF804FBD6
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:08018800A7FD05B05DF804FBC2
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F078FCDDF820C01A
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F019FC089B9CE0BA425C
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00BD3F00084B45F7DBEDE70D9907910798C7
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01C43F0008DD
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C0010B5044608484021FFF794FC0028F9D094
-:10191C0005482146FFF78AFC03484021FFF78AFC63
-:10192C000028F9D010BD00BF00480040014608B5A2
-:10193C000448FFF767FC03480221FFF765FC002809
-:10194C00F9D008BD0038004000B9074803680133DE
-:10195C0008D04368013305D0C069044BC31A584200
-:10196C005841704700207047004000086F57654E83
-:10197C00074B1A69C2F306427F2A07D11869C0F3D4
-:10198C000C00B0F1FF0358425841704700207047DB
-:10199C000028004000F13F4000F57E00800A082836
-:1019AC000FD8084A52F820305BB1013B42F8203086
-:1019BC003BB9012101FA00F0034B1A6B22EA00003B
-:1019CC0018637047200000200038024000F13F40AF
-:1019DC0000F57E00800A08280DD8074A52F82030FE
-:1019EC00591C42F8201033B9012101FA00F0034BC5
-:1019FC001A6B104318637047200000200038024017
-:101A0C0010B50C4C2046FFF7E1FF072001F036FB28
-:101A1C004FF4805100222046FFF786FB042001F092
-:101A2C002DFB2046FFF7B6FF4FF480400021FFF757
-:101A3C0077F810BD0004024010B50B4C01214FF497
-:101A4C008040FFF76DF82046FFF7C0FF20464FF4AB
-:101A5C0080510122FFF768FB072001F00FFB2046A5
-:101A6C00FFF798FF10BD00BF0004024008B5FFF758
-:101A7C00E3FF0020FFF75AFF0020FFF757FF00207D
-:101A8C00FFF754FFFFF7BCFFFEF772FEBFF34F8F5B
-:101A9C00044A054BD16801F4E0610B43D360BFF3FA
-:101AAC004F8FFEE700ED00E00400FA05F0B55E256F
-:101ABC006843204BB0FBF1F51A68ADF6DC3D95425E
-:101ACC0034D002AC00214FF43D6220461D60FEF77D
-:101ADC00BEFA1B238DE818001748102140226923F9
-:101AEC0001F0AFFA08238DE8180014486023182180
-:101AFC006A2201F0A6FA0DF2FA760DF28E7300222C
-:101B0C00AA420DD002F11900C0B2C108012700F0A1
-:101B1C00070007FA00F05F5C013238435854EFE7D6
-:101B2C001233B342EBD1204601F0E3FA0DF6DC3D63
-:101B3C00F0BD00BF08000020B03500084539000892
-:101B4C002DE9F043ADF6DC3D02AC00214FF43D62D3
-:101B5C0080462046FEF77BFA2C238DE818002022C5
-:101B6C00284818215C2301F06CFA1C2215460F271B
-:101B7C00974007EA0807D740234B242101FB07377E
-:101B8C000DF50366002117F801C00023082B07D0C0
-:101B9C000120984010EA0C0F0CBF0020012003E03C
-:101BAC007818407800F0010078B15819C0B24FEAAB
-:101BBC00D00E4FF0010900F0070009FA00F016F8FA
-:101BCC000E9040EA090006F80E000133092BDDD116
-:101BDC000231242906F11206D5D10B35742DA2F150
-:101BEC000402C4D10E238DE81800102190226D231D
-:101BFC00064801F026FA204601F07BFA0DF6DC3D92
-:101C0C00BDE8F083A0330008A5390008DC320008D9
-:101C1C0010B5ADF6D83D02AC204600214FF43D6224
-:101C2C00FEF715FA1B238DE81800102140226923BA
-:101C3C00044801F006FA204601F05BFA0DF6D83D97
-:101C4C0010BD00BFB03500082DE9F74F434E444F8F
-:101C5C0001214FF48040FEF763FF3046FFF7B6FEDC
-:101C6C003846404CFFF7B2FE30460D210522FFF7F7
-:101C7C0060FA052230460F21FFF75BFA3046214609
-:101C8C000125FFF7FEF920233846214623602571F4
-:101C9C00A5714FF0000A01934FF4805BFFF7F1F947
-:101CAC00304621464FF002084FF48049257184F8E4
-:101CBC0006A0C4F800B0FFF7E4F93046214684F8DA
-:101CCC000480C4F80080FFF7DCF921462571A5716A
-:101CDC00C4F80090244C3046FFF7D3F92046FFF7A8
-:101CEC0039F920462149FFF75FFA20462946FFF7CC
-:101CFC007AFA019B384619465246FFF715FA2A46DE
-:101D0C0030464946FFF710FA40462946FEF708FFD1
-:101D1C00A4F5505480232380F92323854FF4F042FB
-:101D2C004FF6FF13E3623046A283294623644246F2
-:101D3C00A4F820B0FFF7FDF929462046A582FEF74E
-:101D4C001FFD3846FFF726FE3046FFF723FE4846B8
-:101D5C005146FEF7E5FE03B0BDE8F08F00040240EB
-:101D6C000008024000000020003800400C00002059
-:101D7C0010B5074C2046FFF729FE20461021FFF72F
-:101D8C00CFF92046FFF706FE012001F077F910BDD0
-:101D9C000000024038B50A4B0C2404FB0034606888
-:101DAC00FFF714FE21896068FFF7B4F905466068F7
-:101DBC00FFF7F0FDD5F1010038BF002038BD00BFA2
-:101DCC009432000810B5064C2046FFF7FFFD204664
-:101DDC001021FFF7A7F92046FFF7DCFD10BD00BF6F
-:101DEC0000000240F0B587B0FFF7C2FD002841D1DA
-:101DFC000320FFF759F807460420FFF755F8474B27
-:101E0C000A241A68C2F30545C2F30626C2F302136C
-:101E1C0002F00F0204FB0322330906F00F0604FB49
-:101E2C0003662B0905F00F0504FB03533C2505FB4A
-:101E3C00036305FB0323191A44BF01F5A83101F50F
-:101E4C00C07107EB91210320FFF71EF803A8FFF7E1
-:101E5C0098F903A8FEF7F4FE01A8FFF798F901A979
-:101E6C000020FEF731FF02A8FFF797F9002002A926
-:101E7C00FEF794FF0A2442F2107501F05CF910B9D8
-:101E8C00013DFAD107E0264D01F055F908B1013DAD
-:101E9C00FAD1013CEFD10020FEF792FD00214FF268
-:101EAC000400FFF71DF84FF43C50FFF745F81D4BAD
-:101EBC0001201A6842F004021A60FEF781FD1A4BE9
-:101ECC001B781BB1194801F055F908E01848FEF7CA
-:101EDC0001F9174902461748FEF7DDF970B11648AB
-:101EEC0001F048F90020FEF7EFFF08200121FEF772
-:101EFC00B7FF4FF400400121FEF7F2FF0F4801F04D
-:101F0C0039F9084B1A6842F002021A600C4B1A6934
-:101F1C0042F004021A6130BF07B0F0BD0028004047
-:101F2C00A086010000700040017AFF1F2A370008CC
-:101F3C003F3700082078FF1F453700085A37000844
-:101F4C0000ED00E0B0F1006F10B504460BD20D4867
-:101F5C0001F007F9204601F013F90B4801F00AF9DA
-:101F6C004FF0FF3010BD094A002352F8041FA14264
-:101F7C0002D851688C4202D30133072BF5D1184695
-:101F8C0010BD00BF6E3800086B37000870320008B7
-:101F9C0008B5024801F0EEF800BEFEE784370008F1
-:101FAC0010B504460A480221FFF72EF90028F9D093
-:101FBC0007482146FFF726F905480121FFF724F9C8
-:101FCC000028F9D00248FFF71AF9C0B210BD00BFC3
-:101FDC00003001402DE9F04F87B00121814600AF60
-:101FEC000020FFF763FD042001F063F807F10C00FB
-:101FFC0049460C2201F0E9F8FD683C690C2DD7F834
-:10200C0014B013D0994801F0ACF8284601F0B8F898
-:10201C00974801F0A6F8204601F0B2F8954801F077
-:10202C00A0F8584601F0ACF8934833E0934801F01F
-:10203C00A1F84FF480500121FEF766FD09F10C095F
-:10204C00EA46FEF7DFFBA0B06E462546C846802D5B
-:10205C000CD941463046802201F0B7F83046202199
-:10206C00FEF7DCFB803D08F18008F0E725B1304637
-:10207C0041462A4601F0A9F82946304600F0C6FF31
-:10208C00002180464FF48050FEF73EFDD845D546E2
-:10209C0004D07B4801F06EF80120E3E088B068467C
-:1020AC004946202201F091F86846FFF74DFC786014
-:1020BC007448D54601F05EF87B682BB9724801F084
-:1020CC0059F804F5404600E02646002E3BD06F48F8
-:1020DC00FFF738FF05466E483044FFF733FF002DFD
-:1020EC00824630DB00282EDB431B01334FEA430BC7
-:1020FC0000205946FFF7DAFCFEF7B0FB654B0026D3
-:10210C0003EB45033B6055451BDCF320FEF7BCFBA2
-:10211C003B68002133F81600FEF7D6FB082806F1C1
-:10212C00010608D05C4801F01CF8284601F028F89C
-:10213C0001F00FF805E030465946FFF7B7FC0135C2
-:10214C00E1E7FEF799FB554801F014F87B680BB1F9
-:10215C004E4B00E0524B7B6063083B600025A54270
-:10216C003CD2661BB6F5803F28BF4FF480362EB1AB
-:10217C004C4805EB0901324601F027F8D7F804A0CA
-:10218C00FEF76CFBF320FEF77FFBAA444FF0000B2D
-:10219C00B34519D043490BEB0A0011F80B10FEF7AD
-:1021AC00CBFB08280DD0404800F0DBFF504600F078
-:1021BC00E7FF00F0CEFFFEF75FFB3C4800F0DAFFD4
-:1021CC000CE00BF1010BE3E7FEF756FB3B682146F5
-:1021DC0003EB5500FFF76AFC5D44C0E7344800F0A0
-:1021EC00C0FF204600F0CCFF324800F0C3FF0020B7
-:1021FC00FFF7AAFB20B1304800F0BCFF234D03E0F1
-:10220C002E4800F0B7FF264D4FF480500121A60850
-:10221C00FEF77AFCFEF7F6FA31462846FEF7FEFA90
-:10222C0004F0030105EB860000F0F0FE00210446EB
-:10223C004FF48050FEF768FC214800F092FF4046B6
-:10224C0000F09EFF1F4800F08CFF204600F098FF26
-:10225C0000F07FFF444504D01B4800F08BFF0220A8
-:10226C0000E000201C37BD46BDE8F08F8F3700081A
-:10227C0098370008A2370008A9370008C8370008AB
-:10228C00E5370008083800081B3800080040000833
-:10229C00FF3F0008CC320008333800084B380008E8
-:1022AC0000000108440000205E3800087738000860
-:1022BC00823800089038000897380008BC380008AD
-:1022CC00E1380008F4380008FA38000870B54FF40B
-:1022DC0080500121FEF730FCFFF774FD0520164CF1
-:1022EC00FFF75EFE002C04F1FF341FDCFFF740FD0E
-:1022FC00FFF768FD9F20FFF753FEA920FFF750FE64
-:10230C000546A920FFF74CFE0646A920FFF748FE1C
-:10231C003602044646EA0545FFF72AFD4FF4805085
-:10232C000021FEF709FC45EA040070BDA920FFF767
-:10233C0037FEC307D6D4D9E70090D00308B50446BE
-:10234C00114800F00EFF204600F01AFF00F001FFCC
-:10235C002046FFF7F5FB00F0EEFE0C4B20F00400DE
-:10236C0018701D4600F0E7FE2B7800F0FB0083424E
-:10237C0001D10B2401E0FFF779FB013CF2D04FF4C3
-:10238C007A7000F07BFEF8E7E53B00084400012082
-:10239C0080B5464B4FF4C06290B01A6001214FF0EB
-:1023AC008050FEF7BDFB0120FEF704FB4048FFF711
-:1023BC000DFB4FF480200121FEF7B2FB3C480A21B3
-:1023CC000722FEF7B6FE072239480B21FEF7B1FEB5
-:1023DC0010AF4FF4806347F8383D00244FF00108EC
-:1023EC000225334839468DF80E408DF80F808DF854
-:1023FC000C508DF80D50FEF744FE4FF400632C4842
-:10240C00394602938DF80C5004AEFEF73AFE4FF4A9
-:10241C006133049327480C233146ADF81A30ADF8DC
-:10242C001440ADF81640ADF81840ADF81C40FEF75E
-:10243C00BFFD41461F48FEF7EDFE1D48FFF7AAFA07
-:10244C001D4800F08EFE1D4B586F00F099FE00F0F9
-:10245C0080FE7920FEF7B8FB404502D1184800F009
-:10246C0089FE012000F010FE10B90121FEF70CFDD1
-:10247C004120FEF7A9FB58BB124800F07BFE01205F
-:10248C00FEF7D0FA47F230544120FEF79DFBF8B925
-:10249C004FF47A7000F0F2FD013CF5D10A4800F0DF
-:1024AC0069FEFFF7D1FB094837E100BF003C024051
-:1024BC000008024000480040F13B00080038024090
-:1024CC00013C0008113C0008293C0008114550FE55
-:1024DC004FF48070FEF7FAFA0120FEF70FFBFEF7BF
-:1024EC00D1FB0020FEF76CFA01214FF48040FEF77F
-:1024FC0023FBBB48FFF76AFA3046FEF702FE0024C6
-:10250C000125B74831468DF815408DF816408DF8E9
-:10251C00174004958DF81450FEF7B3FD2246B048D1
-:10252C002946FEF701FEAE48FFF734FAAD4C04F134
-:10253C00300954F8040CFFF749FA3046FEF7E1FD78
-:10254C00236854F8040C4FF000083146022504931C
-:10255C008DF814808DF815508DF817800C34FEF71B
-:10256C0090FD54F8100CFFF715FA4C45E1D14FF4DF
-:10257C0080404146FEF7E0FA4FF4807000F084FD95
-:10258C00002800F0CC804FF4807000F087FDFFF73E
-:10259C0029FC954800F0EEFD0220FEF785FC9349DE
-:1025AC00884202D00220FEF76FFC914800F0D9FD62
-:1025BC000220FEF779FC00F0E3FD00F0CAFD4FF4B9
-:1025CC00804000F061FD90B18A4800F0D3FD4FF4DB
-:1025DC00804000F063FD082000F060FD102000F04A
-:1025EC005DFD202000F05AFD402000F057FDFFF764
-:1025FC002BFBFFF70DFB01214FF48050FEF79CFAEB
-:10260C007748FFF7E3F901200146FEF77DFA052133
-:10261C000A467348FEF78DFD714806210522FEF728
-:10262C0088FD05226E480721FEF783FD0024022554
-:10263C00C0236B4839468DF80C508DF80D50029321
-:10264C008DF80E408DF80F40FEF71BFD20236448DB
-:10265C0039468DF80F5002930125FEF712FD102319
-:10266C0039465F4802938DF80C508DF80F50FEF7E9
-:10267C0008FD6148FEF76EFC4FF48273ADF8123022
-:10268C004FF40073ADF81A305B4807233146ADF8B0
-:10269C002030ADF81040ADF81440ADF81640ADF850
-:1026AC001840ADF81C40ADF81E40FEF77DFD2946E4
-:1026BC005148FEF798FD4A48FFF76CF9FFF782FB8B
-:1026CC00AB20FFF76DFCFFF753FB642000F0D6FC4A
-:1026DC0021464FF48050FEF72FFAFFF7F7FD2846FE
-:1026EC00FEF7E2FB25460490E8B2FFF753FB98BBDC
-:1026FC0070550135042DF7D1049D3DB13F4800F0D4
-:10270C0030FD284600F03CFD00F023FD0120294659
-:10271C00FEF7BAFB002C3DD03948FFF70FFE2846D8
-:10272C00FEF754F9012814D12846FEF759F94FF455
-:10273C000060FEF7F3FB18B1324800F01BFDB9E066
-:10274C00314C00F0F8FC002800F00481013CF8D179
-:10275C00B0E000F0B9FC1CE7735D042B0ADD2B48DC
-:10276C0000F008FD049800F00BFD01200021FEF79D
-:10277C008BFB0FE00133DBB2042B7355B9DD24481E
-:10278C0000F0EFFC284600F0FBFC224800F0F2FCC5
-:10279C000124AEE7FFF79AFD1F4B0344012B01D92F
-:1027AC001E48BAE71E4800F0DCFC0020FEF77CFB5C
-:1027BC0000F0E6FC00F0CDFC802000F065FC18B1C8
-:1027CC00802000F06BFC73E04FF4003000F05CFCF8
-:1027DC00044638B34FF4003000F060FC04E100BF55
-:1027EC00000002409C320008613C00087086415693
-:1027FC009D3C0008B23C000800300140203D000820
-:10280C00014550FE463C0008A0860100DF3C000854
-:10281C000B3D0008163D0008EA44DFFF024550FE60
-:10282C004C3D00080120FFF7B5FAD8B12046FFF760
-:10283C00B1FAB8B1B74800F09DFC41F288340120E0
-:10284C00FFF7A8FA002800F08B800020FFF7A2FA0F
-:10285C00002800F085804FF47A7000F00FFC013CEA
-:10286C00EDD1C1E00020FFF76FF808B1AA4B00E0F2
-:10287C00AA4B0CCB013301D0013271D1A84800F026
-:10288C0079FCB1E0A74800F075FC082000F006FCCC
-:10289C00102000F003FC202000F000FC402000F091
-:1028AC00FDFB0024042000F0F9FB002C40F0088113
-:1028BC009D4832E7FFF75CF8002847D0002001A9BB
-:1028CC009A4DFEF749FA344600203946FEF7A8FA2D
-:1028DC000FCD0FC40FCD0FC495E80F0084E80F0087
-:1028EC009DF8092010A901EB82039DF80BE053F829
-:1028FC00343C40F26D1101FB0E3303EB9E030EF1E1
-:10290C00010E1EF0030F02D1022A88BF01339DF87D
-:10291C000A409DF80410013C2344182404FB0314C2
-:10292C009DF805103C2202FB04149DF806100320B0
-:10293C0002FB0414FEF7B8FA01190320FEF7A4FAFF
-:10294C0004200021FEF7A0FA00F0BEFB784800F04E
-:10295C0011FC1EE6774800F00DFCFFF743FAF5E793
-:10296C007D20FEF731F970B94FF4007000F08CFB4C
-:10297C0048B9714800F0FEFB082000F08FFB1020D6
-:10298C0000F08CFB85E07D20FEF71EF910B16B4842
-:10299C0000F0F0FB4FF4007000F076FB10B16848CB
-:1029AC0000F0E8FB4FF4007000F078FB102000F012
-:1029BC006BFB48B1634800F0DDFB082000F06EFBB8
-:1029CC00102000F06BFB12E0082000F05DFB20B142
-:1029DC005D4800F0CFFB102003E05C4800F0CAFB20
-:1029EC00082000F066FB54E0594800F0C3FB59483E
-:1029FC0000F0C0FB4FF40010FFF7ECFA10B1022806
-:102A0C0028D809E0202000F049FB402000F046FBCC
-:102A1C00802000F04EFB1DE0082000F04AFB102047
-:102A2C0000F047FB202000F02FFB20B94A4800F0B3
-:102A3C00A1FB202009E0402000F026FB00287FF4B9
-:102A4C0021AF464800F096FB402000F032FB4FF4DB
-:102A5C0000701AE0012425E7414800F08BFB0820A8
-:102A6C0000F01CFB102000F019FB202000F016FBDE
-:102A7C00402000F013FB2046FFF7ACFA022840F090
-:102A8C00F080082000F015FB102000F012FBFEF780
-:102A9C00EDFF022000F0F8FA90B1042000F0F4FAF7
-:102AAC0004460028D8D02F4800F064FB042000F026
-:102ABC00F5FA022000F0F2FA4FF4004000F0EEFAC2
-:102ACC004FF4005000F0E0FA04464FF4805000F050
-:102ADC00DBFA400040EA84044FF4006000F0D4FAC2
-:102AEC00E4B22043431C03F0FF03013B4FF40060AE
-:102AFC00062B58D8DFE803F03C383C043C383C004B
-:102B0C0000F0CCFA4FF4805000F0C8FA4FF40050AB
-:102B1C002EE000BF583D00080040000800000108EE
-:102B2C008A3D0008B43E0008034550FE44320008BC
-:102B3C00513C0008533F00089D3D0008AE3D000885
-:102B4C00C63D0008E63D0008FC3D0008123E0008AA
-:102B5C00683F0008283E0008423E00087B3E000803
-:102B6C00243F0008EE3E000800F098FA4FF4805025
-:102B7C0000F09FFA45F25550FDF7FAFE0420FDF7E0
-:102B8C00FDFE40F6FF70FDF7FFFE0020FDF7F0FEA6
-:102B9C004FF480500121FDF755FE0020FEF7D4FEC6
-:102BAC0068B9354B0CE000F079FA4FF4805000F026
-:102BBC0075FA4FF4005000F071FA3048ADE5304B27
-:102BCC005D6830481E6800F0CCFA284600F0D8FA50
-:102BDC0000F0BFFA00F0BDFA00239A0002F1604247
-:102BEC00013302F561424FF0FF31082BC2F880101F
-:102BFC00C2F88011F1D1244B00241C635C639C63EC
-:102C0C001C645C64FDF7F4FE20480121FDF7A0FF75
-:102C1C0021461E48FDF79CFFF1200121FDF7A4FF82
-:102C2C002146F120FDF7A0FF01200146FDF7A8FF8A
-:102C3C0021460120FDF7A4FF15480121FDF7ACFF4B
-:102C4C0021461348FDF7A8FF12480121FDF7B0FFFC
-:102C5C0010482146FDF7ACFF63B64FF0FF3EB5467A
-:102C6C002847042000F01AFA022000F017FA4FF45B
-:102C7C00004000F01EFA23E700000108044550FE56
-:102C8C00004000083F3F000800380240001060225E
-:102C9C00FFC9FE36335907000748084A08B50849EA
-:102CAC00121AFDF7CBF90748074A0021121AFDF753
-:102CBC00CEF9FFF76DFB00BF0000002020000020C4
-:102CCC00D43F000820000020480001202DE9F04FDF
-:102CDC00DDE909AB0E469C4603783B490746C95CC7
-:102CEC0001300D07F8D42B2B05D02D2B04D1074622
-:102CFC004FF0FF3301E007460123397830290ED11C
-:102D0C007978782905D132F0100103D102371022DD
-:102D1C0007E00AB1082A04D10137082201E002B900
-:102D2C000A2200200021B84617F8015BA5F13004F7
-:102D3C00E4B2092C0DD9A5F14104192C02D8A5F146
-:102D4C00370405E0A5F16104192C30D8A5F157041E
-:102D5C00E4B294422BDA4FEAE27900FB09F502FB6C
-:102D6C000155A0FB0201E4B2294400194FF0000503
-:102D7C0041EB0501BCF1000FD5D0012B06D18245EA
-:102D8C007BEB0104CFDA50465946CCE75C1CCAD128
-:102D9C00DDE90B89444261EB4105444575EB0909BA
-:102DAC00C1DADDE90B01404261EB4101BBE70EB139
-:102DBC00C6F80080DD1700FB05F203FB0122A0FB27
-:102DCC0003011144BDE8F08F4C1200082DE9F04FBF
-:102DDC0091B01F9E0C46310691468046DDE91A23C0
-:102DEC001E9D04D5CDE902234FF0000C1BE0002AF8
-:102DFC0073F100071046194602DA504263EB4301A7
-:102E0C00002A73F1000ACDE9020107DBB70708D4E9
-:102E1C0016F0040C07D04FF0200C04E04FF02D0CF2
-:102E2C0001E04FF02B0C16F04007089714BF704FC1
-:102E3C00704FDDE902AB079700271C980137C117CB
-:102E4C00CDE90401DDE904230AA93944099150466E
-:102E5C005946CDF804C0FEF773FA07980999835CBC
-:102E6C00504601F8013C5946DDE90423FEF768FAA7
-:102E7C0082468B465AEA0B02DDF804C001D0162FAD
-:102E8C00DBD116F0080239461DD01C9B082B02D052
-:102E9C00102B0ED01CE0DDE902AB1DB95AEA0B0B6E
-:102EAC0013D004E05AEA0B0B12D0BD4210DC7B1C91
-:102EBC000FE0DDE902AB5AEA0B0B09D008982B4660
-:102ECC0048B1582208E02B4606E02A46012303E0CD
-:102EDC002B46002200E078221CF1000B1D98C7EB5A
-:102EEC00030A18BF4FF0010BBB42A8BF1F46C01B03
-:102EFC002AEAEA7ACBEB00000AB1022700E0174677
-:102F0C00C71B16F0010027EAE77701D07F4205E0E6
-:102F1C00F60603D5013504BFBA4407463D46002DDD
-:102F2C000BDD2068013D461C4E453CBF202608F8B1
-:102F3C000060206801302060F1E727EAE7703F1A53
-:102F4C00BBF1000F08D02068451C4D4538BF08F870
-:102F5C0000C02068013020608AB12068451C4D45B6
-:102F6C003CBF302508F800502568681C02354D45DB
-:102F7C00206038BF08F80020226801322260BAF1C4
-:102F8C00000F0CD022680AF1FF3A501C48453CBF98
-:102F9C00302008F80200226801322260EFE7DDE9F8
-:102FAC0002AB5AEA0B0B10D17BB919460DE0236822
-:102FBC0001395A1C4A4505D201F1280568462A5C9C
-:102FCC0008F803202368013323600029EFD15FB197
-:102FDC00236801375A1C4A453CBF202208F80320BD
-:102FEC00236801332360F2E711B0BDE8F08F00BF16
-:102FFC009B3F0008AC3F00081EF0040F0CBFEFF322
-:10300C000880EFF30980FEF7C3BF7047032970B542
-:10301C0005460C4606D98E083146FDF7FFFBB60077
-:10302C003544A41B14B9FDF707FC70BD00231846EA
-:10303C00EA5C0133A34242EA0020F9D1FDF7E8FB38
-:10304C0070BD2DE9F0410733DE08079B4FF01208E5
-:10305C0008FB02320731069F054602EBD10800241B
-:10306C00BC4209D0122000FB048029463246FCF7F2
-:10307C00E5FF01343544F3E7BDE8F08106235843FE
-:10308C0001387FF4FDAF704710B504460020FDF702
-:10309C000BFF20420CBF0020012010BD10B50446D0
-:1030AC000020FDF701FF20EA04010020FDF7ECFEF3
-:1030BC0010BD10B504460020FDF7F6FE40EA0401F1
-:1030CC000020FDF7E1FE10BD1FB501A8FEF759F871
-:1030DC000723029301A803230393FDF7B1FD684670
-:1030EC00FEF755F869460020FDF7EEFD05B05DF8DA
-:1030FC0004FB70B50646FEF79FFC8020FEF716FC1D
-:10310C00A82420BA90FAA0F0C0B2FEF70FFC11254B
-:10311C00705DFEF70BFC15F1FF35F9D20020FEF7C0
-:10312C0005FC013C06F11206EBD12046FEF7FEFB36
-:10313C00FEF766FC70BD38B500242546E0B2FEF7FC
-:10314C0029FEA04001340543042CEDB2F6D12846EB
-:10315C0038BD08B50D20FEF7D3FB0A20FEF7D0FBD7
-:10316C0008BD10B5441E14F8010F10B1FEF7C8FBD2
-:10317C00F9E710BD08B5FFF7F4FFFFF7EAFF08BD4C
-:10318C001FB530238DF8043078238DF805300723D4
-:10319C0099000F228A400240CA40092A01D83032D5
-:1031AC0002E00F2A02D85732D2B200E0202201A945
-:1031BC00CC1A13F1FF336272EAD2002308468DF861
-:1031CC000E30FFF7CEFF04B010BD70B504460D46AF
-:1031DC004FF4805001211646FDF7AEFCFEF7F2FDD0
-:1031EC000520FEF7DDFEA920FEF7DAFEC307FAD4B0
-:1031FC00FEF7BEFDFEF7E6FD0320FEF7D1FEC5F39C
-:10320C000740FEF7CDFEC5F30720FEF7C9FEE8B276
-:10321C00FEF7C6FE2644B44205D0A920FEF7C0FE38
-:10322C0004F8010BF7E7FEF7A3FD4FF480500021E3
-:10323C00FDF782FC70BD0000000000001F000000C4
-:10324C003B0000005A0000007800000097000000CE
-:10325C00B5000000D4000000F300000011010000D4
-:10326C00300100004E010000000000080040000882
-:10327C000080000800C000080000010800000208DF
-:10328C000000040800000608873F00080008024000
-:10329C00080000008C3F0008000002400400000001
-:1032AC008F3F00080008024040000000963F0008D5
-:1032BC00000002400200000000000240010000007B
-:1032CC000000080010001800200028003000380012
-:1032DC000000068301000000000000000000000058
-:1032EC00068301000000000C0000000000000683B3
-:1032FC0001000000000C00000000D878369B79C05B
-:10330C00E3D90C8C67DB3C1BF8FD7EBFFDE0F7FBC3
-:10331C001FC6EFFB7E1F98CD66B3CD60369B19C6DA
-:10332C006C18660398FD66B3FD60309B19C66F1868
-:10333C00660398FD66B3FD60309B19C36F18660376
-:10334C00980D66B30D60369B19C360186603F8FDC3
-:10335C007EBFFDECF79B19C36F187E03D878369BA4
-:10336C0079CCE399998167183C03180000000000A0
-:10337C0000008001000000001800000000000000A8
-:10338C000000000000001800000000000000000019
-:10339C0000000000000C000600000000600030007F
-:1033AC000018000300000000C0001800003080016D
-:1033BC000000000080010C000060C0000000000054
-:1033CC000003060000C060000000000000060300BF
-:1033DC000080310000000000008C010000001B0088
-:1033EC000000000000D8000000000E0000000000EB
-:1033FC000070000000000E000000000000700000D3
-:10340C0000001B000000000000D80000008031000C
-:10341C0000000000008C010000C0600000000000F3
-:10342C00000603000060C00000000000000306005E
-:10343C00003080010000000080010C000018000327
-:10344C0000000000C0001800000C00060000000086
-:10345C0060003000000000000000000000000000D0
-:10346C000000000000000000000000000000000050
-:10347C000000000000000000000000000000000040
-:10348C000000000000000000000000000000000030
-:10349C000000000000000000000000000000000020
-:1034AC000000000000000000000000000000000010
-:1034BC00000000000000000080FFFF010000000081
-:1034CC0000000000FEFFFF7F00000000000000E095
-:1034DC007F0000FE07000000000000FE01000080DD
-:1034EC007F0000000000801F00000000F8010000B9
-:1034FC000000F00100000000800F000000007C00C4
-:10350C0000000000003E000000000F000000000062
-:10351C0000F00000008003000000000000C001006B
-:10352C0000E0000000000000000007000070000038
-:10353C000000000000000E00001800000000000059
-:10354C0000001800000C000000000000000030001B
-:10355C0000060000000000000000600000030000F6
-:10356C00000000000000C00080010000000000000E
-:10357C0000008001C00000000000000000000003FB
-:10358C006000000000000000000000063000000099
-:10359C00000000000000000C100000000000000003
-:1035AC00000000080000000000600000030018008C
-:1035BC000000000000000060000003001800000084
-:1035CC000000000000600000030018000000000074
-:1035DC000000006000000300180000000000000064
-:1035EC000060000003001800000000E003001F60F2
-:1035FC00F800C30718C0070000F80FC07F60FE0377
-:10360C00F31F18F01F00000C1860C06003061B307D
-:10361C00181830000006303080E1010C0F60180CD7
-:10362C0060000003601800E3001807C01806C00013
-:10363C008001400C006200100380180380008001A0
-:10364C00C00C006600300380190380018001C0FCAF
-:10365C00FF670030038019FFFF018001C0FCFF638E
-:10366C000030038019FFFF008001C00C00600030A7
-:10367C000380190300008001C00C0060003003803F
-:10368C00190300008001400C006200100380180335
-:10369C0080008003601800C3001806C01806C00024
-:1036AC00800730308081010C0C60180C6000800D9C
-:1036BC001860C000030618303818300080F90FC0AD
-:1036CC007F00FE03F01F70F01F0080E103001F005D
-:1036DC00F800C00760C00700800100000000000077
-:1036EC00000000000000800100000000000000004D
-:1036FC00000000008001000000000000000000003D
-:10370C00000080010000000000000000000000002C
-:10371C0080010000000000000000000000004E6F5F
-:10372C002048572056657273696F6E20696E204F62
-:10373C005450004242322E30007573622077616B18
-:10374C0065757020737570706F7274656400456E6A
-:10375C00746572696E67207374616E64627900209F
-:10376C006973206F757473696465207379737465FC
-:10377C006D20666C61736800484152442046415587
-:10378C004C5400446573636C656E20000A46697284
-:10379C006D6C656E20000A5873756D20000A496EB9
-:1037AC0076616C6964206669726D776172652064FC
-:1037BC0065736372697074696F6E21004368656329
-:1037CC006B73756D6D696E67206669726D7761726A
-:1037DC00652075706461746500496E76616C69640E
-:1037EC00206669726D776172652043524320696E61
-:1037FC002053504920666C617368210065726173B7
-:10380C00655F6F6C645F6669726D77617265004F9E
-:10381C006C6420576F726C64206669726D7761728C
-:10382C00652062617365006661696C656420746F04
-:10383C0020657261736520736563746F7220007705
-:10384C00726974655F6E65775F6669726D776172B8
-:10385C0065006661696C656420746F2077726974A9
-:10386C006520616464726573732000576527726507
-:10387C00206465616400436865636B73756D6D6985
-:10388C006E672000206279746573004E657720574F
-:10389C006F726C64206669726D77617265207379E2
-:1038AC007374656D5F666C6173685F6261736500EC
-:1038BC004F6C6420576F726C64206669726D77610F
-:1038CC0072652073797374656D5F666C6173685F84
-:1038DC006261736500436865636B73756D202D20A1
-:1038EC0077616E746564200020676F7420004F75DB
-:1038FC007220696E7465726E616C20666C6173689F
-:10390C0020636F6E74656E747320617265206261E2
-:10391C00642028636865636B73756D206661696CE0
-:10392C00656429212054686973206973207265616C
-:10393C006C6C79206261642100FFFFFFFFFFFFFFC9
-:10394C00FFFFFFFFFF01000000000000000000006F
-:10395C008001000000000000000000008001000059
-:10396C0000000000000000008001000000000000CA
-:10397C0000000000800100000000000000000000BA
-:10398C0080010000000000000000000080FFFFFF2D
-:10399C00FFFFFFFFFFFFFFFFFF7C00FE00FF01C7E3
-:1039AC0001C701C701C701C701C701C701C701C7CB
-:1039BC0001C701C701C701FF01FE007C0038003CB4
-:1039CC00003E003E0038003800380038003800381F
-:1039DC000038003800380038003800FE00FE00FEC9
-:1039EC00007C00FE00FF01C701C701C001C001E05F
-:1039FC0000F00078003C001E000E000F000700FFD6
-:103A0C0001FF01FF017C00FE00FF01C701C701C0DF
-:103A1C0001C001F8007800F800C001C001C001C766
-:103A2C0001C701FF01FE007C00E000E000F000F0A7
-:103A3C0000F800F800F800FC00EC00EE00E600FFD7
-:103A4C0001FF01FF01E000E000E000E000FF00FFEB
-:103A5C0000FF000700070007007F00FF00FF01C701
-:103A6C0001C001C001C701C701C701FF01FE007CF5
-:103A7C00007C00FE00FF01C701C7010700070077AB
-:103A8C0000FF00FF01C701C701C701C701C701FF44
-:103A9C0001FE007C00FF01FF01FF01E000E000706F
-:103AAC00007000700038003800380038001C001C12
-:103ABC00001C001C001C001C007C00FE00FF01C749
-:103ACC0001C701C701C701FE007C00FE00C701C78A
-:103ADC0001C701C701C701FF01FE007C007C00FE8D
-:103AEC0000FF01C701C701C701C701C701FF01FEE4
-:103AFC0001DC01C001C001C701C701FF01FE007C50
-:103B0C000000000000000000007C00FE00FF01C768
-:103B1C0001C701F001FC01CE01C701C701E701FF9C
-:103B2C0001DF01CE010700070007000700E700F7DF
-:103B3C0001FF01CF01C701C701C701C701C701C7F9
-:103B4C0001CF01FF01F701E70000000000000000B9
-:103B5C00007C00FE00FF01C701C70107000700073A
-:103B6C00000700C701C701FF01FE007C00C001C0B7
-:103B7C0001C001C001CE01DF01FF01E701C701C790
-:103B8C0001C701C701C701C701E701FF01DF01CE72
-:103B9C000100000000000000007C00FE00FF01C7D7
-:103BAC0001C701C701FF01FF010700C701C701FFE2
-:103BBC0001FE007C00E000F000F8003800FE00FE82
-:103BCC0000FE003800380038003800380038003863
-:103BDC000038003800380038005341442057415415
-:103BEC0043483A20005265736574205265676973C7
-:103BFC00746572200042726F776E206F757420723C
-:103C0C0065736574005374617274696E67204C53EC
-:103C1C0045206F7363696C6C61746F72004C534513
-:103C2C00206F7363696C6C61746F722064696420BB
-:103C3C006E6F7420737461727400555342207761F7
-:103C4C006B657570006C656176696E672073746165
-:103C5C006E64627900205F5F5F5F5F5F20202020D1
-:103C6C005F5F0D0A2F5F20205F5F2F205F5F2F208B
-:103C7C002F0D0A202F202F2020202F5F20205F5F68
-:103C8C002F0D0A2F5F2F20202020202F5F2F0D0AB1
-:103C9C0000426F6F746C6F6164657220766572732D
-:103CAC00696F6E3A20004C617374206669726D778F
-:103CBC0061726520626F6F74207761732073746119
-:103CCC00626C653B20636C65617220737472696B06
-:103CDC00657300537475636B20627574746F6E201A
-:103CEC00726567697374657220697320696E766199
-:103CFC006C69642C20636C656172696E672E00427E
-:103D0C007574746F6E206964200069732073747508
-:103D1C00636B2100427574746F6E20776173207031
-:103D2C007573686564206F6E20626F6F742E20420D
-:103D3C007574746F6E20636F756E7465723A2000C3
-:103D4C00426F6F7420626974733A2000486F6C6420
-:103D5C0020646F776E205550202B204241434B201E
-:103D6C00666F72203520736563732E20746F206626
-:103D7C006F7263652D626F6F7420505246004669F6
-:103D8C00726D776172652069732065726173656409
-:103D9C0000426F6F74696E67206E6F726D616C6C30
-:103DAC0079005761746368646F672063617573652C
-:103DBC0064206120726573657400536F667477615B
-:103DCC007265206661696C757265206361757365D7
-:103DDC0064206120726573657400426F6F74206695
-:103DEC0061696C65642C20737472696B6520330097
-:103DFC00426F6F74206661696C65642C20737472F9
-:103E0C00696B65203200426F6F74206661696C6566
-:103E1C00642C20737472696B652031004C6F616483
-:103E2C00696E67207265636F766572792066697258
-:103E3C006D77617265004661696C656420746F20F2
-:103E4C006C6F6164207265636F7665727920666948
-:103E5C00726D776172652C20737472696B65206F5B
-:103E6C006E652E2054727920616761696E2E004652
-:103E7C0061696C656420746F206C6F61642072657D
-:103E8C00636F76657279206669726D776172652CE5
-:103E9C0020737472696B652074776F2E205472795D
-:103EAC0020616761696E2E004661696C65642074DF
-:103EBC006F206C6F6164207265636F766572792018
-:103ECC006669726D776172652C20737472696B65AB
-:103EDC002074687265652E20534144205741544329
-:103EEC0048004F75722070726576696F7573206625
-:103EFC0069726D7761726520757064617465206696
-:103F0C0061696C65642C2061626F7274696E6720E4
-:103F1C007570646174652E004E6577206669726DEC
-:103F2C007761726520697320617661696C61626C7E
-:103F3C00652100426F6F74696E67206669726D77D8
-:103F4C006172652040200072657475726E696E67CF
-:103F5C0020746F207374616E64627900466F7263B3
-:103F6C00652D626F6F74696E67207265636F76651D
-:103F7C007279206D6F64652E2E2E004261636B008A
-:103F8C0055700053656C65637400446F776E003038
-:103F9C0031323334353637383941424344454600A3
-:103FAC0030313233343536373839616263646566A3
-:103FBC0000286E756C6C29000000000001020304DF
-:083FCC000102030406070809C5
-:103FD40000A0000002020000FFFFFFFF00C0040178
-:103FE40000000000000000021000000007000000B4
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_ev2_4@1447134832.bin b/bin/boot/nowatchdog_boot_ev2_4@1447134832.bin
deleted file mode 100755
index 64d5ee48fa..0000000000
Binary files a/bin/boot/nowatchdog_boot_ev2_4@1447134832.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_ev2_4@1447134832.hex b/bin/boot/nowatchdog_boot_ev2_4@1447134832.hex
deleted file mode 100644
index cf70359005..0000000000
--- a/bin/boot/nowatchdog_boot_ev2_4@1447134832.hex
+++ /dev/null
@@ -1,1053 +0,0 @@
-:020000040800F2
-:1000000048200120512C0008B12F0008B12F000812
-:10001000B12F0008B12F0008B12F00080000000028
-:10002000000000000000000000000000B12F0008E8
-:10003000B12F000800000000B12F0008B12F000808
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0A4FD58
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:0801600091FD05B05DF804FB00
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:080188007DFD05B05DF804FBEC
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F04EFCDDF820C044
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F0EFFB089B9CE0BA4287
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00393F00084B45F7DBEDE70D99079107984B
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01403F000861
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C0010B5044608484021FFF794FC0028F9D094
-:10191C0005482146FFF78AFC03484021FFF78AFC63
-:10192C000028F9D010BD00BF00480040014608B5A2
-:10193C000448FFF767FC03480221FFF765FC002809
-:10194C00F9D008BD0038004000B9074803680133DE
-:10195C0008D04368013305D0C069044BC31A584200
-:10196C005841704700207047004000086F57654E83
-:10197C00074B1A69C2F306427F2A07D11869C0F3D4
-:10198C000C00B0F1FF0358425841704700207047DB
-:10199C000028004000F13F4000F57E00800A082836
-:1019AC000FD8084A52F820305BB1013B42F8203086
-:1019BC003BB9012101FA00F0034B1A6B22EA00003B
-:1019CC0018637047200000200038024000F13F40AF
-:1019DC0000F57E00800A08280DD8074A52F82030FE
-:1019EC00591C42F8201033B9012101FA00F0034BC5
-:1019FC001A6B104318637047200000200038024017
-:101A0C0010B50C4C2046FFF7E1FF072001F00CFB52
-:101A1C004FF4805100222046FFF786FB042001F092
-:101A2C0003FB2046FFF7B6FF4FF480400021FFF781
-:101A3C0077F810BD0004024010B50B4C01214FF497
-:101A4C008040FFF76DF82046FFF7C0FF20464FF4AB
-:101A5C0080510122FFF768FB072001F0E5FA2046D0
-:101A6C00FFF798FF10BD00BF0004024008B5FFF758
-:101A7C00E3FF0020FFF75AFF0020FFF757FF00207D
-:101A8C00FFF754FFFFF7BCFFFEF772FEBFF34F8F5B
-:101A9C00044A054BD16801F4E0610B43D360BFF3FA
-:101AAC004F8FFEE700ED00E00400FA05F0B55E256F
-:101ABC006843204BB0FBF1F51A68ADF6DC3D95425E
-:101ACC0034D002AC00214FF43D6220461D60FEF77D
-:101ADC00BEFA1B238DE818001748102140226923F9
-:101AEC0001F085FA08238DE81800144860231821AA
-:101AFC006A2201F07CFA0DF2FA760DF28E73002256
-:101B0C00AA420DD002F11900C0B2C108012700F0A1
-:101B1C00070007FA00F05F5C013238435854EFE7D6
-:101B2C001233B342EBD1204601F0B9FA0DF6DC3D8D
-:101B3C00F0BD00BF000000209834000812360008E9
-:101B4C002DE9F043ADF6DC3D02AC00214FF43D62D3
-:101B5C0080462046FEF77BFA2C238DE818002022C5
-:101B6C00284818215C2301F042FA1C2215460F2745
-:101B7C00974007EA0807D740234B242101FB07377E
-:101B8C000DF50366002117F801C00023082B07D0C0
-:101B9C000120984010EA0C0F0CBF0020012003E03C
-:101BAC007818407800F0010078B15819C0B24FEAAB
-:101BBC00D00E4FF0010900F0070009FA00F016F8FA
-:101BCC000E9040EA090006F80E000133092BDDD116
-:101BDC000231242906F11206D5D10B35742DA2F150
-:101BEC000402C4D10E238DE81800102190226D231D
-:101BFC00064801F0FCF9204601F051FA0DF6DC3DE7
-:101C0C00BDE8F083883200085D3800089D3A000872
-:101C1C0010B5ADF6D83D02AC204600214FF43D6224
-:101C2C00FEF715FA1B238DE81800102140226923BA
-:101C3C00044801F0DCF9204601F031FA0DF6D83DEC
-:101C4C0010BD00BF983400082DE9F74F434E444FA8
-:101C5C0001214FF48040FEF763FF3046FFF7B6FEDC
-:101C6C003846404CFFF7B2FE30460D210522FFF7F7
-:101C7C0060FA052230460F21FFF75BFA3046214609
-:101C8C000125FFF7FEF920233846214623602571F4
-:101C9C00A5714FF0000A01934FF4805BFFF7F1F947
-:101CAC00304621464FF002084FF48049257184F8E4
-:101CBC0006A0C4F800B0FFF7E4F93046214684F8DA
-:101CCC000480C4F80080FFF7DCF921462571A5716A
-:101CDC00C4F80090244C3046FFF7D3F92046FFF7A8
-:101CEC0039F920462149FFF75FFA20462946FFF7CC
-:101CFC007AFA019B384619465246FFF715FA2A46DE
-:101D0C0030464946FFF710FA40462946FEF708FFD1
-:101D1C00A4F5505480232380F92323854FF4F042FB
-:101D2C004FF6FF13E3623046A283294623644246F2
-:101D3C00A4F820B0FFF7FDF929462046A582FEF74E
-:101D4C001FFD3846FFF726FE3046FFF723FE4846B8
-:101D5C005146FEF7E5FE03B0BDE8F08F00040240EB
-:101D6C000008024004000020003800400C00002055
-:101D7C0010B5074C2046FFF729FE20461021FFF72F
-:101D8C00CFF92046FFF706FE012001F04DF910BDFA
-:101D9C000000024038B50A4B0C2404FB0034606888
-:101DAC00FFF714FE21896068FFF7B4F905466068F7
-:101DBC00FFF7F0FDD5F1010038BF002038BD00BFA2
-:101DCC004032000810B5064C2046FFF7FFFD2046B8
-:101DDC001021FFF7A7F92046FFF7DCFD10BD00BF6F
-:101DEC0000000240F0B587B0FFF7C2FD002841D1DA
-:101DFC000320FFF759F807460420FFF755F8374B37
-:101E0C000A241A68C2F30545C2F30626C2F302136C
-:101E1C0002F00F0204FB0322330906F00F0604FB49
-:101E2C0003662B0905F00F0504FB03533C2505FB4A
-:101E3C00036305FB0323191A44BF01F5A83101F50F
-:101E4C00C07107EB91210320FFF71EF803A8FFF7E1
-:101E5C0098F903A8FEF7F4FE01A8FFF798F901A979
-:101E6C000020FEF731FF02A8FFF797F9002002A926
-:101E7C00FEF794FF0A2442F2107501F032F910B902
-:101E8C00013DFAD107E0164D01F02BF908B1013DE7
-:101E9C00FAD1013CEFD10020FEF792FD114C00214C
-:101EAC004FF20400FFF71CF84FF43C50FFF744F8D6
-:101EBC002368012043F004032360FEF781FD0A48E8
-:101ECC0001F02EF9236843F002032360074B1A69D3
-:101EDC0042F004021A6130BF07B0F0BD0028004088
-:101EEC00A0860100007000407236000800ED00E092
-:101EFC00B0F1006F10B504460BD20D4801F007F994
-:101F0C00204601F013F90B4801F00AF94FF0FF30AD
-:101F1C0010BD094A002352F8041FA14202D851688F
-:101F2C008C4202D30133072BF5D1184610BD00BFEC
-:101F3C0086370008833600081C32000808B50248B2
-:101F4C0001F0EEF800BEFEE79C36000810B5044622
-:101F5C000A480221FFF758F90028F9D00748214612
-:101F6C00FFF750F905480121FFF74EF90028F9D089
-:101F7C000248FFF744F9C0B210BD00BF0030014069
-:101F8C002DE9F04F87B00121814600AF0020FFF70B
-:101F9C008DFD042001F063F807F10C0049460C227A
-:101FAC0001F0E9F8FD683C690C2DD7F814B013D09A
-:101FBC00994801F0ACF8284601F0B8F8974801F0C0
-:101FCC00A6F8204601F0B2F8954801F0A0F8584662
-:101FDC0001F0ACF8934833E0934801F0A1F84FF4CA
-:101FEC0080500121FEF790FD09F10C09EA46FEF73D
-:101FFC0009FCA0B06E462546C846802D0CD941463A
-:10200C003046802201F0B7F830462021FEF706FC5E
-:10201C00803D08F18008F0E725B1304641462A465C
-:10202C0001F0A9F82946304600F0C6FF0021804691
-:10203C004FF48050FEF768FDD845D54604D07B4858
-:10204C0001F06EF80120E3E088B068464946202292
-:10205C0001F091F86846FFF777FC78607448D54634
-:10206C0001F05EF87B682BB9724801F059F804F561
-:10207C00404600E02646002E3BD06F48FFF738FF65
-:10208C0005466E483044FFF733FF002D824630DBA7
-:10209C0000282EDB431B01334FEA430B002059462B
-:1020AC00FFF704FDFEF7DAFB654B002603EB450357
-:1020BC003B6055451BDCF320FEF7E6FB3B6800213B
-:1020CC0033F81600FEF700FC082806F1010608D0CC
-:1020DC005C4801F01CF8284601F028F801F00FF8D4
-:1020EC0005E030465946FFF7E1FC0135E1E7FEF724
-:1020FC00C3FB554801F014F87B680BB14E4B00E064
-:10210C00524B7B6063083B600025A5423CD2661BAA
-:10211C00B6F5803F28BF4FF480362EB14C4805EB06
-:10212C000901324601F027F8D7F804A0FEF796FB18
-:10213C00F320FEF7A9FBAA444FF0000BB34519D0CE
-:10214C0043490BEB0A0011F80B10FEF7F5FB0828BE
-:10215C000DD0404800F0DBFF504600F0E7FF00F0E8
-:10216C00CEFFFEF789FB3C4800F0DAFF0CE00BF1E8
-:10217C00010BE3E7FEF780FB3B68214603EB5500C0
-:10218C00FFF794FC5D44C0E7344800F0C0FF2046E4
-:10219C0000F0CCFF324800F0C3FF0020FFF7D4FB67
-:1021AC0020B1304800F0BCFF234D03E02E4800F076
-:1021BC00B7FF264D4FF480500121A608FEF7A4FC72
-:1021CC00FEF720FB31462846FEF728FB04F00301FE
-:1021DC0005EB860000F0F0FE002104464FF4805021
-:1021EC00FEF792FC214800F092FF404600F09EFF63
-:1021FC001F4800F08CFF204600F098FF00F07FFF96
-:10220C00444504D01B4800F08BFF022000E0002066
-:10221C001C37BD46BDE8F08FA7360008B036000865
-:10222C00BA360008C1360008E0360008FD36000852
-:10223C00203700083337000800400008FF3F000833
-:10224C00783200084B37000863370008000001089B
-:10225C0044000020763700088F3700089A370008B2
-:10226C00A8370008AF370008D4370008F937000842
-:10227C000C3800081238000870B54FF4805001215A
-:10228C00FEF75AFCFFF79EFD0520164CFFF75EFE8D
-:10229C00002C04F1FF341FDCFFF76AFDFFF792FD01
-:1022AC009F20FFF753FEA920FFF750FE0546A920FB
-:1022BC00FFF74CFE0646A920FFF748FE36020446FF
-:1022CC0046EA0545FFF754FD4FF480500021FEF718
-:1022DC0033FC45EA040070BDA920FFF737FEC307A5
-:1022EC00D6D4D9E70090D00308B50446114800F0C5
-:1022FC000EFF204600F01AFF00F001FF2046FFF70A
-:10230C001FFC00F0EEFE0C4B20F0040018701D4674
-:10231C0000F0E7FE2B7800F0FB00834201D10B2488
-:10232C0001E0FFF7A3FB013CF2D04FF47A7000F010
-:10233C007BFEF8E7613B00084400012080B5464B6A
-:10234C004FF4C06290B01A6001214FF08050FEF73C
-:10235C00E7FB0120FEF72EFB4048FFF737FB4FF45D
-:10236C0080200121FEF7DCFB3C480A210722FEF706
-:10237C00E0FE072239480B21FEF7DBFE10AF4FF4CD
-:10238C00806347F8383D00244FF00108022533489C
-:10239C0039468DF80E408DF80F808DF80C508DF865
-:1023AC000D50FEF76EFE4FF400632C483946029335
-:1023BC008DF80C5004AEFEF764FE4FF461330493B9
-:1023CC0027480C233146ADF81A30ADF81440ADF85F
-:1023DC001640ADF81840ADF81C40FEF7E9FD41463B
-:1023EC001F48FEF717FF1D48FFF7D4FA1D4800F0F1
-:1023FC008EFE1D4B586F00F099FE00F080FE792088
-:10240C00FEF7E2FB404502D1184800F089FE01209E
-:10241C0000F010FE10B90121FEF736FD4120FEF749
-:10242C00D3FB58BB124800F07BFE0120FEF7FAFAF2
-:10243C0047F230544120FEF7C7FBF8B94FF47A70DD
-:10244C0000F0F2FD013CF5D10A4800F069FEFFF7FF
-:10245C00FBFB094837E100BF003C0240000802408A
-:10246C00004800406D3B0008003802407D3B0008EE
-:10247C008D3B0008A53B0008114550FE4FF48070C1
-:10248C00FEF724FB0120FEF739FBFEF7FBFB0020D7
-:10249C00FEF796FA01214FF48040FEF74DFBBB4846
-:1024AC00FFF794FA3046FEF72CFE00240125B748BE
-:1024BC0031468DF815408DF816408DF8174004956F
-:1024CC008DF81450FEF7DDFD2246B0482946FEF784
-:1024DC002BFEAE48FFF75EFAAD4C04F1300954F810
-:1024EC00040CFFF773FA3046FEF70BFE236854F822
-:1024FC00040C4FF000083146022504938DF814802B
-:10250C008DF815508DF817800C34FEF7BAFD54F881
-:10251C00100CFFF73FFA4C45E1D14FF48040414697
-:10252C00FEF70AFB4FF4807000F084FD002800F0E9
-:10253C00CC804FF4807000F087FDFFF753FC95487A
-:10254C0000F0EEFD0220FEF7AFFC9349884202D06A
-:10255C000220FEF799FC914800F0D9FD0220FEF70D
-:10256C00A3FC00F0E3FD00F0CAFD4FF4804000F046
-:10257C0061FD90B18A4800F0D3FD4FF4804000F02B
-:10258C0063FD082000F060FD102000F05DFD2020B0
-:10259C0000F05AFD402000F057FDFFF755FBFFF708
-:1025AC0037FB01214FF48050FEF7C6FA7748FFF74E
-:1025BC000DFA01200146FEF7A7FA05210A467348D9
-:1025CC00FEF7B7FD714806210522FEF7B2FD052284
-:1025DC006E480721FEF7ADFD00240225C0236B4891
-:1025EC0039468DF80C508DF80D5002938DF80E4035
-:1025FC008DF80F40FEF745FD2023644839468DF8D1
-:10260C000F5002930125FEF73CFD102339465F481D
-:10261C0002938DF80C508DF80F50FEF732FD614887
-:10262C00FEF798FC4FF48273ADF812304FF4007340
-:10263C00ADF81A305B4807233146ADF82030ADF8C1
-:10264C001040ADF81440ADF81640ADF81840ADF898
-:10265C001C40ADF81E40FEF7A7FD29465148FEF779
-:10266C00C2FD4A48FFF796F9FFF7ACFBAB20FFF72A
-:10267C006DFCFFF77DFB642000F0D6FC21464FF487
-:10268C008050FEF759FAFFF7F7FD2846FEF70CFCD1
-:10269C0025460490E8B2FFF77DFB98BB70550135D9
-:1026AC00042DF7D1049D3DB13F4800F030FD284684
-:1026BC0000F03CFD00F023FD01202946FEF7E4FB71
-:1026CC00002C3DD03948FFF70FFE2846FEF77EF967
-:1026DC00012814D12846FEF783F94FF40060FEF769
-:1026EC001DFC18B1324800F01BFDB9E0314C00F074
-:1026FC00F8FC002800F00481013CF8D1B0E000F0B7
-:10270C00B9FC1CE7735D042B0ADD2B4800F008FDB7
-:10271C00049800F00BFD01200021FEF7B5FB0FE043
-:10272C000133DBB2042B7355B9DD244800F0EFFC08
-:10273C00284600F0FBFC224800F0F2FC0124AEE736
-:10274C00FFF79AFD1F4B0344012B01D91E48BAE732
-:10275C001E4800F0DCFC0020FEF7A6FB00F0E6FCB7
-:10276C0000F0CDFC802000F065FC18B1802000F05A
-:10277C006BFC73E04FF4003000F05CFC044638B3A3
-:10278C004FF4003000F060FC04E100BF0000024098
-:10279C0048320008DD3B000870864156193C0008A1
-:1027AC002E3C0008003001409C3C0008014550FEC6
-:1027BC00C23B0008A08601005B3C0008873C000877
-:1027CC00923C0008EA44DFFF024550FEC83C00087A
-:1027DC000120FFF7DFFAD8B12046FFF7DBFAB8B1DA
-:1027EC00B74800F09DFC41F288340120FFF7D2FA83
-:1027FC00002800F08B800020FFF7CCFA002800F0B6
-:10280C0085804FF47A7000F00FFC013CEDD1C1E0F3
-:10281C000020FFF799F808B1AA4B00E0AA4B0CCBAB
-:10282C00013301D0013271D1A84800F079FCB1E03C
-:10283C00A74800F075FC082000F006FC102000F002
-:10284C0003FC202000F000FC402000F0FDFB0024E5
-:10285C00042000F0F9FB002C40F008819D4832E781
-:10286C00FFF786F8002847D0002001A99A4DFEF703
-:10287C0073FA344600203946FEF7D2FA0FCD0FC456
-:10288C000FCD0FC495E80F0084E80F009DF80920C8
-:10289C0010A901EB82039DF80BE053F8343C40F295
-:1028AC006D1101FB0E3303EB9E030EF1010E1EF0B6
-:1028BC00030F02D1022A88BF01339DF80A409DF80C
-:1028CC000410013C2344182404FB03149DF8051048
-:1028DC003C2202FB04149DF80610032002FB041496
-:1028EC00FEF7E2FA01190320FEF7CEFA04200021CC
-:1028FC00FEF7CAFA00F0BEFB784800F011FC1EE6A9
-:10290C00774800F00DFCFFF76DFAF5E77D20FEF738
-:10291C005BF970B94FF4007000F08CFB48B971484A
-:10292C0000F0FEFB082000F08FFB102000F08CFB69
-:10293C0085E07D20FEF748F910B16B4800F0F0FB04
-:10294C004FF4007000F076FB10B1684800F0E8FB23
-:10295C004FF4007000F078FB102000F06BFB48B1D6
-:10296C00634800F0DDFB082000F06EFB102000F047
-:10297C006BFB12E0082000F05DFB20B15D4800F01D
-:10298C00CFFB102003E05C4800F0CAFB082000F0ED
-:10299C0066FB54E0594800F0C3FB594800F0C0FBFB
-:1029AC004FF40010FFF7ECFA10B1022828D809E018
-:1029BC00202000F049FB402000F046FB802000F076
-:1029CC004EFB1DE0082000F04AFB102000F047FBF6
-:1029DC00202000F02FFB20B94A4800F0A1FB20205A
-:1029EC0009E0402000F026FB00287FF421AF464888
-:1029FC0000F096FB402000F032FB4FF400701AE020
-:102A0C00012425E7414800F08BFB082000F01CFB5B
-:102A1C00102000F019FB202000F016FB402000F0E5
-:102A2C0013FB2046FFF7ACFA022840F0F080082098
-:102A3C0000F015FB102000F012FBFFF717F8022036
-:102A4C0000F0F8FA90B1042000F0F4FA04460028E3
-:102A5C00D8D02F4800F064FB042000F0F5FA0220D7
-:102A6C0000F0F2FA4FF4004000F0EEFA4FF4005090
-:102A7C0000F0E0FA04464FF4805000F0DBFA40001E
-:102A8C0040EA84044FF4006000F0D4FAE4B220432E
-:102A9C00431C03F0FF03013B4FF40060062B58D896
-:102AAC00DFE803F03C383C043C383C0000F0CCFA46
-:102ABC004FF4805000F0C8FA4FF400502EE000BFE5
-:102ACC00D43C00080040000800000108063D000846
-:102ADC00303E0008034550FEF0310008CD3B0008A5
-:102AEC00CF3E0008193D00082A3D0008423D000871
-:102AFC00623D0008783D00088E3D0008E43E000869
-:102B0C00A43D0008BE3D0008F73D0008A03E0008AB
-:102B1C006A3E000800F098FA4FF4805000F09FFADB
-:102B2C0045F25550FDF724FF0420FDF727FF40F632
-:102B3C00FF70FDF729FF0020FDF71AFF4FF48050BE
-:102B4C000121FDF77FFE0020FEF7FEFE68B9354B34
-:102B5C000CE000F079FA4FF4805000F075FA4FF465
-:102B6C00005000F071FA3048ADE5304B5D683048EC
-:102B7C001E6800F0CCFA284600F0D8FA00F0BFFA34
-:102B8C0000F0BDFA00239A0002F16042013302F515
-:102B9C0061424FF0FF31082BC2F88010C2F880114F
-:102BAC00F1D1244B00241C635C639C631C645C6447
-:102BBC00FDF71EFF20480121FDF7CAFF21461E48E4
-:102BCC00FDF7C6FFF1200121FDF7CEFF2146F120D4
-:102BDC00FDF7CAFF01200146FDF7D2FF2146012077
-:102BEC00FDF7CEFF15480121FDF7D6FF214613480E
-:102BFC00FDF7D2FF12480121FDF7DAFF10482146FC
-:102C0C00FDF7D6FF63B64FF0FF3EB54628470420CC
-:102C1C0000F01AFA022000F017FA4FF4004000F00E
-:102C2C001EFA23E700000108044550FE004000088E
-:102C3C00BB3E00080038024000106022FFC9FE367F
-:102C4C00335907000748084A08B50849121AFDF716
-:102C5C00F5F90748074A0021121AFDF7F8F9FFF7B2
-:102C6C006DFB00BF0000002020000020503F00083A
-:102C7C0020000020480001202DE9F04FDDE909ABD0
-:102C8C000E469C4603783B490746C95C01300D074C
-:102C9C00F8D42B2B05D02D2B04D107464FF0FF3346
-:102CAC0001E007460123397830290ED1797878294B
-:102CBC0005D132F0100103D10237102207E00AB11E
-:102CCC00082A04D10137082201E002B90A220020A7
-:102CDC000021B84617F8015BA5F13004E4B2092CC9
-:102CEC000DD9A5F14104192C02D8A5F1370405E042
-:102CFC00A5F16104192C30D8A5F15704E4B2944223
-:102D0C002BDA4FEAE27900FB09F502FB0155A0FB37
-:102D1C000201E4B2294400194FF0000541EB050112
-:102D2C00BCF1000FD5D0012B06D182457BEB010401
-:102D3C00CFDA50465946CCE75C1CCAD1DDE90B8989
-:102D4C00444261EB4105444575EB0909C1DADDE903
-:102D5C000B01404261EB4101BBE70EB1C6F80080AC
-:102D6C00DD1700FB05F203FB0122A0FB030111445C
-:102D7C00BDE8F08F4C1200082DE9F04F91B01F9E6A
-:102D8C000C46310691468046DDE91A231E9D04D57A
-:102D9C00CDE902234FF0000C1BE0002A73F1000771
-:102DAC001046194602DA504263EB4301002A73F1D4
-:102DBC00000ACDE9020107DBB70708D416F0040CB2
-:102DCC0007D04FF0200C04E04FF02D0C01E04FF039
-:102DDC002B0C16F04007089714BF704F704FDDE9AD
-:102DEC0002AB079700271C980137C117CDE90401E6
-:102DFC00DDE904230AA93944099150465946CDF816
-:102E0C0004C0FEF79DFA07980999835C504601F8B7
-:102E1C00013C5946DDE90423FEF792FA82468B46C3
-:102E2C005AEA0B02DDF804C001D0162FDBD116F0E4
-:102E3C00080239461DD01C9B082B02D0102B0ED03B
-:102E4C001CE0DDE902AB1DB95AEA0B0B13D004E010
-:102E5C005AEA0B0B12D0BD4210DC7B1C0FE0DDE9F3
-:102E6C0002AB5AEA0B0B09D008982B4648B15822F2
-:102E7C0008E02B4606E02A46012303E02B460022FD
-:102E8C0000E078221CF1000B1D98C7EB030A18BF59
-:102E9C004FF0010BBB42A8BF1F46C01B2AEAEA7ABF
-:102EAC00CBEB00000AB1022700E01746C71B16F057
-:102EBC00010027EAE77701D07F4205E0F60603D54B
-:102ECC00013504BFBA4407463D46002D0BDD206892
-:102EDC00013D461C4E453CBF202608F8006020688A
-:102EEC0001302060F1E727EAE7703F1ABBF1000FD1
-:102EFC0008D02068451C4D4538BF08F800C0206834
-:102F0C00013020608AB12068451C4D453CBF3025FE
-:102F1C0008F800502568681C02354D45206038BF04
-:102F2C0008F80020226801322260BAF1000F0CD0A0
-:102F3C0022680AF1FF3A501C48453CBF302008F883
-:102F4C000200226801322260EFE7DDE902AB5AEAA7
-:102F5C000B0B10D17BB919460DE0236801395A1CB3
-:102F6C004A4505D201F1280568462A5C08F8032079
-:102F7C002368013323600029EFD15FB12368013747
-:102F8C005A1C4A453CBF202208F803202368013311
-:102F9C002360F2E711B0BDE8F08F00BF173F0008C7
-:102FAC00283F00081EF0040F0CBFEFF30880EFF36E
-:102FBC000980FEF7C3BF7047032970B505460C4660
-:102FCC0006D98E083146FDF729FCB6003544A41B02
-:102FDC0014B9FDF731FC70BD00231846EA5C0133CF
-:102FEC00A34242EA0020F9D1FDF712FC70BD2DE995
-:102FFC00F0410733DE08079B4FF0120808FB023242
-:10300C000731069F054602EBD1080024BC4209D0CB
-:10301C00122000FB048029463246FDF70FF80134DC
-:10302C003544F3E7BDE8F0810623584301387FF4BB
-:10303C00FDAF704710B504460020FDF735FF204268
-:10304C000CBF0020012010BD10B504460020FDF778
-:10305C002BFF20EA04010020FDF716FF10BD10B570
-:10306C0004460020FDF720FF40EA04010020FDF794
-:10307C000BFF10BD1FB501A8FEF783F807230293C1
-:10308C0001A803230393FDF7DBFD6846FEF77FF8E9
-:10309C0069460020FDF718FE05B05DF804FB70B51D
-:1030AC000646FEF7C9FC8020FEF740FCA82420BA97
-:1030BC0090FAA0F0C0B2FEF739FC1125705DFEF756
-:1030CC0035FC15F1FF35F9D20020FEF72FFC013C41
-:1030DC0006F11206EBD12046FEF728FCFEF790FC19
-:1030EC0070BD38B500242546E0B2FEF753FEA04073
-:1030FC0001340543042CEDB2F6D1284638BD08B591
-:10310C000D20FEF7FDFB0A20FEF7FAFB08BD10B5FB
-:10311C00441E14F8010F10B1FEF7F2FBF9E710BDD5
-:10312C0008B5FFF7F4FFFFF7EAFF08BD1FB5302322
-:10313C008DF8043078238DF80530072399000F2281
-:10314C008A400240CA40092A01D8303202E00F2AD4
-:10315C0002D85732D2B200E0202201A9CC1A13F1C6
-:10316C00FF336272EAD2002308468DF80E30FFF767
-:10317C00CEFF04B010BD70B504460D464FF4805020
-:10318C0001211646FDF7D8FCFEF71CFE0520FEF7C4
-:10319C00DDFEA920FEF7DAFEC307FAD4FEF7E8FD40
-:1031AC00FEF710FE0320FEF7D1FEC5F30740FEF735
-:1031BC00CDFEC5F30720FEF7C9FEE8B2FEF7C6FE4A
-:1031CC002644B44205D0A920FEF7C0FE04F8010B3A
-:1031DC00F7E7FEF7CDFD4FF480500021FDF7ACFC76
-:1031EC0070BD0000000000001F0000003B0000004C
-:1031FC005A0000007800000097000000B5000000A5
-:10320C00D4000000F30000001101000030010000A8
-:10321C004E0100000000000800400008008000087B
-:10322C0000C00008000001080000020800000408AB
-:10323C0000000608033F00080008024008000000D8
-:10324C00083F000800000240040000000B3F00088B
-:10325C000008024040000000123F0008000002403D
-:10326C000200000000000240010000000000080005
-:10327C00100018002000280030003800000C000658
-:10328C000000000060003000001800030000000087
-:10329C00C0001800003080010000000080010C000C
-:1032AC000060C000000000000003060000C06000C9
-:1032BC000000000000060300008031000000000048
-:1032CC00008C010000001B000000000000D8000072
-:1032DC0000000E00000000000070000000000E0056
-:1032EC00000000000070000000001B000000000047
-:1032FC0000D800000080310000000000008C0100AC
-:10330C0000C0600000000000000603000060C00068
-:10331C0000000000000306000030800100000000E7
-:10332C0080010C000018000300000000C000180011
-:10333C00000C0006000000006000300000000000DF
-:10334C000000000000000000000000000000000071
-:10335C000000000000000000000000000000000061
-:10336C000000000000000000000000000000000051
-:10337C000000000000000000000000000000000041
-:10338C000000000000000000000000000000000031
-:10339C000000000000000000000000000000000021
-:1033AC0080FFFF010000000000000000FEFFFF7F17
-:1033BC0000000000000000E07F0000FE070000009D
-:1033CC00000000FE010000807F0000000000801F54
-:1033DC0000000000F80100000000F00100000000F7
-:1033EC00800F000000007C0000000000003E000088
-:1033FC0000000F000000000000F00000008003003F
-:10340C000000000000C0010000E00000000000000F
-:10341C0000000700007000000000000000000E001B
-:10342C00001800000000000000001800000C000054
-:10343C00000000000000300000060000000000004A
-:10344C000000600000030000000000000000C0004D
-:10345C00800100000000000000008001C00000009E
-:10346C0000000000000000036000000000000000ED
-:10347C000000000630000000000000000000000CFE
-:10348C001000000000000000000000080000000018
-:10349C000060000003001800000000000000006045
-:1034AC000000030018000000000000000060000095
-:1034BC000300180000000000000000600000030082
-:1034CC00180000000000000000600000030018005D
-:1034DC00000000E003001F60F800C30718C00700DD
-:1034EC0000F80FC07F60FE03F31F18F01F00000CE4
-:1034FC001860C06003061B3018183000000630300E
-:10350C0080E1010C0F60180C60000003601800E3F0
-:10351C00001807C01806C0008001400C00620010A3
-:10352C000380180380008001C00C0066003003800B
-:10353C00190380018001C0FCFF670030038019FF74
-:10354C00FF018001C0FCFF630030038019FFFF0006
-:10355C008001C00C00600030038019030000800162
-:10356C00C00C006000300380190300008001400C87
-:10357C00006200100380180380008003601800C3F1
-:10358C00001806C01806C000800730308081010C7E
-:10359C000C60180C6000800D1860C0000306183019
-:1035AC003818300080F90FC07F00FE03F01F70F058
-:1035BC001F0080E103001F00F800C00760C0070077
-:1035CC0080010000000000000000000000008001ED
-:1035DC00000000000000000000000000800100005E
-:1035EC00000000000000000000008001000000004E
-:1035FC00000000000000000080010000000000003E
-:10360C00000000000000FFFFFFFFFFFFFFFFFFFFB8
-:10361C00FFFF01000000000000000000008001001E
-:10362C00000000000000000000800100000000000D
-:10363C0000000000008001000000000000000000FD
-:10364C00008001000000000000000000008001006C
-:10365C0000000000000000000080FFFFFFFFFFFFE4
-:10366C00FFFFFFFFFFFF456E746572696E67207385
-:10367C0074616E64627900206973206F757473696C
-:10368C0064652073797374656D20666C6173680072
-:10369C0048415244204641554C5400446573636C78
-:1036AC00656E20000A4669726D6C656E20000A58C2
-:1036BC0073756D20000A496E76616C6964206669C9
-:1036CC00726D776172652064657363726970746979
-:1036DC006F6E2100436865636B73756D6D696E6702
-:1036EC00206669726D7761726520757064617465AE
-:1036FC0000496E76616C6964206669726D776172DF
-:10370C00652043524320696E2053504920666C61FA
-:10371C007368210065726173655F6F6C645F6669C5
-:10372C00726D77617265004F6C6420576F726C64B8
-:10373C00206669726D7761726520626173650066DF
-:10374C0061696C656420746F2065726173652073A8
-:10375C006563746F72200077726974655F6E65774C
-:10376C005F6669726D77617265006661696C65642C
-:10377C0020746F207772697465206164647265735C
-:10378C007320005765277265206465616400436887
-:10379C0065636B73756D6D696E672000206279745B
-:1037AC006573004E657720576F726C642066697282
-:1037BC006D776172652073797374656D5F666C618A
-:1037CC0073685F62617365004F6C6420576F726C35
-:1037DC0064206669726D77617265207379737465A4
-:1037EC006D5F666C6173685F6261736500436865E9
-:1037FC00636B73756D202D2077616E74656420008A
-:10380C0020676F7420004F757220696E7465726E3C
-:10381C00616C20666C61736820636F6E74656E7486
-:10382C007320617265206261642028636865636B34
-:10383C0073756D206661696C656429212054686913
-:10384C0073206973207265616C6C792062616421EC
-:10385C00007C00FE00FF01C701C701C701C701C7FB
-:10386C0001C701C701C701C701C701C701C701FFD4
-:10387C0001FE007C0038003C003E003E0038003861
-:10388C00003800380038003800380038003800386C
-:10389C00003800FE00FE00FE007C00FE00FF01C7A9
-:1038AC0001C701C001C001E000F00078003C001E1F
-:1038BC00000E000F000700FF01FF01FF017C00FE5E
-:1038CC0000FF01C701C701C001C001F8007800F872
-:1038DC0000C001C001C001C701C701FF01FE007C8F
-:1038EC0000E000E000F000F000F800F800F800FC48
-:1038FC0000EC00EE00E600FF01FF01FF01E000E03C
-:10390C0000E000E000FF00FF00FF000700070007D9
-:10391C00007F00FF00FF01C701C001C001C701C744
-:10392C0001C701FF01FE007C007C00FE00FF01C707
-:10393C0001C701070007007700FF00FF01C701C79F
-:10394C0001C701C701C701FF01FE007C00FF01FF99
-:10395C0001FF01E000E000700070007000380038DA
-:10396C0000380038001C001C001C001C001C001C33
-:10397C00007C00FE00FF01C701C701C701C701FEA3
-:10398C00007C00FE00C701C701C701C701C701FFCA
-:10399C0001FE007C007C00FE00FF01C701C701C7CF
-:1039AC0001C701C701FF01FE01DC01C001C001C755
-:1039BC0001C701FF01FE007C0000000000000000B8
-:1039CC00007C00FE00FF01C701C701F001FC01CE25
-:1039DC0001C701C701E701FF01DF01CE01070007A5
-:1039EC000007000700E700F701FF01CF01C701C77F
-:1039FC0001C701C701C701C701CF01FF01F701E7EB
-:103A0C000000000000000000007C00FE00FF01C769
-:103A1C0001C7010700070007000700C701C701FF26
-:103A2C0001FE007C00C001C001C001C001CE01DF5D
-:103A3C0001FF01E701C701C701C701C701C701C7E2
-:103A4C0001E701FF01DF01CE0100000000000000D2
-:103A5C00007C00FE00FF01C701C701C701FF01FF89
-:103A6C00010700C701C701FF01FE007C00E000F068
-:103A7C0000F8003800FE00FE00FE00380038003868
-:103A8C00003800380038003800380038003800386A
-:103A9C000000000683010000000000000000000090
-:103AAC0000068301000000000C000000000000066E
-:103ABC008301000000000C00000000D878369B79D0
-:103ACC00C0E3D90C8C67DB3C1BF8FD7EBFFDE0F737
-:103ADC00FB1FC6EFFB7E1F98CD66B3CD60369B19DE
-:103AEC00C66C18660398FD66B3FD60309B19C66FF3
-:103AFC0018660398FD66B3FD60309B19C36F18669A
-:103B0C0003980D66B30D60369B19C360186603F8F5
-:103B1C00FD7EBFFDECF79B19C36F187E03D878367A
-:103B2C009B79CCE399998167183C0318000000003D
-:103B3C0000000080010000000018000000000000E0
-:103B4C000000000000000018000000000000000051
-:103B5C0000000000005341442057415443483A2090
-:103B6C0000526573657420526567697374657220C1
-:103B7C000042726F776E206F757420726573657476
-:103B8C00005374617274696E67204C5345206F73D7
-:103B9C0063696C6C61746F72004C5345206F736376
-:103BAC00696C6C61746F7220646964206E6F742030
-:103BBC007374617274005553422077616B65757034
-:103BCC00006C656176696E67207374616E646279EE
-:103BDC0000205F5F5F5F5F5F202020205F5F0D0A2A
-:103BEC002F5F20205F5F2F205F5F2F202F0D0A207B
-:103BFC002F202F2020202F5F20205F5F2F0D0A2FDA
-:103C0C005F2F20202020202F5F2F0D0A00426F6F86
-:103C1C00746C6F616465722076657273696F6E3A4D
-:103C2C0020004C617374206669726D776172652037
-:103C3C00626F6F742077617320737461626C653B83
-:103C4C0020636C65617220737472696B65730053C9
-:103C5C007475636B20627574746F6E20726567691E
-:103C6C007374657220697320696E76616C69642C5B
-:103C7C0020636C656172696E672E00427574746F97
-:103C8C006E2069642000697320737475636B210066
-:103C9C00427574746F6E20776173207075736865EC
-:103CAC0064206F6E20626F6F742E20427574746F77
-:103CBC006E20636F756E7465723A2000426F6F747C
-:103CCC0020626974733A2000486F6C6420646F77CB
-:103CDC006E205550202B204241434B20666F7220A2
-:103CEC003520736563732E20746F20666F72636565
-:103CFC002D626F6F7420505246004669726D776169
-:103D0C0072652069732065726173656400426F6F20
-:103D1C0074696E67206E6F726D616C6C790057619F
-:103D2C00746368646F6720636175736564206120D8
-:103D3C00726573657400536F667477617265206683
-:103D4C0061696C75726520636175736564206120AF
-:103D5C00726573657400426F6F74206661696C657F
-:103D6C00642C20737472696B65203300426F6F741E
-:103D7C00206661696C65642C20737472696B6520B4
-:103D8C003200426F6F74206661696C65642C20731D
-:103D9C007472696B652031004C6F6164696E6720C9
-:103DAC007265636F76657279206669726D77617280
-:103DBC0065004661696C656420746F206C6F61648A
-:103DCC00207265636F76657279206669726D7761B2
-:103DDC0072652C20737472696B65206F6E652E2072
-:103DEC0054727920616761696E2E004661696C6559
-:103DFC006420746F206C6F6164207265636F7665EC
-:103E0C007279206669726D776172652C2073747299
-:103E1C00696B652074776F2E20547279206167610D
-:103E2C00696E2E004661696C656420746F206C6F3E
-:103E3C006164207265636F76657279206669726D54
-:103E4C00776172652C20737472696B65207468726B
-:103E5C0065652E20534144205741544348004F750B
-:103E6C00722070726576696F7573206669726D77F2
-:103E7C0061726520757064617465206661696C653A
-:103E8C00642C2061626F7274696E67207570646156
-:103E9C0074652E004E6577206669726D7761726568
-:103EAC0020697320617661696C61626C65210042E6
-:103EBC006F6F74696E67206669726D7761726520C9
-:103ECC0040200072657475726E696E6720746F2085
-:103EDC007374616E64627900466F7263652D626FF4
-:103EEC006F74696E67207265636F76657279206D89
-:103EFC006F64652E2E2E004261636B00557000536B
-:103F0C00656C65637400446F776E00303132333406
-:103F1C003536373839414243444546003031323327
-:103F2C0034353637383961626364656600286E75DE
-:103F3C006C6C290000000000010203040102030460
-:043F4C000607080953
-:103F5000FFFFFFFF00A000000202000000C00401FC
-:103F60000000000000000002100000000700000038
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_robert_bb2@1478015115.bin b/bin/boot/nowatchdog_boot_robert_bb2@1478015115.bin
deleted file mode 100755
index 5031130cab..0000000000
Binary files a/bin/boot/nowatchdog_boot_robert_bb2@1478015115.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_robert_bb2@1478015115.hex b/bin/boot/nowatchdog_boot_robert_bb2@1478015115.hex
deleted file mode 100644
index 1dab34819b..0000000000
--- a/bin/boot/nowatchdog_boot_robert_bb2@1478015115.hex
+++ /dev/null
@@ -1,1783 +0,0 @@
-:020000040800F2
-:1000000000AA01208925000885250008E51D0008B3
-:1000100085250008852500088525000800000000CA
-:10002000000000000000000000000000852500081E
-:1000300085250008000000008525000885250008AA
-:1000400085250008852500088525000885250008E8
-:1000500085250008852500088525000885250008D8
-:1000600085250008852500088525000885250008C8
-:1000700085250008852500088525000885250008B8
-:1000800085250008852500088525000885250008A8
-:100090008525000885250008852500088525000898
-:1000A0008525000885250008852500088525000888
-:1000B0008525000885250008852500088525000878
-:1000C0008525000885250008852500088525000868
-:1000D0008525000885250008852500088525000858
-:1000E0008525000885250008852500088525000848
-:1000F0008525000885250008852500088525000838
-:100100008525000885250008852500088525000827
-:100110008525000885250008852500088525000817
-:100120008525000885250008852500088525000807
-:1001300085250008852500088525000885250008F7
-:1001400085250008852500088525000885250008E7
-:1001500085250008852500088525000885250008D7
-:1001600085250008852500088525000885250008C7
-:1001700085250008852500088525000885250008B7
-:1001800085250008852500088525000885250008A7
-:100190008525000885250008852500088525000897
-:1001A0008525000885250008852500088525000887
-:1001B00085250008852500088525000861070008B9
-:1001C0006D0700088525000800000000852500084F
-:1001D0008525000885250008852500088525000857
-:1001E0008525000885250008852500088525000847
-:0801F0008525000885250008A3
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0D6BF00BF302B0008014801F05F
-:1007700038B800BF302B0008014800F0F9BD00BFB9
-:10078000302B000837B50024012002F0ADF90190AC
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F087F9002020E00133F8
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F065F9284623
-:1008000003B030BD0D650008396500084465000877
-:100810004E65000808B500F077FB80F00100C0B21B
-:1008200008BD000008B50C22044B02FB003000F0AC
-:100830008DFC80F00100C0B208BD00BFD02B0008C5
-:1008400010B5002401F094F8054820440C34017AD6
-:1008500000F062FC302CF7D1BDE8104001F089B8FF
-:10086000D02B0008044BDA691106FBD59862DA69CF
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F075F828464FF48021EC
-:100890001E4C01F06FF82B68642623F0010394E8E6
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F013FC03AB94E8070083E8070045
-:1008C00000211846022200240B4600F007FC06A86F
-:1008D00002F020F8089821460D4A70430023FFF7E4
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240002C0008F1
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F0C5F83146E5
-:100980004A46002001F044FD07F1080304F5927483
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F004FD044655206C44FFF77E
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F08338000020182C0008BD
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F018FD01A8FFF735
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F0E4FCF1E7012010BD00BFBF
-:100A90007A65000810B5074C43F2CD71064848F658
-:100AA000B803224601F02AFD01462046BDE8104069
-:100AB00000F0E4B83C010020352C000810B500F02F
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B20009D650008B8650008D3650008DD6500080C
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F039BC00BF46
-:100BE000802B0008024B1868403000F0AFBA00BFFD
-:100BF000802B000838B5204B012200211C6804F12D
-:100C00002005284600F03CFA0021284600F052FA60
-:100C100004F1380000F094FA04F1400000F090FA7A
-:100C2000012104F12C000A4600F02AFA002104F107
-:100C3000080001220B4600F051FA0021012204F1C4
-:100C400014000B4600F04AFA6068012101F014FF1D
-:100C50006068002101F010FF94E8030000F08AFEB4
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD802B00082B4B2DE952
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F0DDFB384631
-:100CA000012100F007FA0021304600F003FA01208C
-:100CB00001F0D2FB684600F049FA054620B11C4815
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000F1F9012001F0C0FB204600F037FA06468A
-:100CE00008B114481BE0684600F030FA054608B920
-:100CF000114814E0012001F0AFFB48464146FFF7E0
-:100D000055FF3846314600F0D5F90C480921FFF768
-:100D10004DFF204600F01AFA054610B90848FFF7C3
-:100D200081FE284603B0BDE8F08300BF802B000899
-:100D3000FC650008186600083266000802640008B6
-:100D40004E66000808B5022001F086FB0A4B1B68BE
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D3FD022001F078FB0548FFF75BFE012070
-:100D7000BDE8084000F0C2BD802B00086F66000887
-:100D80008B6600080F4BF7B51C6802AD0F460121BA
-:100D9000203405F8010D1646204600F08BF964203A
-:100DA00001F056FB28460121FFF700FF1EB138462F
-:100DB0003146FFF7FBFE2046002100F07BF903B02F
-:100DC000F0BD00BF802B0008F0B50746ADF2044D22
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0CCF8C2
-:100DF000284669464FF4806201F00AFB0546EAE79F
-:100E0000224600F0C1F869462246284601F000FB60
-:100E10000DF2044DF0BD08B5202001F045FD00287D
-:100E2000FAD108BD08B5022001F03EFD0028FAD035
-:100E30000220BDE8084001F041BD00B58DB0684614
-:100E400001F0BBFC0023684600934FF480730A93C3
-:100E500035230B9301F0E2FCFFF7E4FFFFF7DBFF24
-:100E60000DB05DF804FB000030B5002495B02448B7
-:100E7000022100F07FFD23480021032220440C348E
-:100E80000B4600F02BF9482CF5D101A8002401F005
-:100E90008BFC102301A802940193172303944FF4B1
-:100EA0004075059304940694079401F095FC012085
-:100EB00001F0D8FCFFF7C1FF08A801F07EFC662313
-:100EC00008A808941393129501F0A8FCFFF7AAFF55
-:100ED00008A801F072FC992308A8089413931295AE
-:100EE00001F09CFCFFF79EFF4CF2503001F0B0FA8D
-:100EF000FFF7A3FF0248022100F046FD15B030BD08
-:100F0000001000A00C64000830B502218DB01C4810
-:100F100000F030FD022001F0B9FC684601F04DFC04
-:100F20004FF08063684600934FF0407304934FF492
-:100F300040730A93AF230B9301F070FCFFF772FF2D
-:100F400001F0ACFC054601F0A9FC044601F0A6FC4A
-:100F5000240244EA004040EA0504FFF75CFF094B25
-:100F60009C4204D020460024FFF763FD00E00124EA
-:100F70000348022100F008FD20460DB030BD00BF3F
-:100F8000001000A020BB190070B515468CB00446B7
-:100F90000E461B48022100F0EDFC681E01F076FCB5
-:100FA000684601F00AFC4FF08063684625440093D0
-:100FB0004FF0407304930A2305934FF44063099361
-:100FC0004FF440730A934FF4005308930B230B9391
-:100FD00001F024FC304601F051FCAC4204D001F099
-:100FE0005DFC04F8010BF8E7022001F067FCFFF755
-:100FF00012FF0348022100F0C7FC0CB070BD00BF17
-:10100000001000A0034A136B23F4FF6323F00703CF
-:10101000136370470038024000F13F4000F57E0046
-:10102000C0F387200A280AD8054A135C591C1154BA
-:101030002BB9044901230A6B834013430B637047A8
-:10104000F48900200038024000F13F4000F57E00A6
-:10105000C0F387200A280DD8074A135C53B1013B1F
-:10106000DBB2135433B9054901230A6B834022EAEA
-:1010700003030B63704700BFF4890020003802406F
-:10108000436813B500930123044600688DF80430CB
-:1010900000238DF805208DF807308DF80610FFF736
-:1010A000BBFF2068694601F02BFB2068FFF7CCFFEF
-:1010B00002B010BD38B5037A04460D460BB981F075
-:1010C00001052068FFF7A8FF2068A1882A4601F0E3
-:1010D00055FB2068BDE83840FFF7B6BF13B504469E
-:1010E00040688DF80730009002208DF805208DF8BB
-:1010F000040020688DF80610FFF78EFFA27A2068A2
-:10110000218901F03FFB2068694601F0F9FA206867
-:10111000FFF79AFF02B010BD002313B504460193F8
-:101120004368006800938DF80710FFF775FF20688B
-:10113000694601F0E5FA2068FFF786FF02B010BDAE
-:10114000036813B10021FFF7E7BF704738B50446C5
-:101150000068FFF761FFA188206801F009FB0546E0
-:101160002068FFF771FF281C18BF012038BD1FB58C
-:10117000836804460093C36868460193FFF7E0FF65
-:10118000636902A80293A3690393FFF7D9FF04B030
-:1011900010BD10B504460121083002220023FFF7DC
-:1011A0009DFF04F11400012102220023BDE810403C
-:1011B000FFF794BF0368DB6910B5044673B9C36ACF
-:1011C00063B10A2001F048F92046FFF7D0FF20461E
-:1011D000E36A01219847142001F03EF92046FFF709
-:1011E000D8FF2046BDE8104000F0E0B910B5044635
-:1011F00000F04FFA48B10A2001F02EF9204600F025
-:1012000048FA80F00100C0B210BD012010BD30B519
-:10121000044687B0C36A00219847A36800210125CE
-:1012200000936846E3680A468DF808500193FFF77B
-:1012300027FF68460021FFF73DFF6369002103A8EF
-:101240000393A3690A468DF814500493FFF718FF1F
-:1012500003A80021FFF72EFF07B030BD10B50446EC
-:1012600000F00AFA2368DB6933B9E36A4BB1204620
-:10127000BDE81040FFF7CBBF2046BDE81040FFF7A8
-:1012800076BF10BD10B50446FFF7E8FF2046BDE865
-:101290001040FFF78FBF00002DE9F3419846036827
-:1012A00004460E46DB6917460BB900205BE000F0F0
-:1012B000F0F9B8B9256814220021284601F02FFC66
-:1012C0009DF828306F8020466B71089B2E71AB60B3
-:1012D000099B85F806802B6100F0ECF92368002259
-:1012E0009A6111E02046FFF7CDFF2046FFF77EFF11
-:1012F0000028DFD1D9E79A69B2F57A7F23DA013283
-:1013000002209A6101F0A8F8204600F0DFF90122DE
-:10131000236883F82020154A0192019A511E0191F9
-:101320001AB193F82020002AF7D1002283F8202058
-:10133000019A42B11D7D05F0FD02012ADBD16B1E31
-:101340005D425D4103E00025204600F0A8F92368D6
-:101350000022204683F82020FFF748FF10B92046DE
-:10136000FFF790FF284602B0BDE8F08180841E00A0
-:1013700010B5044618B90E48A92100F0E9FF002174
-:101380002422006801F0CBFB204600F0CBF8236A52
-:101390002BB1002104F120000A46FFF771FEE36A39
-:1013A00023B12046BDE81040FFF731BF10BD00BF9C
-:1013B000E166000810B5044618B90848B62100F0E7
-:1013C000C7FF00680368DB690BB9FFF7F3FE23680A
-:1013D0001A68D3690133D36110BD00BFE16600080C
-:1013E00008B518B90748BF2100F0B2FF00680268CD
-:1013F000D36933B1013BD3611BB9BDE80840FFF7A6
-:101400002DBF08BDE16600081FB50C46114618B98E
-:101410000A4840F28D1103E023B908484FF4C77120
-:1014200000F096FF82888DE80A0000212346029191
-:101430000068FFF731FF04B010BD00BFE16600088F
-:1014400013460122FFF7E0BF1FB50C46114618B93D
-:101450000A484FF4D77103E023B9084840F2AF11AE
-:1014600000F076FF82888DE80A00002301210293B4
-:1014700023460068FFF710FF04B010BDE1660008C6
-:1014800007B502AB03F8012D0122FFF7DDFF03B022
-:101490005DF804FB03680022197583F8202070476B
-:1014A00010B5046863882279C3F3090322B922784E
-:1014B000012A18BF43F48063A268E468121BFF2A64
-:1014C00095BF120443F0FF7302F47F0243F48033AC
-:1014D00098BF134309B143F4005342681268536044
-:1014E00010BD43681B681A6822F0D60210B51A6056
-:1014F0005A6842F480425A6008220368BDE81040EE
-:101500001A70FFF7C7BF0368012110B50446586879
-:1015100001F0A6FA00212368BDE81040586801F0E8
-:101520009FBA000043685A7B53B2002B30B506DAED
-:1015300002F00F021B4B1344C0221A7606E003F19F
-:101540006043C02203F5614383F8002343689A7B1C
-:1015500053B2002B06DA02F00F02124B1344C022E2
-:101560001A7606E003F16043C02203F5614383F875
-:10157000002350F8045F0C4C6B7B59B203F01F0240
-:101580000123490903FA02F244F82120AA7B51B24F
-:1015900002F01F024909934044F82130BDE8304071
-:1015A000FFF7B1BFFCEC00E000E100E043682C492C
-:1015B0009A688A42F0B5074687B004D92948512174
-:1015C000294A00F0B9FE29498A4205D91C7B34B169
-:1015D000012C07D000F0C6FE0124254603E00924B3
-:1015E000102500E0022502A801F094F9796860193D
-:1015F000049A8B684343B2FBF3F603FB162303B94B
-:10160000013E0F2E03D91748702100F0A1FE03C937
-:1016100000F0B0F97B684FF0000100221B68013D2B
-:1016200066F307110192013C8DF804508DF8071004
-:1016300019688DF8054021F0010119600C491868FE
-:1016400001401960019919619A60DA601A6842F0E4
-:1016500001021A60074A59680A405A6007B0F0BD93
-:10166000801A0600FA66000817670008A0860100C5
-:10167000001F30FF008000F810B5044654F8043F06
-:1016800093E8030000F080F92046BDE81040FFF722
-:101690003ABF43681B689869C0F3C030704743681D
-:1016A0001B681A6822F0D6021A605A6842F4804217
-:1016B0005A60704703685A790AB9012204E01A791E
-:1016C0000AB9052200E006221A70704743681B68B9
-:1016D0001A6842F0D20210B51A60026814791CB977
-:1016E000196841F004011960117801290CD1528860
-:1016F000012CC2F309020CBF4FF08071002142F4AB
-:1017000090320A435A6010BD0121BDE81040FFF736
-:10171000C7BE38B5436805461C6803681A78013AA5
-:10172000072A5BD8DFE802F0045A5A5A223B5A577C
-:10173000A269910701D59A79A2621A793AB9A26988
-:1017400052060FD50522284601211A7008E0012A09
-:1017500008D1A269100605D50622284600211A7074
-:10176000FFF79EFEA369D9063AD525E0A269520784
-:1017700005D5DA681969501CD860636A8B54A3696F
-:101780001B0603D528460021FFF78AFEA3695806E9
-:1017900026D528460121BDE83840FFF7A2BEA26940
-:1017A000910705D5DA681969501CD8608B5CA36273
-:1017B000A16911F0100109D0E3692846022143F024
-:1017C0001003E361BDE83840FFF764BEA3691A0661
-:1017D000DCD52846D8E7A369DB0701D400F0C2FDB9
-:1017E00038BD43681B689A69D20503D5DA6942F4AB
-:1017F0008072DA619A69510503D5DA6942F4806230
-:10180000DA619A69920503D5DA6942F40072DA6105
-:101810000321FFF766BE0000094B70B51C680D463A
-:1018200006462046FFF7C6FD2A4631462046FFF70A
-:1018300007FE05462046FFF7D3FD284670BD00BFD2
-:10184000642B0008094B70B51C680D4606462046FF
-:10185000FFF7B0FD2A4631462046FFF711FE054648
-:101860002046FFF7BDFD284670BD00BF642B000871
-:1018700037B500F07DF81D4801210222FFF700FC7A
-:101880001B4801210222FFF7FBFB1A48012102221B
-:10189000FFF7F6FB00F06DF800200DF10701FFF7F0
-:1018A000BBFF9DF80750012D1DD114200DF107013C
-:1018B000FFF7B2FFA8B1104C237813B101332370A6
-:1018C0000FE09DF80710142021F0060141F00201FD
-:1018D0008DF80710FFF7B6FF18B10320257000F050
-:1018E000BBFD012000E0002003B030BD54640008BF
-:1018F000606400086C640008FF890020014601480C
-:10190000FFF7D8BB5464000801460148FFF7D2BB7B
-:1019100060640008B0F1804F08B503D20D48302153
-:1019200000F016FD0C4B98420ED903F58033984217
-:101930000CD9B0F1A04F0BD3084A094BB0F1204F9E
-:1019400034BF1846104608BD064808BD064808BD05
-:10195000064808BD38670008FFFF0040D12900088D
-:10196000B9290008E9290008012A0008A12900086E
-:101970007047704710B50C46FFF7CCFF01210346B6
-:101980002046BDE81040184710B50C46FFF7C2FFCF
-:10199000002103462046BDE81040184738B5104CDA
-:1019A00005464FF080512046FFF7E4FF45B154E86B
-:1019B000003F43F4807344E80032002A08D0F6E781
-:1019C00054E8003F23F4807344E80032002AF7D142
-:1019D00003484FF08051BDE83840FFF7D5BF00BF46
-:1019E00000700040024B5868C0F34000704700BFD1
-:1019F00000700040024A136843F008031360704708
-:101A000000700040B0F1006F10B504460BD20C48D6
-:101A1000FEF7F0FF2046FFF70CF80A48FFF702F840
-:101A20004FF0FF3010BD084B002053F8042BA242AA
-:101A300002D81A68944202D301300B28F5D110BDA8
-:101A40005767000860670008786400082DE9F843CC
-:101A50000446174699460E46C1B3FFF7D3FF054625
-:101A6000601E3044FFF7CEFF002D804631DB00289A
-:101A70002FDB461B01361FB1002031464A46B847CE
-:101A80002C4600F09BFD44451EDCF32000F0ACFD2D
-:101A9000114B002133F8140000F0DEFD09280AD0B4
-:101AA0000E48FEF7A7FF2046FEF7C3FFFEF732FF02
-:101AB00000F092FD0DE02FB1C5F1010031464A461C
-:101AC0002044B8470134DEE700F086FD0120BDE880
-:101AD000F8830020BDE8F883A8640008796700084F
-:101AE0002DE9F0410F461646804600F067FD3E4462
-:101AF0003C46F32000F078FDB44216D0C7EB080551
-:101B0000254414F8011B284600F0DCFD0928F3D019
-:101B10000848FEF76FFF2846FEF78BFFFEF7FAFE38
-:101B200000F05AFD0020BDE8F08100F055FD0120D5
-:101B3000BDE8F0819167000808B57D2000F0A8FF9E
-:101B4000003018BF012008BD4900FFF701B80000B0
-:101B50002DE9F043012185B005460020FEF7F8FF8E
-:101B6000042000F047FB01A8294600F097FB01A8DC
-:101B700000F0A3FB08B93B4814E00C353A48FEF7E7
-:101B800051FF02992846FFF71FF904463748FEF730
-:101B900031FF2046FEF74DFFFEF7BCFE039B9C4243
-:101BA00004D03348FEF73EFF012057E0029CDFF8E7
-:101BB000E0803048FEF736FF21462F4A002340469A
-:101BC0000024FFF743FF029F2C484FEA5709FEF716
-:101BD00029FFBC421CD23E1B29486119B6F5803F43
-:101BE00028BF4FF480363246FFF7CEF908EB0400E9
-:101BF00023493246FFF774FF18B92248FEF712FF57
-:101C000006E009EB54003946FEF7A2FF3444E0E752
-:101C10001D48FEF7EFFE0298FEF70BFF1B48FEF78C
-:101C2000E9FE1B49029A002000F0F2FB0446194825
-:101C3000FEF7E0FE0398FEF7FCFE1748FEF7DAFE1B
-:101C40002046FEF7F6FEFEF765FE039B9C4204D09D
-:101C50001248FEF7E7FE022000E0002005B0BDE8D4
-:101C6000F08300BFA2670008C0670008DD670008B6
-:101C7000F367000816680008491B00082D68000873
-:101C8000008A0020446800084F6800085D6800086A
-:101C90000080000866680008796800087F6800080E
-:101CA00010B5022000F0BEFAD8B3042000F0BAFA52
-:101CB000044670B11B48FEF7B5FE042000F0A6FAFA
-:101CC000022000F0A3FA4FF40040BDE8104000F0FD
-:101CD0009DBA1548FEF7A6FE082000F097FA1020DE
-:101CE00000F094FA202000F091FA402000F08EFAE3
-:101CF0002046FFF72DFF022807D1082000F07AFACE
-:101D0000102000F077FA00F051FB042000F07EFA7A
-:101D1000022000F07BFA4FF40040BDE8104000F0D4
-:101D200069BA10BDCA6800080069000810B52548E6
-:101D3000FEF778FE4FF48000FFF70AFF10B102288B
-:101D40003AD809E0202000F061FA402000F05EFA65
-:101D5000802000F04FFA2FE0082000F04BFA10200E
-:101D600000F048FA202000F05DFA20B91648FEF78E
-:101D700059FE202007E0402000F054FA58B91348DB
-:101D8000FEF750FE402000F035FA4FF4007000F0EE
-:101D900031FA00F00BFB0E480024FEF743FE08204A
-:101DA00000F034FA102000F031FA202000F02EFA72
-:101DB000402000F02BFA00E00124042000F026FA75
-:101DC000204610BD1B690008356900086E690008CF
-:101DD000A769000808B50248FEF724FE00F05CFA87
-:101DE000E16900081EF0040F0CBFEFF30880EFF369
-:101DF0000980FFF7EFBF704708B50120FEF712FD1D
-:101E000008B900200FE00020FEF70CFD0028F8D0F4
-:101E10000220FEF707FD0028F3D00320FEF702FDA5
-:101E200080F00100C0B200F0010008BD1FB50446FB
-:101E30000E48FEF7F7FD01A90C22204600F016FB24
-:101E400001A8FEF7EFFD2046FEF7A0FE0220FEF7F8
-:101E5000E9FC04460220FEF7E5FCA04201D000F0B8
-:101E6000A5FA0A2000F0F8FAF4E700BFD7690008E5
-:101E70007FB5BB484FF08051FFF77CFDFFF7B2FD07
-:101E8000044630B1FFF7B6FDB648FEF7CBFD00F0D3
-:101E900094FA4FF08051B248FFF776FDFEF76CFCE4
-:101EA000FEF7ECFCB048FEF7BDFDB048FEF7BAFD0A
-:101EB000AF48FEF7B7FDAF48FEF7B4FDAE48FEF7FA
-:101EC000B1FDAE48FEF7AEFDAD48FEF7ABFDFFF746
-:101ED000CFFC00F0B1F900F0D1F921460C2201A8A5
-:101EE00000F01DFE00F0C6F901A90C2200F0BEFAB8
-:101EF00001A8FEF797FDA348FEF794FDA148FEF761
-:101F000091FD4FF4804000F08DF990B19E48FEF7AE
-:101F100089FD4FF4804000F079F9082000F076F94F
-:101F2000102000F073F9202000F070F9402000F03C
-:101F30006DF9FEF799FFFEF783FCFFF799FCFEF7BA
-:101F4000BDFDFEF7F5FDFEF71DFC08B18F4803E06F
-:101F5000FEF760FC10B18E48FFF768FF00F07AF9D9
-:101F6000802000F05FF918B1802000F04FF94BE0BD
-:101F70004FF4003000F056F920B14FF4003000F07B
-:101F800045F943E0FFF738FF68B141F288348148F2
-:101F9000FEF748FDFFF730FF78B1012000F05CFA52
-:101FA000013CF7D132E07C4B0CCB013301D0013244
-:101FB00003D17A48FEF736FD28E0FFF7BDFD48B3B0
-:101FC000FFF7BAFD10B17648FEF72CFD4FF4007014
-:101FD00000F028F910B17348FEF724FD4FF40070AB
-:101FE00000F014F9102000F01DF9002800F0EE8038
-:101FF0006D48FEF717FD082000F008F9102000F0EA
-:1020000005F9FFF793FE98B96848A5E76848FEF719
-:1020100009FDF6E74FF4007000F004F90028CFD175
-:10202000082000F0F3F8102000F0F0F8FFF738FE79
-:102030004FF4005000F0F6F804464FF4805000F0E2
-:10204000F1F8400040EA8400C4B24FF4006000F0B0
-:10205000E9F82043C0B20728C3B20DD14FF40060A5
-:1020600000F0D4F84FF4805000F0D0F84FF4005056
-:1020700000F0CCF84F486FE701334FF40060DBB25B
-:10208000023B052B11D8DFE803F00C1003100C10F5
-:1020900000F0BCF84FF4805000F0B8F84FF4005056
-:1020A00003E000F0B3F84FF4805000F0A3F8FEF71F
-:1020B000A9FF394B40485D681E68FEF79BFC284627
-:1020C000FEF7B7FC3D48FEF795FC00229300013275
-:1020D0004FF0FF3103F16043082A03F56143C3F871
-:1020E0008010C3F88011F1D1354B4FF480120024D9
-:1020F0001A634FF480625C639C631A645C6400F052
-:10210000E3FB3048012100F087FC21462D4800F018
-:1021100083FCF320012100F08BFC2146F32000F02A
-:1021200087FC0320012100F08FFC2146032000F0F2
-:102130008BFC6FF4A050012100F092FC21466FF45B
-:10214000A05000F08DFC2048012100F095FC1E48B5
-:10215000214600F091FC63B64FF0FF3EB54628479C
-:1021600000700040EC690008F9690008006A000886
-:102170008D6A0008246B0008A56B0008266C000817
-:10218000A96C0008FF690008266D0008014550FE93
-:10219000024550FE536D0008008000088E6D000857
-:1021A000A16D0008B96D0008D96D0008034550FE07
-:1021B0004D6E0008044550FE6C6E0008806E0008ED
-:1021C000003802400010E022B379F764082000F0E4
-:1021D00029F820B10548FEF725FC102003E004484B
-:1021E000FEF720FC082000F005F81FE7016E00084C
-:1021F000276E000810B50446002000F075FC40EA88
-:1022000004010020BDE8104000F05EBC10B504469B
-:10221000002000F069FC20EA04010020BDE8104025
-:1022200000F052BC10B50446002000F05DFC2042D6
-:1022300014BF0120002010BD08B50120FFF7AEFB40
-:102240000120FFF7EFFF20B90121BDE8084000F0B1
-:102250003BBC08BD08B50648FEF7CCFB002000F0EB
-:1022600043FCFEF7E6FBBDE80840FEF753BB00BFAA
-:10227000886E0008022000F037BC000008B5FFF7A8
-:10228000F9FF0449884204D00220BDE8084000F06C
-:102290001BBC08BD8BB8185800BEFDE71FB504462F
-:1022A0000C2201A8FEF770FE01AB03CB206018687A
-:1022B0006160A060204604B010BD0068A0F10C036E
-:1022C000584258417047000080B5174606461048EE
-:1022D0000D461C46FEF78EFB3846FEF78BFB0D487D
-:1022E000FEF788FB3046FEF785FB0B48FEF782FBC6
-:1022F0002846FEF79EFB2CB10848FEF77BFB2046E4
-:10230000FEF778FB0648FEF78DFBFFF7C5FF00BF21
-:10231000946E0008A66C00089D6E0008A76C00086B
-:10232000FF6900081FB506AA52F8044B03920092F9
-:102330001A462346FFF7C8FF0CB41FB506AA52F889
-:10234000043B03920092014AFFF7BEFF9F6E000814
-:10235000002307B572460093014BFFF7E3FF00BF70
-:10236000A66E00087446064808B5FEF743FB2046F3
-:10237000FEF75FFB0348FEF755FBFFF78DFF00BF3D
-:10238000AE6E0008FF690008BFF34F8F0549064B8A
-:10239000CA6802F4E0621343CB60BFF34F8F00BF03
-:1023A000FDE700BF00ED00E00400FA0508B5FEF708
-:1023B000FBFB00F081FBFFF7E7FF08B5FFF7E4FF49
-:1023C000F0B50646002401202546034694421DD060
-:1023D00011F804C000F1010EBCF1000F03D17355D8
-:1023E000774605460DE00133774606F800C0DBB2BC
-:1023F000FF2B07D102F1FF3C644506D07355871CC3
-:102400007546012301343846E0E770467355F0BD48
-:1024100030B5C9B1C0430A44914213D011F8013B11
-:102420000A4D83EA000404F00F0455F8244084EABE
-:10243000101080EA131303F00F0355F8233083EADA
-:102440001010E9E7C04330BD084630BDC064000845
-:1024500000010138FDD1704710B504462CB14FF48E
-:102460007A70013CFFF7F4FFF8E710BD0A2A10B5B7
-:1024700004DC1148BDE81040FEF7D4BA30230C4606
-:102480001C2204F8023B78234B700F239340034037
-:10249000D340092B01D8303302E00F2B02D8573339
-:1024A000DBB200E02023043A04F8013B131DECD119
-:1024B00000238B7210BD00BFE86E000808B582686B
-:1024C0004368934203D304481421FFF741FF026895
-:1024D000591C4160D05C08BDFE6E000843688268EC
-:1024E000934210B503D304481921FFF731FF026866
-:1024F0005C1C4460D15410BDFE6E0008F0B587B07E
-:102500000E460746154600210C2268461C4600F080
-:1025100006FB00210C2203A80296009700F0FFFAA8
-:10252000684603950594FFF7C9FF06466846FFF71E
-:10253000C5FFB042014601D003A808E06846FFF796
-:10254000BDFF0446D8B1012804D103A83146FFF7E6
-:10255000C5FFEBE7030608D504F07F046846FFF7E4
-:10256000ADFF40EA042000F18004A4B20025A5429A
-:10257000DCDA03A80021FFF7B1FF0135F7E7049883
-:1025800007B0F0BDFEE700000748084A0849121AE4
-:1025900008B500F0B9FA0748074A0021121A00F0FE
-:1025A000BEFAFFF765FC00BF000000201400002009
-:1025B000106F000814000020008A0120044B1A69E3
-:1025C000002A04DA034A5A6002F188325A607047DE
-:1025D000003C024023016745024A136943F000436F
-:1025E00013617047003C0240014BD860704700BF48
-:1025F000003C02400E4BDA68D20310D4DA68D106F0
-:102600000FD4DA68D2050ED4DA6812F0E00F0CD1DC
-:10261000DB6813F0020F14BF082009207047012067
-:10262000704706207047022070470720704700BFA0
-:10263000003C0240092307B58DF80730FFF7DAFFA9
-:102640008DF807009DF80730012BF7D09DF80700A3
-:1026500003B05DF804FB000070B5064641B10129E6
-:1026600008D002290CBF4FF400754FF4407503E009
-:102670000D4601E04FF48075FFF7DCFF09281ED1FD
-:102680000F4C236923F4407323612169294321619D
-:10269000236923F0F8032361236943F002031E43F7
-:1026A0002661236943F480332361FFF7C3FF236965
-:1026B00023F002032361236923F0F803236170BD33
-:1026C000003C024070B505460E46FFF7B3FF0928EF
-:1026D00013D10A4C236923F44073236123692361D6
-:1026E000236943F0010323612E70BFF34F8FFFF77F
-:1026F000A1FF236923F00103236170BD003C024068
-:10270000F0B500220E680123934003EA060E9E45B1
-:102710002AD1550003230468AB40DB431C4004600E
-:102720000C79076804FA05FC013C4CEA0707012C08
-:10273000076011D884684F791C40AF40846084687A
-:1027400027438760446824EA0E0444608C79476814
-:102750009440A4B23C434460C4682340C360CB7936
-:10276000C468AB402343C3600132102ACBD1F0BD13
-:102770000369194214BF01200020704702B90904FF
-:102780008161704701F00703C9089B0000EB8100DD
-:102790000F219A40994010B5046A24EA01010162B0
-:1027A000016A1143016210BD00230360436083602E
-:1027B000C3600361436183617047002343608360AA
-:1027C000C3600360036143618361C3610362436269
-:1027D0008362C362704700000E4903680A6810B53F
-:1027E00044691C4383691C4322F07F43426823F001
-:1027F0003003234343EA02630B60C36882684C687A
-:102800001A43054B23401343026943EA02434B60DA
-:1028100010BD00BF001000A0FEF7E0FF90E80C0024
-:102820000E491A4383681A43C3681A4303691A435B
-:1028300083691A43C3691A43036A1A43436A1A43F2
-:10284000836A1A43C36A10B51A434C69044B234088
-:102850001343426943EA82434B6110BD001000A05C
-:1028600000008090044B1A6810B142F0010201E0B0
-:1028700022F001021A607047001000A0024B9A6813
-:10288000920600D498617047001000A0024B9A682D
-:10289000920600D418617047001000A0014B187810
-:1028A000704700BF201000A0034B9B68184214BF64
-:1028B00001200020704700BF001000A0014BD8602D
-:1028C000704700BF001000A00F4B00211A6842F0B3
-:1028D00001021A6099601A6822F0A85222F41022AC
-:1028E0001A600A4A5A600A4AC3F8842002F18062D8
-:1028F000C3F888201A6822F480221A60D960C3F8CD
-:102900008C10C3F89010704700380240103000243B
-:10291000003000201E4A936803F00C03042B10B50E
-:1029200003D0082B03D01B4B19E01B4B17E0516859
-:10293000536811F4800F516803F03F0318BF164A23
-:10294000C1F3881108BF134AB2FBF3F3104A4B439B
-:102950005268C2F3014201325200B3FBF2F30C4A57
-:10296000036093680D49C3F30313CC5C0368E34031
-:1029700043609468C4F382240C5D23FA04F48460F9
-:102980009268C2F342328A5CD340C36010BD00BF7C
-:10299000003802400024F40040787D01010000204E
-:1029A000044B1A6B09B1104301E022EA00001863DE
-:1029B000704700BF00380240044B5A6B09B1104306
-:1029C00001E022EA00005863704700BF003802406F
-:1029D000044B9A6B09B1104301E022EA00009863AE
-:1029E000704700BF00380240044B1A6C09B1104315
-:1029F00001E022EA00001864704700BF003802407E
-:102A0000044B5A6C09B1104301E022EA00005864FB
-:102A1000704700BF00380240044B1A6909B11043E7
-:102A200001E022EA00001861704700BF0038024050
-:102A3000044B5A6909B1104301E022EA00005861D1
-:102A4000704700BF00380240044B9A6909B1104337
-:102A500001E022EA00009861704700BF00380240A0
-:102A6000044B1A6A09B1104301E022EA000018621F
-:102A7000704700BF00380240044B5A6A09B1104346
-:102A800001E022EA00005862704700BF00380240AF
-:102A90004209084B012A01D11B6804E0022A01D136
-:102AA0001B6F00E05B6F00F01F0023FA00F000F0E6
-:102AB0000100704700380240024A536F43F08073B0
-:102AC000536770470038024082B000230193054BE2
-:102AD0000193019B03EB80000190019B196002B000
-:102AE000704700BF5028004082B000230193054B7F
-:102AF0000193019B03EB80000190019B186802B0D9
-:102B0000704700BF50280040431E0A4410B5914250
-:102B100004D011F8014B03F8014FF8E710BD02444F
-:102B20000346934202D003F8011BFAE77047000006
-:102B300014000020702B0008001402400040000028
-:102B40000E00040000140240008000000F0004008A
-:102B50000000000000000000000000000000000075
-:102B600000650008682B0008302B000850000000AA
-:102B70000060004000000001801A0600005F600055
-:102B8000842B000800540140000020000000024097
-:102B90002000000005000800000002408000000046
-:102BA00007000800000002401000000000000000C4
-:102BB0000000024008000000010000000004024084
-:102BC00004000000000402400100000001000000B9
-:102BD0000018024040000000010000000018024000
-:102BE0000800000000000000001802402000000063
-:102BF0000100000000180240100000000100000069
-:102C0000000C02400001000008000700000C024018
-:102C1000000200000900070001424F4F544C4F4191
-:102C20004445520000000000002A2A000000000075
-:102C3000000000000047FF004C6174746963650088
-:102C4000694345637562653220323031362E303249
-:102C50002E323738313000506172743A2069434562
-:102C60003430554C314B2D434D3336410044617463
-:102C7000653A204A756C20323520323031362030AA
-:102C8000393A35363A33394702FF7EAA997E5100E8
-:102C9000010592002062016F8247027200701100EC
-:102CA0000101470B10470280470502470580034793
-:102CB0000801470208471120470C02470B0247173B
-:102CC00040470501470540470C040090470F104757
-:102CD00006404705014705404705014704800004B9
-:102CE0004710804705020020000800804702014786
-:102CF0000908471701470434000C470403470D3007
-:102D0000475970470E8010470402004047040801ED
-:102D100047020702004047040801470520044741D5
-:102D200003470B03470D1C471080470901008047EC
-:102D30000203470908470324472B784712400747F7
-:102D40000A40470C040008470E40470501470604A7
-:102D50004704014706044706104711800747061C31
-:102D6000470380470C08470A0C3020470F30E847DC
-:102D70000C63C1470C0C30470F400105470C03C0E2
-:102D8000470C0C3020470D184702E04704020CB1F5
-:102D90000018003847064047080C30471001074725
-:102DA00002010001CD72470398470F0C3020470DF8
-:102DB0003000F9A04708100001C04705038047070D
-:102DC0000C30470E300071054708300001470F0CEA
-:102DD0003020470F5808470401DCA00080470363F8
-:102DE000C1470203C020AF5247050C30471008030B
-:102DF000470402E0F5470503C0470202E0050FA0C3
-:102E00001047040C3020471240002020470AC00120
-:102E1000E007A547060C3047110D470314470B4048
-:102E200047030547031447020C3020470F90000466
-:102E3000470220470E17CFA247020847020C30472F
-:102E40001030092447022C470D02CD0FF047050C26
-:102E50003020470F108004470368470301054710DF
-:102E60000C30471011073047190C3020470D300047
-:102E700010470A0147100C30470E30470205204723
-:102E8000023447050247100C30204707044706402C
-:102E90004704203404ED80000247091C0008470560
-:102EA0000C30470F4047050422FC4702014707A0AA
-:102EB0000002C047060C3020470903EAF520004015
-:102EC0004706035CA500184708401C8F0847050CFF
-:102ED00030470A03D050470240470601F0554703E8
-:102EE000104706200200F047050C3020470928470C
-:102EF00003110001E047032038FC8002470A1E8FBF
-:102F00000847050C304708080040470330294704AC
-:102F100002BC03D0470AC04703F047050C302047E6
-:102F20000A1C0F10470829DCA5003047090E8F083E
-:102F300047050C30470C0F47094150550020470901
-:102F40000200F047050C3020470D0447065C76EC84
-:102F500080024707084702068047060C30470802F0
-:102F600047050447030147033CF0470A01400C00B2
-:102F7000F047050C3020470820470B1C21FAE732A8
-:102F8000004047100C3047090C470B2464F0F70849
-:102F90004709028047070C302047141C31CCE7203A
-:102FA000804703383D444702028047070C30470FF3
-:102FB000404705027668FB47024000C0403D47039A
-:102FC000028047070C302047080C47050147053CA5
-:102FD00063DE800010470C0447040C30470A20478A
-:102FE000040247052402E847021047060101404752
-:102FF000020147050C302000A100123C20000447CC
-:10300000021EF060470720001EF04047030D72BD0E
-:10301000400003428EEF47060C30470503C0C0470F
-:1030200004F047024000974703042000F0470401E2
-:10303000403C470201429C47070C302047033A3C82
-:10304000200647030CF060180210800006014002C1
-:103050004AA500188000077815006047020CC96077
-:1030600047050C30470503C0104704F04702050927
-:103070000747038001D05547039000401620000108
-:1030800042C1096047050C30204703323C202C47E1
-:10309000031CF0403047028000044702204705012E
-:1030A0008839414702020025ACC02047040C304754
-:1030B0000503C0044704F00130080109000C470271
-:1030C000404705F00F4282010020402547070C30A1
-:1030D000204703323C20470280001EF04047028018
-:1030E000E847037C470705781547044488002047D4
-:1030F000040C3047040803C80001470210F04703DE
-:1031000071094703964708C0164000034215002086
-:10311000470202001C0C30200001017A3C204704C9
-:103120000EF0600008704703A00601DAA047090A04
-:10313000007E8800300002C0000C3047038D000381
-:10314000C04000243000F0470308FB470240000362
-:1031500040F54709014287002047040C0C3020202D
-:1031600000013A3C20201004470708040010000426
-:103170005AA102004000A04705603EEFA547050C9C
-:10318000300010070D0803C047020247070520471B
-:103190000334E001470B1C05A047020247020C3034
-:1031A00020040500723C20001047060450800447AC
-:1031B000022021EEE20200401810470403601FAA1B
-:1031C000F5470202C0000C30000405470203C000AE
-:1031D0001004470542D8BD2C00103C7670424702CF
-:1031E00040008047030102C02C00F047050C30204E
-:1031F000000800723C2000A02078470330001047F0
-:103200000501DCA302304702804703C001C0470824
-:103210000C3000040B470203C00052144704300076
-:1032200008033C4702343830A300204001470481A2
-:1032300001C2C0470C0A723C204702A03BF9014082
-:1032400001404705202C0CF0404703078402470348
-:1032500006DEF5E0470A100803C10001547D69A7A6
-:10326000004040470402046000F047028050003CE8
-:10327000470402BCF1D010470601804702723C208F
-:10328000060024017F7440014047030647034EA512
-:103290000018470215A3C2806002002C91A0470BC2
-:1032A0000803C047023C2E78A01002404707D055C3
-:1032B000470490003C470201401DF3F047070347D5
-:1032C00003121540040036687B64403047040CA0AC
-:1032D00047020DD1000147020723C24702034614EB
-:1032E000ABC420470A08154004023C004A5800704D
-:1032F00047040C470203DFE24705803C47020266B1
-:10330000C20BC208470A03BC1047023C294B744059
-:10331000002847042000281EF04000021801A3C224
-:103320000004016060AB470C043C4703164268A0F0
-:10333000004047074010F04702050800803C470264
-:103340001403B4C70010470A03BC100C4702035D06
-:103350007A014706A00E60FEA047023001A7A3C273
-:10336000000803469E81A020470A043C000447024F
-:1033700002C85A0847071E03C0F54705803C4702AC
-:1033800001601D03F0470C295047021E01D95B1054
-:10339000404705800423CCA10247031123C2470400
-:1033A0001D95E0470B90168047021C314CA547083D
-:1033B0000202C002470480003C47043EE1D0470AB5
-:1033C0001B47051F470601C047030620E8A3024725
-:1033D00003B325ED0004016640ABC42047090A474A
-:1033E000050247060147052670034704AFB694015E
-:1033F0000A0242B507C004471064F850104708702D
-:103400001AA302B10001D04703C00003DDB5E047B5
-:103410001164005047083443D05300228051A04724
-:103420000380D6C76EE1D04709081E5BC81047036A
-:10343000040AF0404709FE00404702198F3040025D
-:10344000000166A5E0470A0B00121E8060001428E8
-:1034500000F04702400007470403F0A0408002004C
-:1034600007B0470301C24E9447080180470506474D
-:103470000308F0401847021000062000020C0A0062
-:103480001947020B3A81816002E68405A0204708B3
-:1034900001470810F04704B7470240043CC005004C
-:1034A00002801087400101000260140240044706B8
-:1034B0000300080036C9580C0034001AF0403047A9
-:1034C0000218000CA14000FE504A024702012028C9
-:1034D0008047030480D0A047060100030A7A054212
-:1034E0004702144702F000304702FB00044080030B
-:1034F000F0804047044028800003400100D080470E
-:103500000603000500DE11D84702366C1AF060474A
-:103510000308000D8000020C0A403008000B38013F
-:10352000010002000D85E020470601000F0052E077
-:10353000404702142800F04703B007000902470281
-:10354000C00548200400074141044702401602E03C
-:10355000470A08F680D2100E47021AF040470318B7
-:103560004703200400A5400080501175D04703C0D8
-:1035700067A0140447080B091B28C020470310F05C
-:103580004704C900400E3C38C05A480100D887B5EE
-:10359000F8470303AEE80080470808019F1414476A
-:1035A000041AF040470280180400201E2200A541A2
-:1035B00030005C037B08084702E021CA470A050C7B
-:1035C00056788240470310F04703F0E53C4703403C
-:1035D000C05A40104702A7C30C04000262DC054732
-:1035E0000A0D81D6C9504705A54047029898470261
-:1035F000A004301C0540800018E0470560068501E6
-:103600004709050A32054A4704405A47039993344B
-:1036100000400201C00A40470210B04703084702B9
-:103620000105470A0581FE51D047040AF0403000E9
-:10363000901000040004027E5F40100050E1B828A2
-:103640000400E0400FF812470A0B53E04A4705F028
-:1036500000300070FD3C04000220E00F48100079AB
-:10366000098168040002600CC4471114004EA04098
-:103670000240470607C850C04703904705407EC731
-:103680000008470F020010A040804047063BC005DD
-:1036900042470210D04705235DAF01470E0647079A
-:1036A00044470306470203C850C0180018033E01F0
-:1036B000006000063DC0471104470542470504026B
-:1036C000C005404702188FBC012047030E824716F1
-:1036D000100001C000044702674850C0100001E11B
-:1036E00030104703604718300001470204470223A7
-:1036F000E005401047020DE047160C470705470359
-:103700000C0006674850C0F0001017B201284702AD
-:103710000780471008470B08470222E00540204772
-:1037200002E7C00147234003E850C14703F04704C4
-:1037300002662F90471B10470203C005404703D085
-:10374000470401442FB040471D736850C010470222
-:1037500019F56C47020366EED0471E42C0054030A3
-:103760004702ADE11C47020142AEF08047024047EC
-:103770000E0447090226036850C00007101DFB080D
-:10378000084702068DE80020471038470A0403E086
-:10379000054040003085830C470508470F04470B60
-:1037A000040020736850C1104702804703C00060C6
-:1037B000208E5420470D04470B04000442E00540CE
-:1037C000100051E04703804142650DA0470372009D
-:1037D0009011010101470B104706404705014705BD
-:1037E0004000024706084711204706804705024768
-:1037F00012084722010002470404471110470640FF
-:1038000047050147054047031600014706044722C4
-:10381000020020000847020847031047243C000C20
-:1038200047063047688010470402004047040801FB
-:103830004703020040470408014704302004474D75
-:1038400001470604472103008047050247030C4750
-:103850001F1E472D024703404705014717404705F4
-:103860000147060447030301470604470610471DA6
-:103870008047050247110C30472C0C3020472B0C99
-:1038800030472C0C3020472B0C30470E01470C10D2
-:1038900047100C3020470D02471D0C30472C0C30D0
-:1038A00020472B0C30472C0C3020472B0C30472C5A
-:1038B0000C3020472B0C30472C0C3020472B0C3081
-:1038C000472C0C3020472B0C3047130800040020F5
-:1038D00055470880004247080C302047120C002052
-:1038E0000168554047074002004047070C30471524
-:1038F0000400200F470B0205500447040C302047FA
-:1039000014260168F0C04709661E855447050C302F
-:1039100047180F470DF08047040C30204715016809
-:10392000F0C0470A168F0C47050C3047150C4702AC
-:103930000F470DF08047040C3020471501E8F0C018
-:10394000470A1E8F0C47050C3047150C20200F47E7
-:103950000B0200F047050C30204714266548F0C0E4
-:103960004709601C8F0C47050C30471620200F4775
-:103970000A460200F047050C302047156548F0C0A4
-:1039800047080207548F0C000147030C3047180FFB
-:10399000470DF047050C3020471206470201C8F0DA
-:1039A000C047076047021C8F0C47050C3047170CB7
-:1039B0000F470503C01247020401B0F047050C3061
-:1039C00020471501DAF0C0470423C0470307148FCE
-:1039D0000C47050C304718F04703D9B0A4470280C4
-:1039E000470A0C30204714060008F0470350A78010
-:1039F000020040470A0C30471620300F4703D90019
-:103A0000A047040247080C3020471505780F80476F
-:103A10000250A780024703404047070C3047152457
-:103A2000201B0F470528470D0C3020471501F80FC4
-:103A3000804703078002470C0C3047170D0F4704DF
-:103A4000B020470D0C302047140661790F804703E2
-:103A5000078402470C0C30471504200D0F47035014
-:103A600000A8470D0C302047142004F80F804703AE
-:103A7000070002470C0C30471506203C0F47035047
-:103A800000B4470440050A088047040C302047145E
-:103A90003501C90F8047030100024702026000E5BB
-:103AA0000447050C304715366C1C0F47035000289F
-:103AB0004707588047040C302047141428E80F802B
-:103AC00047030704020060470214E05447050C3026
-:103AD00047166D4CA547035000204704C0040A0850
-:103AE0008047040C3020471529415A80470387003E
-:103AF000024702024702A504471B10044000F0479A
-:103B00000301A9A00004800042471F207808F04765
-:103B1000020800BFA0214040020040471D100420C1
-:103B200060A54702404702A047020100400205503D
-:103B3000471C2007605A8047030780024702026043
-:103B40001E8556471D0340A547035190B04702010B
-:103B50004704F0471D01605A804702D9A3840247F9
-:103B6000020800168F0E470E01470D1C004FA54797
-:103B700004A0703C4706F0470E01470D2601E15AAC
-:103B800080470219B5F43E47041E8F0E471C1C20C7
-:103B9000390F47031900B44704028200F1471C267D
-:103BA00005580F804702F9E38002470360148F0C29
-:103BB000471C1C3C2F0F4703100034470320020210
-:103BC00000F1471C2061DB0F8047028003000247A1
-:103BD0000306548F0C471C3C381C0F4702180090FA
-:103BE000F03C4703028000F1471D04C80F80180015
-:103BF0003DA5E03E006047021C8F0C471C3C380C82
-:103C00000F47031000283C47040190F1471D25CAC7
-:103C10000F8047029005643E47041DBF0C470E0409
-:103C2000470222CF4A6047050400042047031000E2
-:103C3000188F62E1004100421C05A0470E040004F9
-:103C400067FB404047050400360447031000981DF9
-:103C50006CF1024002002C470210014706044702A3
-:103C600008284702100025F03C600042470410027B
-:103C700032DAC34000400185414100050003810064
-:103C80005004470A16A804470206067A7C424047B9
-:103C9000060402DFD348000459F0728147041EE095
-:103CA000504710023FE8F24707801C7AE0A5470220
-:103CB00020080F3001400001C25C05A00401470D3F
-:103CC000100E62DFFA4707102026FC500100C018D2
-:103CD000E13A01000147026E4713214FF547070102
-:103CE0004221D90740007D000F2811000101C026A4
-:103CF000020414471006EBF64707011C05FD03619B
-:103D000000021987F69D000247021F800420470821
-:103D100009470408000628E0182040470408470225
-:103D200002DFE3402000D80B656100940142B50139
-:103D3000470A0847040C002E07FA040247050C0046
-:103D4000042BCCC36070009187BA8900CA0200219D
-:103D5000C20020470F3C0010A0470208470601F0B0
-:103D6000D3410147029FF95100040002B680404749
-:103D700011014EA0470902E8C342020070153EC17E
-:103D8000470306D5A0A047100642D0B94047070414
-:103D90002830A047031805732147036037A1470F58
-:103DA00006000E3BDCB1624705064703DAA00018A7
-:103DB000007C0FBB09006001E035D047020A4708CC
-:103DC00010470602CFE0470D0400190F21194702E2
-:103DD000014247040447080E47040E47021BD04720
-:103DE0000930470304059981720D470202470B030E
-:103DF000000980920447047F60C247060401420321
-:103E0000400500100801804703400340470A0300B3
-:103E10000F80174705386CC302470504009E000E4B
-:103E20000A20100058F047034047101814470403B5
-:103E3000F00347081E3C30A008470290E77F214767
-:103E40000306EED4A447090100DE8047030402DA2A
-:103E5000430247073E056EA04703B819FF414702DA
-:103E60004002B6891447090908941047034040F0FE
-:103E7000024707802C3F5ECB470308A983610147B7
-:103E80000202020F470A0801F7470280470260C892
-:103E90000A0247060E20060CC7104702781BEB01EA
-:103EA00008084702468F0847094B001640470201A1
-:103EB00046387B0201000247053C3C100A470330AC
-:103EC00009807447020363C00F470A20001220478D
-:103ED00003BC7AF947030D47052005DA0A2002479B
-:103EE000020772B4080009405E8F081047080B0DE6
-:103EF000941A4247033C00A008470508001C294BC0
-:103F000008002020D005414702800002C20F470A66
-:103F1000080B06A590470369CAA02047050C00209E
-:103F2000020C042032801809200008C047025C8F70
-:103F3000084709200E1000084703243004014705F4
-:103F400004470220CCA141470218B0C02847040210
-:103F50000F470C17900080001429EA04024705045B
-:103F600047020378D1408000D005782847041C8F91
-:103F70000847090700D04703401472D94703014797
-:103F8000050401CA5B4703110567B8404702428038
-:103F90000F47080180000A760080808000767B80D1
-:103FA0002000024703060E14000DA708180159C58A
-:103FB00073BC006047024C8F084709050EDF008084
-:103FC0004703237B470A26CEFF094000D9E3384147
-:103FD00047072047080518DA47053CE980200038E4
-:103FE000470603DBF7470338A1380147040C0008F4
-:103FF000004047023500501347030403C047022620
-:104000006D7040084047040400047C7005470308B5
-:10401000ABA39C20470203010F040040014020E0B5
-:10402000A00147030683D047022428DA501247052F
-:1040300004002423EC4702800071B17EBD4040475C
-:1040400002418F044703467E0D34470201470604B0
-:104050006410A04707020036DAF0484702500743D1
-:10406000000147040F04470201639CEC342000095F
-:104070008047052065DEA0470901FFF4404000D9D4
-:10408000A720000A47020700CF044702024034017C
-:10409000A04708022666500147094370A047035015
-:1040A0000FA40020470204010F0447042FE0022060
-:1040B000470826760E022247070621EC4704980F90
-:1040C000F420470303808F0647020140010A470698
-:1040D000154001800C62CC4705C047043D40E740D5
-:1040E000C10050A7030020470202410F044702020B
-:1040F0000284AA47055A155001002026FE084704ED
-:104100001000804702077CD34A020081D772000C5E
-:104110000801E001CF040080004247050180080348
-:10412000C047020C41DD20470608002E39D00A475F
-:10413000030800C02820470220010F0400C002002D
-:104140004047040D98523C300240002ACF47070CEC
-:104150000006036C470430073028010001C000EF5F
-:10416000044703029E4705080803C047021401E004
-:1041700024001047061C207000414703A0C14702DD
-:10418000404702010F04470437AA010447021952AD
-:104190003C30470302DA10023002470604EE806327
-:1041A000470315310028C0470201EF04470340359B
-:1041B000040010470403C0470303F04703404705CA
-:1041C00006034A1047030803240020470202400F59
-:1041D0000400604703880121804702723C30470396
-:1041E00068EE402200404703060006021E20001829
-:1041F0000031EF32002160470201AF041047022373
-:10420000CDE0470603C14704EF47034047051401CB
-:10421000E04705A5FBE0470306010F0447036004E0
-:10422000C0804704723C304703027D80470240470C
-:1042300006036A0A4703019B2FF483470203808F1A
-:10424000048047060100010E0803C0044702404BEA
-:10425000F1493000080F28044710140500044706F0
-:10426000030008187A3C300447023BCDF040700050
-:1042700010470204470610470280470503A18A47FA
-:1042800004028047060803C447050A40800070FD09
-:1042900024470280470D02804705028047040180C1
-:1042A0005A3C3040000600FA0A40470380470201AA
-:1042B000470D0142C0470401404704038F470203F2
-:1042C000C010470238ED0BC10002008D28470A01DB
-:1042D0000141840001C027824704068047065A3CFA
-:1042E00030400006027A05490005470204000E47E7
-:1042F000092A81A047031F9380470950470203C042
-:1043000010002401505F4047027003004047023014
-:104310004703044706400002800F000847082000BA
-:104320007A3C30000E00637AA540470280470504BE
-:104330004705184704C00060008F000447091808AB
-:1043400003C05800042C70E3404702909D000847CA
-:104350000E01C00300F04709018B523C300C002CC9
-:1043600003FCC34200380008000C470E020014E0B2
-:10437000F847043FC04704080803C05047020170D3
-:104380000500300031F1000C000440470B40022EC4
-:10439000CA5047041DD080470319523C30204702C1
-:1043A00002DA470230008090000400207047057850
-:1043B0004706065415A8470803470303C0470204ED
-:1043C0002C6A81400002000747030447052800F3D8
-:1043D000C2BF800003D280C0F0470701804702724D
-:1043E0003C3006010C026F50401801470306470697
-:1043F00018180007E2954703400EE0F847095000FF
-:104400000AC0470401DA3C47024010CB470402C00F
-:10441000054442800847060402470222470820005C
-:104420007840204703016D34470418470401485081
-:10443000400100704706071C000847037200701116
-:10444000020101470802470608470402470A0447D9
-:104450000220470680470C0147060447040147082D
-:1044600002C0470310471702470608470B084716C4
-:104470000247060847040247060847062047068009
-:10448000471F0300070004470B7C471D03470F6CC1
-:10449000470CA84705024727204708044722024047
-:1044A000C0470408014703020040470408014705CC
-:1044B000200447058010474C03470D70471F0147F4
-:1044C00003044709D0470340473A02471208470D03
-:1044D00080470A80000247030247058047050247DC
-:1044E0000608470620472204470D401030C04718F1
-:1044F000067B38470240626D6140470383DC054715
-:104500000430C0471803DBD0470301AB2022C0476B
-:104510000203C0008047021030C047160103F8ECC8
-:1045200000B001804702016200060083D6000A0045
-:10453000180030C0471703F83001F0470903C20DD7
-:104540001047021030C047160108805A00B014000E
-:10455000AA49A16040030083C447030C0030C04750
-:104560001702002D01800800064B6C028003000337
-:10457000C247041030C0470A80470D14EC50104762
-:1045800002A2EDF540470383CC054702800030C00E
-:1045900047193AD8F04703A1E420470303C2008B30
-:1045A00001001030C04716010A805F8047080300F1
-:1045B00083C60847032030C047172100281047084A
-:1045C000020003C00547031030C0471002470980AE
-:1045D000470502470483C647025C470230C0471ABA
-:1045E00010470503C0470303C2470280001030C0D4
-:1045F0004717080969470740470383D605814703E2
-:1046000030C04718215D470720470303C0000A4711
-:10461000021030C0471708805F181047071000834A
-:10462000DC4703800030C0470901470E227A008032
-:104630004707600003C2470201001030C04717045B
-:10464000000A1847024010F1296047060A47033064
-:10465000C0471801504703040F00014047091030BC
-:10466000C04717043C585010018010F16A0680477B
-:1046700004014702180030C047183C105080470220
-:104680000F00414047091030C04717043C5878A03C
-:10469000470210F121404703A906F380004800308B
-:1046A000C047183C105847030F00400280002019F3
-:1046B0003FE547028C1030C04717043C5C470410AC
-:1046C000F121604047028BACE00A470330C0471835
-:1046D0003C1000C047020F00400280002002A7B536
-:1046E0000A47021030C04717043C5C470410F160D1
-:1046F000470490B788470430C047183C1047040F60
-:1047000047050222EFF54702201030C04717080284
-:104710004B9980470210F16047048BAEF81B4703AA
-:1047200030C0470901470D0210DA1047030F00405F
-:1047300047030202A5A50A47021030C04717080226
-:104740005A470410F168470320A907D19A020C00C8
-:1047500030C047170122EB470220000F47048000BA
-:10476000193EA58002081030C0471708826B470425
-:1047700010F1284704A93CE00A470330C04718114C
-:104780005D47040F0040470280022A268000020095
-:104790001030C04717183DC04704169947058001DF
-:1047A000B50A08470230C04712028C000800083CD6
-:1047B00020470303096B47053FC1ED9047021030C6
-:1047C000C04709056047081C470260470501801083
-:1047D000F1624702060083DE4703180030C0470934
-:1047E00040470802803047068000010F0041C04763
-:1047F0000303C047041030C047130C7C003047034C
-:10480000100080800AA13847020300A940804702B7
-:104810000C0030C0471202C278003047030847023C
-:10482000C00AA040470429404703081030DE471063
-:10483000084702404709C060F180470483C4470528
-:1048400030C2470F01140003470A4000F0800008FF
-:10485000470203C20D0B47021030CE470908470933
-:104860005C470A2A500447030183C44702404702B9
-:1048700030C2470908470620020247028047062047
-:104880000045A0344702800003C20947031030C02E
-:104890000700A0470F804E78470720002A5047099D
-:1048A00002470230C04709084708B2427847090565
-:1048B000A03C402847081030C04712800E470C0229
-:1048C0004702808083D6470530C047090847062045
-:1048D00000F24000084704D0002047030240008057
-:1048E0000003C0470202001030C0074703020F78E0
-:1048F00004470220470854050030470680470A1C39
-:10490000000C0030C04704020F080247082000B323
-:10491000823A8020470680470580470410A204475A
-:10492000071041F700280010470380A04705080042
-:10493000080379000447095981A50A40470ADFB4F2
-:104940004047057147060800608369D0B0470919E0
-:104950008D0D90470902248380280044090AF9003C
-:10496000A0018047030800083DC080E0018020F5D9
-:10497000470306005A64A0470A02E7B3C04000108C
-:10498000222FDA11B047050847023C2071B04702D8
-:10499000A0F080038047021A74470B02AA771447DD
-:1049A00003014148504702804704304704A01000EB
-:1049B0002A57A86047035A44850A470902AA0C02ED
-:1049C0002C4702014000D8B000804704204703F183
-:1049D00047030F50F5C047031A640090470A189226
-:1049E000D428000101406A50104707083DC03047F5
-:1049F0000320F5806047035A4488470B341EB46C8B
-:104A0000470223401BD8F0470608203C00304703EC
-:104A100020F08047041A65010B470940053EC04756
-:104A200004046B8047020800204708144703020073
-:104A30000347020CC5A8000D404707080807C047F8
-:104A400004035810470202003C4708084704404747
-:104A500003332CBB0E008047080112862800014258
-:104A600094DB4703C0470F08470780470A1E804072
-:104A7000470202003B00900080471028470660472D
-:104A80000850A55EE060000208BBDA80E04707013D
-:104A9000E94E518047061047023C1C07470B85062C
-:104AA0008447042A6EF04706744702AA78F847073D
-:104AB0002847023C0207804709025A0054700070E0
-:104AC00047038047070108F46A470420F182470240
-:104AD0000240029DE7470280470702A503424000CB
-:104AE000304703F000024707980B470420F001C04D
-:104AF00047028002830080014708030F52A047034A
-:104B00000C3E6A47090294DE18470A5414850A4786
-:104B10000AF0983C470303C360470901541FD0477C
-:104B20000990144702904709030F13804702600C55
-:104B30003C4E30000180470614C8470201804703FD
-:104B4000E00846005A45E04702184708F0470503C9
-:104B5000C0470A02BC1CD04706220020001A74007D
-:104B6000084709030F13A60447020C3C4A98104754
-:104B70000505000294DD51E000100AF1844704436A
-:104B8000C48047020C4708F0043C20470203C010D1
-:104B900010804705020001540909470305F0A047AA
-:104BA000043C010D0B000C4707030F12806030001E
-:104BB0000C3C4AB180C8470715CA5004470220F58B
-:104BC00080038003005A65E047020C4708F0044761
-:104BD0000403C010100014470602BC1C084704F070
-:104BE000470302001A54000B00044707030F178005
-:104BF00047030C3C5E47028047060294CDF9F0471C
-:104C00000903C4470CF0470503C0470A01541F704D
-:104C1000D0470603470203C04708204702030F1688
-:104C20008047030C3C5A0001C8470714FAB8E04714
-:104C3000080183DE47021C4709F0470503C047030C
-:104C400014470602BC3CB890470983C0470B02AA30
-:104C500017A06047020C3C5A018047060101E8FF9B
-:104C600071C0470507804704010010804708AA0467
-:104C700004470303C010470A542C0847060447069C
-:104C800080470C200400200AA85E181400C04704C6
-:104C90000108F54C704704A76000044705080008A8
-:104CA000470A0420001002A810008A0040470404AC
-:104CB000006419F8F0000100A0470A08470E083DFB
-:104CC00060000447052000083DC047048005E0005F
-:104CD000380004C3FCA04711483C00F04708083CDA
-:104CE00047062BA342D000043C3E470B020F7847F7
-:104CF0000360083D6010000180470A05804019B03C
-:104D000006000600C3C4E04702184707020F084721
-:104D100004083C00F8470B700008470201EB4047CD
-:104D200002243C471230083CE070470280470440B0
-:104D3000083DE0304702802845E04704C3C4A9810C
-:104D4000470F22083C20080014C04705083C2047B4
-:104D500003C0242BA002C047023C010108470902FE
-:104D60000F304704083CE001F04707083C60470368
-:104D7000204009B047023000C3C4A9984709020F78
-:104D80004705083C2001E04707083C20470521EB88
-:104D90004047033C0101470D20044702183C6000D6
-:104DA0008008470405470905E2E0284702C3C5E03B
-:104DB000470D3C384702083C20014705024705B033
-:104DC0004703808BA06047033C4713083C40F847EB
-:104DD00008083CC047042A01A440470201C3C5A0FB
-:104DE0004711083C20F04708083C20B047032050FA
-:104DF000A04703043C471202083CC04707010008D3
-:104E00003DE0470501B1404703C3C5A0184710085E
-:104E10003C470A083C4702C047033B7C2047033C11
-:104E20000103470D0E010020083C60470380470541
-:104E3000083CE047038400012447020200AA85A140
-:104E400001000C470B028000083C200004470708C3
-:104E50003C2010E147020200B447042A8100080008
-:104E60000447027200901103010147080247060837
-:104E70004704024708078004470220470680470C82
-:104E800001470604470401470D10472A0847160248
-:104E9000470608470402470608470620470680479A
-:104EA0001F024703044729034729A0472D10471E27
-:104EB000020040470408014703020040470408017C
-:104EC0000780470320044705801047450147060334
-:104ED000470D204718024706034703044709C04708
-:104EE0000340472B38472108470B400080470A8082
-:104EF0004705024705804705024705180847062071
-:104F00002C471101470F04470D400030C0472B10BC
-:104F100030C0472C30C0472B1030C0472C30C04722
-:104F20001004471801001030C0470F80471C30C0E4
-:104F3000472B1030C0472C30C0472B1030C0470ED5
-:104F400010471D30C0470A0200140B471D1030C027
-:104F5000470C28E1471E30C0471B04470F1030C0E4
-:104F6000471B0A471030C0470B20280B471D103045
-:104F7000C0470C14E1471E30C0472B1030C0472CEF
-:104F800030C0472533069047031030C047242031F6
-:104F9000A480470430C0472B1030C0472C30C04796
-:104FA000253C0247041030C0472304803C144705C9
-:104FB00030C04708804721801030C0472901400099
-:104FC00030C047270147031030C0472C30C0470A84
-:104FD00080471D0A47021030C0472801470330C0F0
-:104FE000471D0300F047070547031030C0471FF176
-:104FF00047070D9A470330C0471702A809704705B5
-:10500000404706010800041030C0471180470501E1
-:10501000544147041000796047050801000800303A
-:10502000C047150447023C47060B404703802A81CE
-:10503000000847021030C04715020007C058470457
-:105040001008684704AA85E199470330C047183C17
-:105050001047050301428047023C47051030C04716
-:105060001707C04A470410086A06C04702C3C5A014
-:10507000470430C0470F0447053000025A40470537
-:1050800003014047033C47051030C0470F0A47075C
-:10509000065848470410086B66804702C3C5E00005
-:1050A00080470230C0470FF047083C100847040B08
-:1050B00041428047023C0147041030C0470F10476F
-:1050C0000707C05A38470310002A06C04702C3C466
-:1050D000E018470330C04711C04705025A50014746
-:1050E000040B41428047023C010147031030C04796
-:1050F0000E50470280470506585E71C047021000F7
-:105100002B66C04702C3C4AF00A0470230C0471798
-:10511000025A504705034704013C47051030C04779
-:10512000100180470506584870E0470210002847E4
-:105130000301C3C4E04702180030C0470B083C47D6
-:1051400009010001409847040100034047023C3632
-:1051500047041030C0470B083D6047090447023838
-:10516000E0470210002800404702C3C4E7470E3C56
-:1051700047021010D9470D04470506C04702080230
-:1051800047112000034B470D02470502800010081D
-:105190001CE0470D0200084704020020470302807C
-:1051A00047041047041BB842C04702108090090210
-:1051B000470B1C470C01470A073E470310149795FD
-:1051C00098471301E04707016BCA999047093016C9
-:1051D000B500024713F0470701606999904705063B
-:1051E000804702103488470F084704010020470415
-:1051F000040002A8100847030A008364471580478B
-:105200000401E04705020202A85C1847030A03797B
-:1052100042804718D9F0470702003C1000E04704DD
-:10522000704704069E901B47110B4B80E047070711
-:10523000C05C001000040807B0470301A94F800AB2
-:10524000470E053203D42008B002470508003C474A
-:10525000020A470240A08047042801DD80470F3042
-:1052600003D56A7880024704300007C05C00044719
-:1052700003A37847051C95471E3C4702A047090E2B
-:1052800001AD1A470E0160470378470817C05C005C
-:10529000104708100617900A00184707020F470525
-:1052A000A0014C470602900147021000E0470208A7
-:1052B0000B38470534A01B4709920F784705824DEC
-:1052C000470601470204000C0010470303BC00041A
-:1052D00047020216950A471103D0470220470406E9
-:1052E00004003C2047032020F08047040237800957
-:1052F000471004001A788147050104183C604703F1
-:105300002020F78166800201802CE04703023FC025
-:105310004709024703D070002047040247062020B7
-:1053200020F00142808000138299090200443FC0AE
-:105330004709010004001A8180470B01002020F377
-:105340000366C00012A34605471340470A3C4702C4
-:1053500080003020F047051E810029471004021A02
-:1053600001E0470604183C60470420F780E047024C
-:10537000101E8CC0470E01470301C009E0284709F1
-:105380007008002060F08044008000084E810A0010
-:1053900080470B02470204021A79F004470B2000F1
-:1053A00020F3800700800004B408471202D050A008
-:1053B0004707603C2047032060F080470250001000
-:1053C000038D471104000A50A0084706183C4047C7
-:1053D000032020F7470410001D80470E01470203F9
-:1053E000C25010A04707229447048060F080470213
-:1053F00002003040C79F470D02800007C0CAD04757
-:1054000007081A9408470201E020F7470303103009
-:10541000941F0E471003C06047020447050C029416
-:105420000050A0006060F047052001ED80471007A4
-:10543000C1EE01E0804705080A94084702010020F8
-:10544000F7470306100014A5470218470B0147024F
-:1054500003C040508447060C01680C50A00038601F
-:10546000F0470502810D1F40470C02470207C0EAC2
-:1054700000B84705020A0A940100A0470220F74736
-:1054800002084000029EE00A471042A81030800047
-:105490004047112047040B47100AA85A001000C0CB
-:1054A000471150471543C010008047083C4704018E
-:1054B000010F34028047020142000E47100C3C5A93
-:1054C00001904707083CE04705073140470220812B
-:1054D00055E0471123C0003047093C000800400058
-:1054E0008000A0000347160C3C5A00014707083C07
-:1054F0006071804703512047070E471023C04702C1
-:1055000001C047073C20008080000FF0A1404717F2
-:105510000C3C5E4709083C40019047028FA52002E1
-:1055200080470401471123C0101047093C2047035E
-:10553000010103B8001000402042E09047100C3CED
-:105540004A99804707083C40470402074702200069
-:10555000100056879E471023C0101047093C0008D2
-:105560004702C04702014047031C16B147110C3CDB
-:105570004A984708083CC0584702804707102DD07A
-:10558000471143C0470B3C47028000404704034794
-:10559000160C3C4E470201804705083CC000100134
-:1055A000470520470718470E43C2E0470A3C201032
-:1055B000470501428047050D47100C3FEE4709089B
-:1055C0003CE0984706028047050110470C40471A07
-:1055D0006300294000100020470B704708804711E6
-:1055E0001200A9408018470D4002470408472720B1
-:1055F00001470438471206470618004047250300B4
-:105600004003C20010472701470283D60018470E07
-:1056100030470401470C04470540471B80470B02F5
-:10562000470402470240470F0F06804703083C002B
-:105630000147050285470B044702040281C0470960
-:105640000102007A804703083D40008047040102C0
-:10565000470B074703A804B18A470D280002083CFE
-:1056600020014702C0470408403C00088000802A0F
-:105670005034024702840281E108470C06470308C0
-:105680003C6001E000C047034000183C605010142B
-:105690008025A04702404702E804B981470F50081F
-:1056A0003C470B3C20014702402AA0404702010032
-:1056B0000280C0471050083D607A000180470518FD
-:1056C0003D4000A001002AA73047020405E804F08D
-:1056D0000A2018470C7000483C470702700023C09E
-:1056E00000700447022E7B384703060294E00E4701
-:1056F00010083CC047090BC140000A47022240285D
-:1057000000054702E826B00147031006B0470480B1
-:105710007E80470301541847080800B01908D04795
-:1057200005034047022A81470580BEF198470202DF
-:105730000276803847022295EA01E10080470401A1
-:105740000A75E971F0470401E04002012A96E780FA
-:105750004705D010470280AF0654300002017C0B91
-:10576000470601470202F43C47048050BC604702F0
-:105770000430E6D047048286B01C470305337668C0
-:105780004703147D470780010141791808C0004094
-:10579000A187E0470391E7B18047032004A14704B4
-:1057A0008412822847020968090880470702BC2A38
-:1057B0007180470401E047033E820919470380A531
-:1057C000E847030200F20E6C47020A940139E1C077
-:1057D000470714FA01C04705E047033E94C0094754
-:1057E0000303C14705AF0E42600202096808704713
-:1057F000080154087047034000FC470515910F4706
-:105800000343C4A0470304053A462805000A940050
-:1058100080470802955E8008000400116447055423
-:10582000A8470403C10100180008550A47042014C2
-:105830001C470601470202BC3A70804702050080FF
-:1058400002470303C0001E470343C5AD9A4703A5A3
-:105850001F86470302BD6950A0470580470215EC2B
-:1058600080B047020501214040470283D6000A4725
-:105870000303C0050A4703403604204702083C20C2
-:10588000084702804702024703D82F08F04702A8C2
-:10589000503C002047023C00D59B470343C488018D
-:1058A00047020220D2A0644702083CE0504702C0F1
-:1058B00047040148D47A701000042475F847043C6A
-:1058C00015C38A470303C0470310000403CC0040FC
-:1058D00040083C4708040001C019D847030500BC34
-:1058E0000020008028B5918A470343C5A01E001000
-:1058F00042205220600050283CE07980018047041B
-:105900000102E8EBB80001800007A1600006001466
-:1059100007E947021847023D000D000200050AC0D2
-:105920003C47047C10F0470702A809D0A540002C92
-:10593000BD746247022030CE8D47044021A01B4732
-:1059400003A557542802002040F980B047040147BE
-:105950000202955D800847022C3DF7604020002040
-:10596000F4950A4704720080110062002F824702FA
-:105970000103470410000800101002020400220076
-:1059800020200008042404470708044703200400DB
-:105990002020202400082C040C0C47030410100CB9
-:1059A000001000084703080847030830003030049F
-:1059B000002226060408000404000447042008000E
-:1059C0000C000828000C000800280800100808280F
-:1059D00008470228282847020C101010240002242F
-:1059E000242C2C0400282C21010800113010200048
-:1059F0000422022247032020203004083010001027
-:105A00000800040404040004000447060800040815
-:105A10000808470208470224240400042C2C2828E4
-:105A200047022101211004083010201047022000F5
-:105A30002020080420202000044704040800040457
-:105A400004040010101010100006081008080302CB
-:105A50004702040408020424242404002C2C2820D7
-:105A6000020021012100020A200028000802282843
-:105A700020300400303010200002470204000A02E7
-:105A8000040400140006101010080447020808005F
-:105A900008020C040C2C02022C2C2C2C0006282AA8
-:105AA0002A470208220022000C022002202047027E
-:105AB000202030300202507040000A0E0C080C0406
-:105AC00047030400100808101002120400022020EE
-:105AD00020080824242400020247040A0E47030277
-:105AE00004470206240608082C2428280202201055
-:105AF00030100E0A201028084702280020200A082B
-:105B0000203030180400021A0A040A0A0C040C0C93
-:105B1000470208082808020C080828080C02280A6E
-:105B20002802000808022008080020282010000C85
-:105B30001010041008020404280C04082820212155
-:105B4000080031303020060E222222200E06204787
-:105B50000220040C101010000A4702040404000C78
-:105B6000040447020A02470208000608080A02085D
-:105B70000800060406040206082A284703212131EA
-:105B800030060A30302020020220202000080400C5
-:105B90002010000600100010000C0400040404068D
-:105BA0001614101010020618100808014702080405
-:105BB000040A020404040604082A0C2A220A022306
-:105BC000232322000822222A200A02282A30100435
-:105BD000001010000802020008080008000C040C65
-:105BE0000C0206180818180400081808080A020C05
-:105BF0000C0C0600080E04220E0A06222A2222009D
-:105C000008222222220C022222222202003200102A
-:105C100010000240504000020C08080C04080A045E
-:105C200004470308101012120400024702200E0459
-:105C3000240424200C0E02000202020C02020202C2
-:105C400004020602060602080A262A08080B30305B
-:105C500030300608202028284702820080010300F7
-:105C600002282828000208082818180E091A1A0AFB
-:105C7000080208080C0C0C00020C002208000E029E
-:105C80000A22020603020222020808020222020875
-:105C90000822203010020410140404080004000834
-:105CA00008040808000121020011301020080E022B
-:105CB0002202000A084705021000101002470210D5
-:105CC00000040A0C04040006080802000A02060088
-:105CD0000A0A020E0A000606060200040A0A0A025E
-:105CE000020013011130040A0030002002470508A9
-:105CF0000610470306470502081000044703141462
-:105D000010100002181018180147020804060200BB
-:105D1000060606020C080A0A0A00080A0301032004
-:105D2000470202200A020A001A0A1A120400081A7C
-:105D300008080002080808080800080C0C0C0204F7
-:105D40000C001810040010180010000204060606CB
-:105D50000808060202000A0C0002000247032000A5
-:105D6000220C02000212000200121212024702402C
-:105D7000424047020C0808080400020404044704D7
-:105D80001012120400124703020004060602470222
-:105D9000020202024702024702060402040606004B
-:105DA00002000A021A0A00011212003204470220FD
-:105DB0000820000208080808020008000810040370
-:105DC000121A120847040402020206060202000424
-:105DD0002202020006010002000247022200020A1B
-:105DE00047023A2A321A020404120404470408083B
-:105DF0000400080001010200111010470204020211
-:105E0000024708024702101002001010001000069E
-:105E100004060602470202020A000600080A0402FB
-:105E20000002040400020004080A0A10020013130E
-:105E300013020447020247061047020647021000F9
-:105E4000060010001047020A4702144703141410FA
-:105E500004000218001818000110120616020006AD
-:105E60000602000400080808470202010101470475
-:105E70001018100200181A1A0A04000A0208020078
-:105E8000020008000847040404020404040010048B
-:105E90000010101210000216060606470302470201
-:105EA000020408080847061004021000101002003F
-:105EB000100202020400020200020008080808089A
-:105EC0000002040404044704120204001210101219
-:105ED00002000616060247030247060400040004F7
-:105EE00004001402001818181A0001120202020419
-:105EF00000024702080002080800080247050401E2
-:105F000012021210470210120612000206060006C4
-:105F1000000447022000060120002047041018104A
-:105F20004702383A320A0204060606044702110103
-:105F300062003F8247020103470802470802470602
-:105F40000101470620204706202047060420470677
-:105F50004004470740470E858447070147068047AE
-:105F6000088047060202470602470802471E044708
-:105F70000804471E0404471E204707202047062028
-:105F800020470601470801473601014716424708E6
-:105F90004247060202470E212047062021470610ED
-:105FA00020470614144706505047061010470610A5
-:105FB0001047069511470610944706909047061023
-:105FC000104706021047060202472604044726042B
-:105FD000470804471E204707202047062020470681
-:105FE0000101472E01470801471E42424707024769
-:105FF0000630204706303047061111470614104777
-:106000000650144706105047061010470611104757
-:106010000610114706949447061090470610104743
-:106020000612104706121247061010470710470EB7
-:1060300004470804472E0404472E20204706212049
-:1060400047070147260101470882008001034720D6
-:1060500052024706305247063030470610104706B6
-:106060001110470604154706404047160101470E28
-:1060700084470804470E1202470612104706101202
-:106080004706101047061010470604144736044709
-:106090000804472E202047060121471E014708011A
-:1060A000471610470712104706301247067272470C
-:1060B0000710470E0447074105470740470E0147B1
-:1060C000080147160404470602470802470E020269
-:1060D00047061047071010470610104706101047D4
-:1060E0000710476621204707214716010147161070
-:1060F0004707101047061212470620304706422075
-:1061000047074247164140470701470E010147260E
-:106110000202471602470802470E104707101047B1
-:10612000061010470710475E204707212147081136
-:106130000262002F824702010347081B1B47041F0E
-:106140001B4704041F47101B47051B1B47041F1B4D
-:1061500047041F1F47101B1B47041B1B47041F1F1F
-:1061600047041F1F47051B470A1B1B47051B470406
-:10617000040447041F1F47051B470A1B1B4704E471
-:10618000FB4704E4E447041FFF47051B470AF919CE
-:106190004704E4F94704E4E44704F7F747051347E5
-:1061A0000AF9F94704E4F94704E4E44704F7F74738
-:1061B00005F3470AF9E9470414FD47041E1C470488
-:1061C000F7FF4705E1470AE9E947041CFD47041EBC
-:1061D0001A4704EFFF4705E1470ADDC947041EDD02
-:1061E00047043E3A4704BDBF4705A9470ADDD947E2
-:1061F00004A2FF4704A6A24704BDBD4705B9470A4C
-:10620000FFDD4704A6FF470484864704BDBD47045D
-:1062100004BD470AFFFD470406FF47040404470482
-:106220003D3D4704043D470AFFFF470406FF47047E
-:1062300004044704FDFD470404FD470AFBFB470532
-:10624000FB4704244705FDFD4705F9470AFBFB47CB
-:1062500004FBFB4704FFFB4704FFFF4705FB470A1E
-:10626000FB224704FBFB4704DFFB4704FFFF470516
-:1062700022470A22024704FBFB4704DFDB470426D0
-:10628000FF470522478002820080010347022C2C31
-:1062900047041F3E47041F1F4704CCDE4705C8477D
-:1062A0000A3E2C47041F3F47049F1F4704DEDE477A
-:1062B00005C8470A3F3E47041F3F47049F9F4704C6
-:1062C000DEDE4705DA470A373647040137470489D7
-:1062D0008147045ADA470552470A76364704C1F621
-:1062E0004704A9814704FAFA4705D2470A7474475C
-:1062F00004C1F44704A9E94704F2FA4705F2470A42
-:1063000074744704E5F44704EDED4704F2FE4705D5
-:10631000F2470A7474470427744704CF8F47047602
-:10632000FE470570470A747447041F7447049F9F13
-:10633000470474F6470574470A746447041B74479E
-:10634000049B9B470476F6470574470A6060470440
-:10635000197047048999470476F6470576470A601D
-:10636000604704096047048989470476F647057643
-:10637000470A64644704096C47048189470476F638
-:10638000470576470A76764704097E4704818947A0
-:106390000476F6470576470A76764704297E470451
-:1063A000C189470476F6470576470A777647047F22
-:1063B0007F4704F7FF470477F7470576470A77607A
-:1063C00047045F7F4704B7FF470477F747056047F7
-:1063D0000A612047045F7F4704B79F470461F7477E
-:1063E0000540478002110362003F824702010347D4
-:1063F000838282008001034783822244B201060027
-:1064000047000000000000000000000000040240FF
-:10641000000400000A00090000140240000400000B
-:106420000A000900000C0240000800000B000900EF
-:1064300000080240000400000A00090000140240A5
-:106440008000000007000900000002400200000078
-:1064500001000900001C02402000000001000000B3
-:10646000001C024008000000010000000000024083
-:106470000008000001000000000000080080000883
-:106480000000010800800108000002080000040864
-:106490000000080800000C080000100800001408A4
-:1064A0000000180800001C08000008001000180078
-:1064B00020002800300038004000480050005800FC
-:1064C000000000006410B71DC8206E3BAC30D92618
-:1064D0009041DC76F4516B6B5861B24D3C710550C4
-:1064E0002083B8ED44930FF0E8A3D6D68CB361CBEC
-:1064F000B0C2649BD4D2D38678E20AA01CF2BDBDA0
-:106500004932435F504D49435F4D414700537475D5
-:10651000636B20627574746F6E2072656769737443
-:10652000657220697320696E76616C69642C2063E2
-:106530006C656172696E672E00427574746F6E20AF
-:1065400069642000697320737475636B2100427560
-:1065500074746F6E20776173207075736865642042
-:106560006F6E20626F6F742E20427574746F6E2090
-:10657000636F756E7465723A2000446973706C6164
-:106580007920627573792D776169742074696D65FE
-:106590006F75742065787069726564210046504794
-:1065A0004120636F6E66696775726174696F6E20F2
-:1065B0006661696C65642E00446973706C61792052
-:1065C000696E697469616C697A6564206166746575
-:1065D00072200020726574726965732E00446973BD
-:1065E000706C617920696E697469616C697A617433
-:1065F000696F6E206661696C65642E004352455375
-:106600004554206E6F74206C6F7720647572696ECC
-:10661000672072657365740043444F4E45206E6F6A
-:1066200074206C6F77206166746572207265736583
-:106630007400435245534554206E6F742068696757
-:1066400068206166746572207265736574004344E6
-:106650004F4E45206E6F74206869676820616674CC
-:1066600065722070726F6772616D6D696E6700454B
-:106670006E61626C696E67203676362028446973D5
-:10668000706C617920564444432900456E61626C08
-:10669000696E67203476352028446973706C61799F
-:1066A0002056444450290044697361626C696E67E6
-:1066B000203476352028446973706C617920564403
-:1066C0004450290044697361626C696E67203676B4
-:1066D000362028446973706C6179205644444329FC
-:1066E000002E2E2F7372632F647269766572732F7A
-:1066F0006932632F6932632E63002E2E2F7372630B
-:106700002F647269766572732F6932632F69326301
-:106710005F68616C2E630046617374204D6F646521
-:1067200020506C7573206E6F7420796574207375BA
-:1067300070706F72746564002E2E2F7372632F64F5
-:106740007269766572732F7065726970685F636FC6
-:106750006E6669672E6300616464726573732000FE
-:10676000206973206F75747369646520737973741D
-:10677000656D20666C617368006661696C65642094
-:10678000746F20657261736520736563746F722026
-:106790000050726F6772616D206661696C6564207C
-:1067A0004000496E76616C6964206669726D77613C
-:1067B0007265206465736372697074696F6E21001D
-:1067C000436865636B73756D6D696E67206669728A
-:1067D0006D77617265207570646174650043616CEA
-:1067E00063756C6174656420636865636B73756D54
-:1067F0003A2000496E76616C6964206669726D7733
-:106800006172652043524320696E205350492066CF
-:106810006C61736821007072765F65726173655F89
-:106820006F6C645F6669726D776172650070727615
-:106830005F77726974655F6E65775F6669726D77A1
-:106840006172650057652772652064656164004365
-:106850006865636B73756D6D696E67200020627982
-:106860007465730D0A00436865636B73756D202D45
-:106870002077616E746564200020676F7420004F7C
-:10688000757220696E7465726E616C20666C6173DE
-:106890006820636F6E74656E747320617265206228
-:1068A00061642028636865636B73756D2066616938
-:1068B0006C656429212054686973206973207265AE
-:1068C000616C6C792062616421004F757220707276
-:1068D0006576696F7573206669726D776172652080
-:1068E000757064617465206661696C65642C2061F3
-:1068F000626F7274696E67207570646174652E00D2
-:106900004E6577206669726D7761726520697320C4
-:10691000617661696C61626C6521004C6F616469CC
-:106920006E67207265636F76657279206669726D35
-:1069300077617265004661696C656420746F206CD4
-:106940006F6164207265636F766572792066697223
-:106950006D776172652C20737472696B65206F6E40
-:10696000652E2054727920616761696E2E00466140
-:10697000696C656420746F206C6F6164207265635C
-:106980006F76657279206669726D776172652C2009
-:10699000737472696B652074776F2E20547279203E
-:1069A000616761696E2E004661696C656420746F71
-:1069B000206C6F6164207265636F76657279206602
-:1069C00069726D776172652C20737472696B6520D2
-:1069D00074687265652E20534144205741544348E2
-:1069E0000048415244204641554C54006578697432
-:1069F000207374616E646279000D0A0D0A0D0A003D
-:106A0000E29688E29688E29688E29688E29688E2A4
-:106A10009688E295972020E29688E29688E296880A
-:106A2000E29688E29688E29688E2959720E2968838
-:106A3000E29688E29688E29688E29688E29688E274
-:106A4000959720E29688E29688E29688E29688E218
-:106A50009688E29688E29688E29597E29688E29692
-:106A600088E29688E29688E29688E29688E2959790
-:106A700020E29688E29688E29688E29688E29688F6
-:106A8000E29688E29688E29688E2959700E29688F8
-:106A9000E29688E29594E29590E29590E29688E2FB
-:106AA0009688E29597E29688E29688E29594E29538
-:106AB00090E29590E29590E29688E29688E295972A
-:106AC000E29688E29688E29594E29590E29590E2CB
-:106AD0009688E29688E29597E29688E29688E29513
-:106AE00094E29590E29590E29590E29590E2959DE2
-:106AF000E29688E29688E29594E29590E29590E29B
-:106B00009688E29688E29597E2959AE29590E295CA
-:106B100090E29688E29688E29594E29590E29590CC
-:106B2000E2959D00E29688E29688E29688E2968851
-:106B3000E29688E29688E29594E2959DE29688E254
-:106B40009688E29591202020E29688E29688E29548
-:106B500091E29688E29688E29688E29688E29688A4
-:106B6000E29688E29594E2959DE29688E29688E224
-:106B70009688E29688E29688E295972020E29688A9
-:106B8000E29688E29688E29688E29688E29688E223
-:106B90009594E2959D202020E29688E29688E295E1
-:106BA0009120202000E29688E29688E29594E29572
-:106BB00090E29590E29688E29688E29597E2968830
-:106BC000E29688E29591202020E29688E29688E27B
-:106BD0009591E29688E29688E29594E29590E29506
-:106BE00090E29688E29688E29597E29688E2968807
-:106BF000E29594E29590E29590E2959D2020E296B0
-:106C000088E29688E29594E29590E29590E29688E3
-:106C1000E29688E29597202020E29688E29688E224
-:106C2000959120202000E29688E29688E2959120B6
-:106C300020E29688E29688E29591E2959AE296881B
-:106C4000E29688E29688E29688E29688E29688E262
-:106C50009594E2959DE29688E29688E29688E2967F
-:106C600088E29688E29688E29594E2959DE296887D
-:106C7000E29688E29688E29688E29688E29688E232
-:106C80009688E29597E29688E29688E29591202090
-:106C9000E29688E29688E29591202020E29688E2AA
-:106CA0009688E2959120202000E2959AE29590E264
-:106CB000959D2020E2959AE29590E2959D20E2959F
-:106CC0009AE29590E29590E29590E29590E2959007
-:106CD000E2959D20E2959AE29590E29590E295905A
-:106CE000E29590E29590E2959D20E2959AE295904A
-:106CF000E29590E29590E29590E29590E29590E28F
-:106D0000959DE2959AE29590E2959D2020E2959AD4
-:106D1000E29590E2959D202020E2959AE29590E2FE
-:106D2000959D202020004C617374206669726D77F8
-:106D300061726520626F6F74207761732073746174
-:106D4000626C653B20636C65617220737472696B61
-:106D5000657300486F6C6420646F776E2055502017
-:106D60002B204241434B202B2053454C454354207C
-:106D7000666F72203520736563732E20746F2066F2
-:106D80006F7263652D626F6F7420505246004669C2
-:106D9000726D7761726520697320657261736564D5
-:106DA000005761746368646F67206361757365641D
-:106DB000206120726573657400536F667477617229
-:106DC00065206661696C75726520636175736564C1
-:106DD0002061207265736574004661696C6564208A
-:106DE000746F207374617274206669726D7761725A
-:106DF000652C20737472696B652074687265652EEA
-:106E0000004661696C656420746F207374617274EC
-:106E1000206669726D776172652C20737472696B7C
-:106E2000652074776F2E004661696C656420746F0D
-:106E3000207374617274206669726D776172652C5B
-:106E400020737472696B65206F6E652E00466F72D9
-:106E500063652D626F6F74696E67207265636F760C
-:106E6000657279206D6F64652E2E2E00426F6F74EF
-:106E7000696E67206669726D7761726520402000D7
-:106E80002E2E2E0D0A0D0A00426F6F742062697457
-:106E9000733A20004153534552543A20003A00417E
-:106EA0005353455254004153534552544E002A2ADD
-:106EB0002A20575446200053544D33320053544D2A
-:106EC0003332207065726970686572616C206C691C
-:106ED0006272617279207472697070656420616E8B
-:106EE000206173736572740069746F6120627566E6
-:106EF00066657220746F6F20736D616C6C002E2E4E
-:106F00002F7372632F7574696C2F736C652E630019
-:106F1000FF00000000010203040102030406070849
-:046F20000900000064
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_robert_bb@1478015115.bin b/bin/boot/nowatchdog_boot_robert_bb@1478015115.bin
deleted file mode 100755
index 5031130cab..0000000000
Binary files a/bin/boot/nowatchdog_boot_robert_bb@1478015115.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_robert_bb@1478015115.hex b/bin/boot/nowatchdog_boot_robert_bb@1478015115.hex
deleted file mode 100644
index 1dab34819b..0000000000
--- a/bin/boot/nowatchdog_boot_robert_bb@1478015115.hex
+++ /dev/null
@@ -1,1783 +0,0 @@
-:020000040800F2
-:1000000000AA01208925000885250008E51D0008B3
-:1000100085250008852500088525000800000000CA
-:10002000000000000000000000000000852500081E
-:1000300085250008000000008525000885250008AA
-:1000400085250008852500088525000885250008E8
-:1000500085250008852500088525000885250008D8
-:1000600085250008852500088525000885250008C8
-:1000700085250008852500088525000885250008B8
-:1000800085250008852500088525000885250008A8
-:100090008525000885250008852500088525000898
-:1000A0008525000885250008852500088525000888
-:1000B0008525000885250008852500088525000878
-:1000C0008525000885250008852500088525000868
-:1000D0008525000885250008852500088525000858
-:1000E0008525000885250008852500088525000848
-:1000F0008525000885250008852500088525000838
-:100100008525000885250008852500088525000827
-:100110008525000885250008852500088525000817
-:100120008525000885250008852500088525000807
-:1001300085250008852500088525000885250008F7
-:1001400085250008852500088525000885250008E7
-:1001500085250008852500088525000885250008D7
-:1001600085250008852500088525000885250008C7
-:1001700085250008852500088525000885250008B7
-:1001800085250008852500088525000885250008A7
-:100190008525000885250008852500088525000897
-:1001A0008525000885250008852500088525000887
-:1001B00085250008852500088525000861070008B9
-:1001C0006D0700088525000800000000852500084F
-:1001D0008525000885250008852500088525000857
-:1001E0008525000885250008852500088525000847
-:0801F0008525000885250008A3
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0D6BF00BF302B0008014801F05F
-:1007700038B800BF302B0008014800F0F9BD00BFB9
-:10078000302B000837B50024012002F0ADF90190AC
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F087F9002020E00133F8
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F065F9284623
-:1008000003B030BD0D650008396500084465000877
-:100810004E65000808B500F077FB80F00100C0B21B
-:1008200008BD000008B50C22044B02FB003000F0AC
-:100830008DFC80F00100C0B208BD00BFD02B0008C5
-:1008400010B5002401F094F8054820440C34017AD6
-:1008500000F062FC302CF7D1BDE8104001F089B8FF
-:10086000D02B0008044BDA691106FBD59862DA69CF
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F075F828464FF48021EC
-:100890001E4C01F06FF82B68642623F0010394E8E6
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F013FC03AB94E8070083E8070045
-:1008C00000211846022200240B4600F007FC06A86F
-:1008D00002F020F8089821460D4A70430023FFF7E4
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240002C0008F1
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F0C5F83146E5
-:100980004A46002001F044FD07F1080304F5927483
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F004FD044655206C44FFF77E
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F08338000020182C0008BD
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F018FD01A8FFF735
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F0E4FCF1E7012010BD00BFBF
-:100A90007A65000810B5074C43F2CD71064848F658
-:100AA000B803224601F02AFD01462046BDE8104069
-:100AB00000F0E4B83C010020352C000810B500F02F
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B20009D650008B8650008D3650008DD6500080C
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F039BC00BF46
-:100BE000802B0008024B1868403000F0AFBA00BFFD
-:100BF000802B000838B5204B012200211C6804F12D
-:100C00002005284600F03CFA0021284600F052FA60
-:100C100004F1380000F094FA04F1400000F090FA7A
-:100C2000012104F12C000A4600F02AFA002104F107
-:100C3000080001220B4600F051FA0021012204F1C4
-:100C400014000B4600F04AFA6068012101F014FF1D
-:100C50006068002101F010FF94E8030000F08AFEB4
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD802B00082B4B2DE952
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F0DDFB384631
-:100CA000012100F007FA0021304600F003FA01208C
-:100CB00001F0D2FB684600F049FA054620B11C4815
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000F1F9012001F0C0FB204600F037FA06468A
-:100CE00008B114481BE0684600F030FA054608B920
-:100CF000114814E0012001F0AFFB48464146FFF7E0
-:100D000055FF3846314600F0D5F90C480921FFF768
-:100D10004DFF204600F01AFA054610B90848FFF7C3
-:100D200081FE284603B0BDE8F08300BF802B000899
-:100D3000FC650008186600083266000802640008B6
-:100D40004E66000808B5022001F086FB0A4B1B68BE
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D3FD022001F078FB0548FFF75BFE012070
-:100D7000BDE8084000F0C2BD802B00086F66000887
-:100D80008B6600080F4BF7B51C6802AD0F460121BA
-:100D9000203405F8010D1646204600F08BF964203A
-:100DA00001F056FB28460121FFF700FF1EB138462F
-:100DB0003146FFF7FBFE2046002100F07BF903B02F
-:100DC000F0BD00BF802B0008F0B50746ADF2044D22
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0CCF8C2
-:100DF000284669464FF4806201F00AFB0546EAE79F
-:100E0000224600F0C1F869462246284601F000FB60
-:100E10000DF2044DF0BD08B5202001F045FD00287D
-:100E2000FAD108BD08B5022001F03EFD0028FAD035
-:100E30000220BDE8084001F041BD00B58DB0684614
-:100E400001F0BBFC0023684600934FF480730A93C3
-:100E500035230B9301F0E2FCFFF7E4FFFFF7DBFF24
-:100E60000DB05DF804FB000030B5002495B02448B7
-:100E7000022100F07FFD23480021032220440C348E
-:100E80000B4600F02BF9482CF5D101A8002401F005
-:100E90008BFC102301A802940193172303944FF4B1
-:100EA0004075059304940694079401F095FC012085
-:100EB00001F0D8FCFFF7C1FF08A801F07EFC662313
-:100EC00008A808941393129501F0A8FCFFF7AAFF55
-:100ED00008A801F072FC992308A8089413931295AE
-:100EE00001F09CFCFFF79EFF4CF2503001F0B0FA8D
-:100EF000FFF7A3FF0248022100F046FD15B030BD08
-:100F0000001000A00C64000830B502218DB01C4810
-:100F100000F030FD022001F0B9FC684601F04DFC04
-:100F20004FF08063684600934FF0407304934FF492
-:100F300040730A93AF230B9301F070FCFFF772FF2D
-:100F400001F0ACFC054601F0A9FC044601F0A6FC4A
-:100F5000240244EA004040EA0504FFF75CFF094B25
-:100F60009C4204D020460024FFF763FD00E00124EA
-:100F70000348022100F008FD20460DB030BD00BF3F
-:100F8000001000A020BB190070B515468CB00446B7
-:100F90000E461B48022100F0EDFC681E01F076FCB5
-:100FA000684601F00AFC4FF08063684625440093D0
-:100FB0004FF0407304930A2305934FF44063099361
-:100FC0004FF440730A934FF4005308930B230B9391
-:100FD00001F024FC304601F051FCAC4204D001F099
-:100FE0005DFC04F8010BF8E7022001F067FCFFF755
-:100FF00012FF0348022100F0C7FC0CB070BD00BF17
-:10100000001000A0034A136B23F4FF6323F00703CF
-:10101000136370470038024000F13F4000F57E0046
-:10102000C0F387200A280AD8054A135C591C1154BA
-:101030002BB9044901230A6B834013430B637047A8
-:10104000F48900200038024000F13F4000F57E00A6
-:10105000C0F387200A280DD8074A135C53B1013B1F
-:10106000DBB2135433B9054901230A6B834022EAEA
-:1010700003030B63704700BFF4890020003802406F
-:10108000436813B500930123044600688DF80430CB
-:1010900000238DF805208DF807308DF80610FFF736
-:1010A000BBFF2068694601F02BFB2068FFF7CCFFEF
-:1010B00002B010BD38B5037A04460D460BB981F075
-:1010C00001052068FFF7A8FF2068A1882A4601F0E3
-:1010D00055FB2068BDE83840FFF7B6BF13B504469E
-:1010E00040688DF80730009002208DF805208DF8BB
-:1010F000040020688DF80610FFF78EFFA27A2068A2
-:10110000218901F03FFB2068694601F0F9FA206867
-:10111000FFF79AFF02B010BD002313B504460193F8
-:101120004368006800938DF80710FFF775FF20688B
-:10113000694601F0E5FA2068FFF786FF02B010BDAE
-:10114000036813B10021FFF7E7BF704738B50446C5
-:101150000068FFF761FFA188206801F009FB0546E0
-:101160002068FFF771FF281C18BF012038BD1FB58C
-:10117000836804460093C36868460193FFF7E0FF65
-:10118000636902A80293A3690393FFF7D9FF04B030
-:1011900010BD10B504460121083002220023FFF7DC
-:1011A0009DFF04F11400012102220023BDE810403C
-:1011B000FFF794BF0368DB6910B5044673B9C36ACF
-:1011C00063B10A2001F048F92046FFF7D0FF20461E
-:1011D000E36A01219847142001F03EF92046FFF709
-:1011E000D8FF2046BDE8104000F0E0B910B5044635
-:1011F00000F04FFA48B10A2001F02EF9204600F025
-:1012000048FA80F00100C0B210BD012010BD30B519
-:10121000044687B0C36A00219847A36800210125CE
-:1012200000936846E3680A468DF808500193FFF77B
-:1012300027FF68460021FFF73DFF6369002103A8EF
-:101240000393A3690A468DF814500493FFF718FF1F
-:1012500003A80021FFF72EFF07B030BD10B50446EC
-:1012600000F00AFA2368DB6933B9E36A4BB1204620
-:10127000BDE81040FFF7CBBF2046BDE81040FFF7A8
-:1012800076BF10BD10B50446FFF7E8FF2046BDE865
-:101290001040FFF78FBF00002DE9F3419846036827
-:1012A00004460E46DB6917460BB900205BE000F0F0
-:1012B000F0F9B8B9256814220021284601F02FFC66
-:1012C0009DF828306F8020466B71089B2E71AB60B3
-:1012D000099B85F806802B6100F0ECF92368002259
-:1012E0009A6111E02046FFF7CDFF2046FFF77EFF11
-:1012F0000028DFD1D9E79A69B2F57A7F23DA013283
-:1013000002209A6101F0A8F8204600F0DFF90122DE
-:10131000236883F82020154A0192019A511E0191F9
-:101320001AB193F82020002AF7D1002283F8202058
-:10133000019A42B11D7D05F0FD02012ADBD16B1E31
-:101340005D425D4103E00025204600F0A8F92368D6
-:101350000022204683F82020FFF748FF10B92046DE
-:10136000FFF790FF284602B0BDE8F08180841E00A0
-:1013700010B5044618B90E48A92100F0E9FF002174
-:101380002422006801F0CBFB204600F0CBF8236A52
-:101390002BB1002104F120000A46FFF771FEE36A39
-:1013A00023B12046BDE81040FFF731BF10BD00BF9C
-:1013B000E166000810B5044618B90848B62100F0E7
-:1013C000C7FF00680368DB690BB9FFF7F3FE23680A
-:1013D0001A68D3690133D36110BD00BFE16600080C
-:1013E00008B518B90748BF2100F0B2FF00680268CD
-:1013F000D36933B1013BD3611BB9BDE80840FFF7A6
-:101400002DBF08BDE16600081FB50C46114618B98E
-:101410000A4840F28D1103E023B908484FF4C77120
-:1014200000F096FF82888DE80A0000212346029191
-:101430000068FFF731FF04B010BD00BFE16600088F
-:1014400013460122FFF7E0BF1FB50C46114618B93D
-:101450000A484FF4D77103E023B9084840F2AF11AE
-:1014600000F076FF82888DE80A00002301210293B4
-:1014700023460068FFF710FF04B010BDE1660008C6
-:1014800007B502AB03F8012D0122FFF7DDFF03B022
-:101490005DF804FB03680022197583F8202070476B
-:1014A00010B5046863882279C3F3090322B922784E
-:1014B000012A18BF43F48063A268E468121BFF2A64
-:1014C00095BF120443F0FF7302F47F0243F48033AC
-:1014D00098BF134309B143F4005342681268536044
-:1014E00010BD43681B681A6822F0D60210B51A6056
-:1014F0005A6842F480425A6008220368BDE81040EE
-:101500001A70FFF7C7BF0368012110B50446586879
-:1015100001F0A6FA00212368BDE81040586801F0E8
-:101520009FBA000043685A7B53B2002B30B506DAED
-:1015300002F00F021B4B1344C0221A7606E003F19F
-:101540006043C02203F5614383F8002343689A7B1C
-:1015500053B2002B06DA02F00F02124B1344C022E2
-:101560001A7606E003F16043C02203F5614383F875
-:10157000002350F8045F0C4C6B7B59B203F01F0240
-:101580000123490903FA02F244F82120AA7B51B24F
-:1015900002F01F024909934044F82130BDE8304071
-:1015A000FFF7B1BFFCEC00E000E100E043682C492C
-:1015B0009A688A42F0B5074687B004D92948512174
-:1015C000294A00F0B9FE29498A4205D91C7B34B169
-:1015D000012C07D000F0C6FE0124254603E00924B3
-:1015E000102500E0022502A801F094F9796860193D
-:1015F000049A8B684343B2FBF3F603FB162303B94B
-:10160000013E0F2E03D91748702100F0A1FE03C937
-:1016100000F0B0F97B684FF0000100221B68013D2B
-:1016200066F307110192013C8DF804508DF8071004
-:1016300019688DF8054021F0010119600C491868FE
-:1016400001401960019919619A60DA601A6842F0E4
-:1016500001021A60074A59680A405A6007B0F0BD93
-:10166000801A0600FA66000817670008A0860100C5
-:10167000001F30FF008000F810B5044654F8043F06
-:1016800093E8030000F080F92046BDE81040FFF722
-:101690003ABF43681B689869C0F3C030704743681D
-:1016A0001B681A6822F0D6021A605A6842F4804217
-:1016B0005A60704703685A790AB9012204E01A791E
-:1016C0000AB9052200E006221A70704743681B68B9
-:1016D0001A6842F0D20210B51A60026814791CB977
-:1016E000196841F004011960117801290CD1528860
-:1016F000012CC2F309020CBF4FF08071002142F4AB
-:1017000090320A435A6010BD0121BDE81040FFF736
-:10171000C7BE38B5436805461C6803681A78013AA5
-:10172000072A5BD8DFE802F0045A5A5A223B5A577C
-:10173000A269910701D59A79A2621A793AB9A26988
-:1017400052060FD50522284601211A7008E0012A09
-:1017500008D1A269100605D50622284600211A7074
-:10176000FFF79EFEA369D9063AD525E0A269520784
-:1017700005D5DA681969501CD860636A8B54A3696F
-:101780001B0603D528460021FFF78AFEA3695806E9
-:1017900026D528460121BDE83840FFF7A2BEA26940
-:1017A000910705D5DA681969501CD8608B5CA36273
-:1017B000A16911F0100109D0E3692846022143F024
-:1017C0001003E361BDE83840FFF764BEA3691A0661
-:1017D000DCD52846D8E7A369DB0701D400F0C2FDB9
-:1017E00038BD43681B689A69D20503D5DA6942F4AB
-:1017F0008072DA619A69510503D5DA6942F4806230
-:10180000DA619A69920503D5DA6942F40072DA6105
-:101810000321FFF766BE0000094B70B51C680D463A
-:1018200006462046FFF7C6FD2A4631462046FFF70A
-:1018300007FE05462046FFF7D3FD284670BD00BFD2
-:10184000642B0008094B70B51C680D4606462046FF
-:10185000FFF7B0FD2A4631462046FFF711FE054648
-:101860002046FFF7BDFD284670BD00BF642B000871
-:1018700037B500F07DF81D4801210222FFF700FC7A
-:101880001B4801210222FFF7FBFB1A48012102221B
-:10189000FFF7F6FB00F06DF800200DF10701FFF7F0
-:1018A000BBFF9DF80750012D1DD114200DF107013C
-:1018B000FFF7B2FFA8B1104C237813B101332370A6
-:1018C0000FE09DF80710142021F0060141F00201FD
-:1018D0008DF80710FFF7B6FF18B10320257000F050
-:1018E000BBFD012000E0002003B030BD54640008BF
-:1018F000606400086C640008FF890020014601480C
-:10190000FFF7D8BB5464000801460148FFF7D2BB7B
-:1019100060640008B0F1804F08B503D20D48302153
-:1019200000F016FD0C4B98420ED903F58033984217
-:101930000CD9B0F1A04F0BD3084A094BB0F1204F9E
-:1019400034BF1846104608BD064808BD064808BD05
-:10195000064808BD38670008FFFF0040D12900088D
-:10196000B9290008E9290008012A0008A12900086E
-:101970007047704710B50C46FFF7CCFF01210346B6
-:101980002046BDE81040184710B50C46FFF7C2FFCF
-:10199000002103462046BDE81040184738B5104CDA
-:1019A00005464FF080512046FFF7E4FF45B154E86B
-:1019B000003F43F4807344E80032002A08D0F6E781
-:1019C00054E8003F23F4807344E80032002AF7D142
-:1019D00003484FF08051BDE83840FFF7D5BF00BF46
-:1019E00000700040024B5868C0F34000704700BFD1
-:1019F00000700040024A136843F008031360704708
-:101A000000700040B0F1006F10B504460BD20C48D6
-:101A1000FEF7F0FF2046FFF70CF80A48FFF702F840
-:101A20004FF0FF3010BD084B002053F8042BA242AA
-:101A300002D81A68944202D301300B28F5D110BDA8
-:101A40005767000860670008786400082DE9F843CC
-:101A50000446174699460E46C1B3FFF7D3FF054625
-:101A6000601E3044FFF7CEFF002D804631DB00289A
-:101A70002FDB461B01361FB1002031464A46B847CE
-:101A80002C4600F09BFD44451EDCF32000F0ACFD2D
-:101A9000114B002133F8140000F0DEFD09280AD0B4
-:101AA0000E48FEF7A7FF2046FEF7C3FFFEF732FF02
-:101AB00000F092FD0DE02FB1C5F1010031464A461C
-:101AC0002044B8470134DEE700F086FD0120BDE880
-:101AD000F8830020BDE8F883A8640008796700084F
-:101AE0002DE9F0410F461646804600F067FD3E4462
-:101AF0003C46F32000F078FDB44216D0C7EB080551
-:101B0000254414F8011B284600F0DCFD0928F3D019
-:101B10000848FEF76FFF2846FEF78BFFFEF7FAFE38
-:101B200000F05AFD0020BDE8F08100F055FD0120D5
-:101B3000BDE8F0819167000808B57D2000F0A8FF9E
-:101B4000003018BF012008BD4900FFF701B80000B0
-:101B50002DE9F043012185B005460020FEF7F8FF8E
-:101B6000042000F047FB01A8294600F097FB01A8DC
-:101B700000F0A3FB08B93B4814E00C353A48FEF7E7
-:101B800051FF02992846FFF71FF904463748FEF730
-:101B900031FF2046FEF74DFFFEF7BCFE039B9C4243
-:101BA00004D03348FEF73EFF012057E0029CDFF8E7
-:101BB000E0803048FEF736FF21462F4A002340469A
-:101BC0000024FFF743FF029F2C484FEA5709FEF716
-:101BD00029FFBC421CD23E1B29486119B6F5803F43
-:101BE00028BF4FF480363246FFF7CEF908EB0400E9
-:101BF00023493246FFF774FF18B92248FEF712FF57
-:101C000006E009EB54003946FEF7A2FF3444E0E752
-:101C10001D48FEF7EFFE0298FEF70BFF1B48FEF78C
-:101C2000E9FE1B49029A002000F0F2FB0446194825
-:101C3000FEF7E0FE0398FEF7FCFE1748FEF7DAFE1B
-:101C40002046FEF7F6FEFEF765FE039B9C4204D09D
-:101C50001248FEF7E7FE022000E0002005B0BDE8D4
-:101C6000F08300BFA2670008C0670008DD670008B6
-:101C7000F367000816680008491B00082D68000873
-:101C8000008A0020446800084F6800085D6800086A
-:101C90000080000866680008796800087F6800080E
-:101CA00010B5022000F0BEFAD8B3042000F0BAFA52
-:101CB000044670B11B48FEF7B5FE042000F0A6FAFA
-:101CC000022000F0A3FA4FF40040BDE8104000F0FD
-:101CD0009DBA1548FEF7A6FE082000F097FA1020DE
-:101CE00000F094FA202000F091FA402000F08EFAE3
-:101CF0002046FFF72DFF022807D1082000F07AFACE
-:101D0000102000F077FA00F051FB042000F07EFA7A
-:101D1000022000F07BFA4FF40040BDE8104000F0D4
-:101D200069BA10BDCA6800080069000810B52548E6
-:101D3000FEF778FE4FF48000FFF70AFF10B102288B
-:101D40003AD809E0202000F061FA402000F05EFA65
-:101D5000802000F04FFA2FE0082000F04BFA10200E
-:101D600000F048FA202000F05DFA20B91648FEF78E
-:101D700059FE202007E0402000F054FA58B91348DB
-:101D8000FEF750FE402000F035FA4FF4007000F0EE
-:101D900031FA00F00BFB0E480024FEF743FE08204A
-:101DA00000F034FA102000F031FA202000F02EFA72
-:101DB000402000F02BFA00E00124042000F026FA75
-:101DC000204610BD1B690008356900086E690008CF
-:101DD000A769000808B50248FEF724FE00F05CFA87
-:101DE000E16900081EF0040F0CBFEFF30880EFF369
-:101DF0000980FFF7EFBF704708B50120FEF712FD1D
-:101E000008B900200FE00020FEF70CFD0028F8D0F4
-:101E10000220FEF707FD0028F3D00320FEF702FDA5
-:101E200080F00100C0B200F0010008BD1FB50446FB
-:101E30000E48FEF7F7FD01A90C22204600F016FB24
-:101E400001A8FEF7EFFD2046FEF7A0FE0220FEF7F8
-:101E5000E9FC04460220FEF7E5FCA04201D000F0B8
-:101E6000A5FA0A2000F0F8FAF4E700BFD7690008E5
-:101E70007FB5BB484FF08051FFF77CFDFFF7B2FD07
-:101E8000044630B1FFF7B6FDB648FEF7CBFD00F0D3
-:101E900094FA4FF08051B248FFF776FDFEF76CFCE4
-:101EA000FEF7ECFCB048FEF7BDFDB048FEF7BAFD0A
-:101EB000AF48FEF7B7FDAF48FEF7B4FDAE48FEF7FA
-:101EC000B1FDAE48FEF7AEFDAD48FEF7ABFDFFF746
-:101ED000CFFC00F0B1F900F0D1F921460C2201A8A5
-:101EE00000F01DFE00F0C6F901A90C2200F0BEFAB8
-:101EF00001A8FEF797FDA348FEF794FDA148FEF761
-:101F000091FD4FF4804000F08DF990B19E48FEF7AE
-:101F100089FD4FF4804000F079F9082000F076F94F
-:101F2000102000F073F9202000F070F9402000F03C
-:101F30006DF9FEF799FFFEF783FCFFF799FCFEF7BA
-:101F4000BDFDFEF7F5FDFEF71DFC08B18F4803E06F
-:101F5000FEF760FC10B18E48FFF768FF00F07AF9D9
-:101F6000802000F05FF918B1802000F04FF94BE0BD
-:101F70004FF4003000F056F920B14FF4003000F07B
-:101F800045F943E0FFF738FF68B141F288348148F2
-:101F9000FEF748FDFFF730FF78B1012000F05CFA52
-:101FA000013CF7D132E07C4B0CCB013301D0013244
-:101FB00003D17A48FEF736FD28E0FFF7BDFD48B3B0
-:101FC000FFF7BAFD10B17648FEF72CFD4FF4007014
-:101FD00000F028F910B17348FEF724FD4FF40070AB
-:101FE00000F014F9102000F01DF9002800F0EE8038
-:101FF0006D48FEF717FD082000F008F9102000F0EA
-:1020000005F9FFF793FE98B96848A5E76848FEF719
-:1020100009FDF6E74FF4007000F004F90028CFD175
-:10202000082000F0F3F8102000F0F0F8FFF738FE79
-:102030004FF4005000F0F6F804464FF4805000F0E2
-:10204000F1F8400040EA8400C4B24FF4006000F0B0
-:10205000E9F82043C0B20728C3B20DD14FF40060A5
-:1020600000F0D4F84FF4805000F0D0F84FF4005056
-:1020700000F0CCF84F486FE701334FF40060DBB25B
-:10208000023B052B11D8DFE803F00C1003100C10F5
-:1020900000F0BCF84FF4805000F0B8F84FF4005056
-:1020A00003E000F0B3F84FF4805000F0A3F8FEF71F
-:1020B000A9FF394B40485D681E68FEF79BFC284627
-:1020C000FEF7B7FC3D48FEF795FC00229300013275
-:1020D0004FF0FF3103F16043082A03F56143C3F871
-:1020E0008010C3F88011F1D1354B4FF480120024D9
-:1020F0001A634FF480625C639C631A645C6400F052
-:10210000E3FB3048012100F087FC21462D4800F018
-:1021100083FCF320012100F08BFC2146F32000F02A
-:1021200087FC0320012100F08FFC2146032000F0F2
-:102130008BFC6FF4A050012100F092FC21466FF45B
-:10214000A05000F08DFC2048012100F095FC1E48B5
-:10215000214600F091FC63B64FF0FF3EB54628479C
-:1021600000700040EC690008F9690008006A000886
-:102170008D6A0008246B0008A56B0008266C000817
-:10218000A96C0008FF690008266D0008014550FE93
-:10219000024550FE536D0008008000088E6D000857
-:1021A000A16D0008B96D0008D96D0008034550FE07
-:1021B0004D6E0008044550FE6C6E0008806E0008ED
-:1021C000003802400010E022B379F764082000F0E4
-:1021D00029F820B10548FEF725FC102003E004484B
-:1021E000FEF720FC082000F005F81FE7016E00084C
-:1021F000276E000810B50446002000F075FC40EA88
-:1022000004010020BDE8104000F05EBC10B504469B
-:10221000002000F069FC20EA04010020BDE8104025
-:1022200000F052BC10B50446002000F05DFC2042D6
-:1022300014BF0120002010BD08B50120FFF7AEFB40
-:102240000120FFF7EFFF20B90121BDE8084000F0B1
-:102250003BBC08BD08B50648FEF7CCFB002000F0EB
-:1022600043FCFEF7E6FBBDE80840FEF753BB00BFAA
-:10227000886E0008022000F037BC000008B5FFF7A8
-:10228000F9FF0449884204D00220BDE8084000F06C
-:102290001BBC08BD8BB8185800BEFDE71FB504462F
-:1022A0000C2201A8FEF770FE01AB03CB206018687A
-:1022B0006160A060204604B010BD0068A0F10C036E
-:1022C000584258417047000080B5174606461048EE
-:1022D0000D461C46FEF78EFB3846FEF78BFB0D487D
-:1022E000FEF788FB3046FEF785FB0B48FEF782FBC6
-:1022F0002846FEF79EFB2CB10848FEF77BFB2046E4
-:10230000FEF778FB0648FEF78DFBFFF7C5FF00BF21
-:10231000946E0008A66C00089D6E0008A76C00086B
-:10232000FF6900081FB506AA52F8044B03920092F9
-:102330001A462346FFF7C8FF0CB41FB506AA52F889
-:10234000043B03920092014AFFF7BEFF9F6E000814
-:10235000002307B572460093014BFFF7E3FF00BF70
-:10236000A66E00087446064808B5FEF743FB2046F3
-:10237000FEF75FFB0348FEF755FBFFF78DFF00BF3D
-:10238000AE6E0008FF690008BFF34F8F0549064B8A
-:10239000CA6802F4E0621343CB60BFF34F8F00BF03
-:1023A000FDE700BF00ED00E00400FA0508B5FEF708
-:1023B000FBFB00F081FBFFF7E7FF08B5FFF7E4FF49
-:1023C000F0B50646002401202546034694421DD060
-:1023D00011F804C000F1010EBCF1000F03D17355D8
-:1023E000774605460DE00133774606F800C0DBB2BC
-:1023F000FF2B07D102F1FF3C644506D07355871CC3
-:102400007546012301343846E0E770467355F0BD48
-:1024100030B5C9B1C0430A44914213D011F8013B11
-:102420000A4D83EA000404F00F0455F8244084EABE
-:10243000101080EA131303F00F0355F8233083EADA
-:102440001010E9E7C04330BD084630BDC064000845
-:1024500000010138FDD1704710B504462CB14FF48E
-:102460007A70013CFFF7F4FFF8E710BD0A2A10B5B7
-:1024700004DC1148BDE81040FEF7D4BA30230C4606
-:102480001C2204F8023B78234B700F239340034037
-:10249000D340092B01D8303302E00F2B02D8573339
-:1024A000DBB200E02023043A04F8013B131DECD119
-:1024B00000238B7210BD00BFE86E000808B582686B
-:1024C0004368934203D304481421FFF741FF026895
-:1024D000591C4160D05C08BDFE6E000843688268EC
-:1024E000934210B503D304481921FFF731FF026866
-:1024F0005C1C4460D15410BDFE6E0008F0B587B07E
-:102500000E460746154600210C2268461C4600F080
-:1025100006FB00210C2203A80296009700F0FFFAA8
-:10252000684603950594FFF7C9FF06466846FFF71E
-:10253000C5FFB042014601D003A808E06846FFF796
-:10254000BDFF0446D8B1012804D103A83146FFF7E6
-:10255000C5FFEBE7030608D504F07F046846FFF7E4
-:10256000ADFF40EA042000F18004A4B20025A5429A
-:10257000DCDA03A80021FFF7B1FF0135F7E7049883
-:1025800007B0F0BDFEE700000748084A0849121AE4
-:1025900008B500F0B9FA0748074A0021121A00F0FE
-:1025A000BEFAFFF765FC00BF000000201400002009
-:1025B000106F000814000020008A0120044B1A69E3
-:1025C000002A04DA034A5A6002F188325A607047DE
-:1025D000003C024023016745024A136943F000436F
-:1025E00013617047003C0240014BD860704700BF48
-:1025F000003C02400E4BDA68D20310D4DA68D106F0
-:102600000FD4DA68D2050ED4DA6812F0E00F0CD1DC
-:10261000DB6813F0020F14BF082009207047012067
-:10262000704706207047022070470720704700BFA0
-:10263000003C0240092307B58DF80730FFF7DAFFA9
-:102640008DF807009DF80730012BF7D09DF80700A3
-:1026500003B05DF804FB000070B5064641B10129E6
-:1026600008D002290CBF4FF400754FF4407503E009
-:102670000D4601E04FF48075FFF7DCFF09281ED1FD
-:102680000F4C236923F4407323612169294321619D
-:10269000236923F0F8032361236943F002031E43F7
-:1026A0002661236943F480332361FFF7C3FF236965
-:1026B00023F002032361236923F0F803236170BD33
-:1026C000003C024070B505460E46FFF7B3FF0928EF
-:1026D00013D10A4C236923F44073236123692361D6
-:1026E000236943F0010323612E70BFF34F8FFFF77F
-:1026F000A1FF236923F00103236170BD003C024068
-:10270000F0B500220E680123934003EA060E9E45B1
-:102710002AD1550003230468AB40DB431C4004600E
-:102720000C79076804FA05FC013C4CEA0707012C08
-:10273000076011D884684F791C40AF40846084687A
-:1027400027438760446824EA0E0444608C79476814
-:102750009440A4B23C434460C4682340C360CB7936
-:10276000C468AB402343C3600132102ACBD1F0BD13
-:102770000369194214BF01200020704702B90904FF
-:102780008161704701F00703C9089B0000EB8100DD
-:102790000F219A40994010B5046A24EA01010162B0
-:1027A000016A1143016210BD00230360436083602E
-:1027B000C3600361436183617047002343608360AA
-:1027C000C3600360036143618361C3610362436269
-:1027D0008362C362704700000E4903680A6810B53F
-:1027E00044691C4383691C4322F07F43426823F001
-:1027F0003003234343EA02630B60C36882684C687A
-:102800001A43054B23401343026943EA02434B60DA
-:1028100010BD00BF001000A0FEF7E0FF90E80C0024
-:102820000E491A4383681A43C3681A4303691A435B
-:1028300083691A43C3691A43036A1A43436A1A43F2
-:10284000836A1A43C36A10B51A434C69044B234088
-:102850001343426943EA82434B6110BD001000A05C
-:1028600000008090044B1A6810B142F0010201E0B0
-:1028700022F001021A607047001000A0024B9A6813
-:10288000920600D498617047001000A0024B9A682D
-:10289000920600D418617047001000A0014B187810
-:1028A000704700BF201000A0034B9B68184214BF64
-:1028B00001200020704700BF001000A0014BD8602D
-:1028C000704700BF001000A00F4B00211A6842F0B3
-:1028D00001021A6099601A6822F0A85222F41022AC
-:1028E0001A600A4A5A600A4AC3F8842002F18062D8
-:1028F000C3F888201A6822F480221A60D960C3F8CD
-:102900008C10C3F89010704700380240103000243B
-:10291000003000201E4A936803F00C03042B10B50E
-:1029200003D0082B03D01B4B19E01B4B17E0516859
-:10293000536811F4800F516803F03F0318BF164A23
-:10294000C1F3881108BF134AB2FBF3F3104A4B439B
-:102950005268C2F3014201325200B3FBF2F30C4A57
-:10296000036093680D49C3F30313CC5C0368E34031
-:1029700043609468C4F382240C5D23FA04F48460F9
-:102980009268C2F342328A5CD340C36010BD00BF7C
-:10299000003802400024F40040787D01010000204E
-:1029A000044B1A6B09B1104301E022EA00001863DE
-:1029B000704700BF00380240044B5A6B09B1104306
-:1029C00001E022EA00005863704700BF003802406F
-:1029D000044B9A6B09B1104301E022EA00009863AE
-:1029E000704700BF00380240044B1A6C09B1104315
-:1029F00001E022EA00001864704700BF003802407E
-:102A0000044B5A6C09B1104301E022EA00005864FB
-:102A1000704700BF00380240044B1A6909B11043E7
-:102A200001E022EA00001861704700BF0038024050
-:102A3000044B5A6909B1104301E022EA00005861D1
-:102A4000704700BF00380240044B9A6909B1104337
-:102A500001E022EA00009861704700BF00380240A0
-:102A6000044B1A6A09B1104301E022EA000018621F
-:102A7000704700BF00380240044B5A6A09B1104346
-:102A800001E022EA00005862704700BF00380240AF
-:102A90004209084B012A01D11B6804E0022A01D136
-:102AA0001B6F00E05B6F00F01F0023FA00F000F0E6
-:102AB0000100704700380240024A536F43F08073B0
-:102AC000536770470038024082B000230193054BE2
-:102AD0000193019B03EB80000190019B196002B000
-:102AE000704700BF5028004082B000230193054B7F
-:102AF0000193019B03EB80000190019B186802B0D9
-:102B0000704700BF50280040431E0A4410B5914250
-:102B100004D011F8014B03F8014FF8E710BD02444F
-:102B20000346934202D003F8011BFAE77047000006
-:102B300014000020702B0008001402400040000028
-:102B40000E00040000140240008000000F0004008A
-:102B50000000000000000000000000000000000075
-:102B600000650008682B0008302B000850000000AA
-:102B70000060004000000001801A0600005F600055
-:102B8000842B000800540140000020000000024097
-:102B90002000000005000800000002408000000046
-:102BA00007000800000002401000000000000000C4
-:102BB0000000024008000000010000000004024084
-:102BC00004000000000402400100000001000000B9
-:102BD0000018024040000000010000000018024000
-:102BE0000800000000000000001802402000000063
-:102BF0000100000000180240100000000100000069
-:102C0000000C02400001000008000700000C024018
-:102C1000000200000900070001424F4F544C4F4191
-:102C20004445520000000000002A2A000000000075
-:102C3000000000000047FF004C6174746963650088
-:102C4000694345637562653220323031362E303249
-:102C50002E323738313000506172743A2069434562
-:102C60003430554C314B2D434D3336410044617463
-:102C7000653A204A756C20323520323031362030AA
-:102C8000393A35363A33394702FF7EAA997E5100E8
-:102C9000010592002062016F8247027200701100EC
-:102CA0000101470B10470280470502470580034793
-:102CB0000801470208471120470C02470B0247173B
-:102CC00040470501470540470C040090470F104757
-:102CD00006404705014705404705014704800004B9
-:102CE0004710804705020020000800804702014786
-:102CF0000908471701470434000C470403470D3007
-:102D0000475970470E8010470402004047040801ED
-:102D100047020702004047040801470520044741D5
-:102D200003470B03470D1C471080470901008047EC
-:102D30000203470908470324472B784712400747F7
-:102D40000A40470C040008470E40470501470604A7
-:102D50004704014706044706104711800747061C31
-:102D6000470380470C08470A0C3020470F30E847DC
-:102D70000C63C1470C0C30470F400105470C03C0E2
-:102D8000470C0C3020470D184702E04704020CB1F5
-:102D90000018003847064047080C30471001074725
-:102DA00002010001CD72470398470F0C3020470DF8
-:102DB0003000F9A04708100001C04705038047070D
-:102DC0000C30470E300071054708300001470F0CEA
-:102DD0003020470F5808470401DCA00080470363F8
-:102DE000C1470203C020AF5247050C30471008030B
-:102DF000470402E0F5470503C0470202E0050FA0C3
-:102E00001047040C3020471240002020470AC00120
-:102E1000E007A547060C3047110D470314470B4048
-:102E200047030547031447020C3020470F90000466
-:102E3000470220470E17CFA247020847020C30472F
-:102E40001030092447022C470D02CD0FF047050C26
-:102E50003020470F108004470368470301054710DF
-:102E60000C30471011073047190C3020470D300047
-:102E700010470A0147100C30470E30470205204723
-:102E8000023447050247100C30204707044706402C
-:102E90004704203404ED80000247091C0008470560
-:102EA0000C30470F4047050422FC4702014707A0AA
-:102EB0000002C047060C3020470903EAF520004015
-:102EC0004706035CA500184708401C8F0847050CFF
-:102ED00030470A03D050470240470601F0554703E8
-:102EE000104706200200F047050C3020470928470C
-:102EF00003110001E047032038FC8002470A1E8FBF
-:102F00000847050C304708080040470330294704AC
-:102F100002BC03D0470AC04703F047050C302047E6
-:102F20000A1C0F10470829DCA5003047090E8F083E
-:102F300047050C30470C0F47094150550020470901
-:102F40000200F047050C3020470D0447065C76EC84
-:102F500080024707084702068047060C30470802F0
-:102F600047050447030147033CF0470A01400C00B2
-:102F7000F047050C3020470820470B1C21FAE732A8
-:102F8000004047100C3047090C470B2464F0F70849
-:102F90004709028047070C302047141C31CCE7203A
-:102FA000804703383D444702028047070C30470FF3
-:102FB000404705027668FB47024000C0403D47039A
-:102FC000028047070C302047080C47050147053CA5
-:102FD00063DE800010470C0447040C30470A20478A
-:102FE000040247052402E847021047060101404752
-:102FF000020147050C302000A100123C20000447CC
-:10300000021EF060470720001EF04047030D72BD0E
-:10301000400003428EEF47060C30470503C0C0470F
-:1030200004F047024000974703042000F0470401E2
-:10303000403C470201429C47070C302047033A3C82
-:10304000200647030CF060180210800006014002C1
-:103050004AA500188000077815006047020CC96077
-:1030600047050C30470503C0104704F04702050927
-:103070000747038001D05547039000401620000108
-:1030800042C1096047050C30204703323C202C47E1
-:10309000031CF0403047028000044702204705012E
-:1030A0008839414702020025ACC02047040C304754
-:1030B0000503C0044704F00130080109000C470271
-:1030C000404705F00F4282010020402547070C30A1
-:1030D000204703323C20470280001EF04047028018
-:1030E000E847037C470705781547044488002047D4
-:1030F000040C3047040803C80001470210F04703DE
-:1031000071094703964708C0164000034215002086
-:10311000470202001C0C30200001017A3C204704C9
-:103120000EF0600008704703A00601DAA047090A04
-:10313000007E8800300002C0000C3047038D000381
-:10314000C04000243000F0470308FB470240000362
-:1031500040F54709014287002047040C0C3020202D
-:1031600000013A3C20201004470708040010000426
-:103170005AA102004000A04705603EEFA547050C9C
-:10318000300010070D0803C047020247070520471B
-:103190000334E001470B1C05A047020247020C3034
-:1031A00020040500723C20001047060450800447AC
-:1031B000022021EEE20200401810470403601FAA1B
-:1031C000F5470202C0000C30000405470203C000AE
-:1031D0001004470542D8BD2C00103C7670424702CF
-:1031E00040008047030102C02C00F047050C30204E
-:1031F000000800723C2000A02078470330001047F0
-:103200000501DCA302304702804703C001C0470824
-:103210000C3000040B470203C00052144704300076
-:1032200008033C4702343830A300204001470481A2
-:1032300001C2C0470C0A723C204702A03BF9014082
-:1032400001404705202C0CF0404703078402470348
-:1032500006DEF5E0470A100803C10001547D69A7A6
-:10326000004040470402046000F047028050003CE8
-:10327000470402BCF1D010470601804702723C208F
-:10328000060024017F7440014047030647034EA512
-:103290000018470215A3C2806002002C91A0470BC2
-:1032A0000803C047023C2E78A01002404707D055C3
-:1032B000470490003C470201401DF3F047070347D5
-:1032C00003121540040036687B64403047040CA0AC
-:1032D00047020DD1000147020723C24702034614EB
-:1032E000ABC420470A08154004023C004A5800704D
-:1032F00047040C470203DFE24705803C47020266B1
-:10330000C20BC208470A03BC1047023C294B744059
-:10331000002847042000281EF04000021801A3C224
-:103320000004016060AB470C043C4703164268A0F0
-:10333000004047074010F04702050800803C470264
-:103340001403B4C70010470A03BC100C4702035D06
-:103350007A014706A00E60FEA047023001A7A3C273
-:10336000000803469E81A020470A043C000447024F
-:1033700002C85A0847071E03C0F54705803C4702AC
-:1033800001601D03F0470C295047021E01D95B1054
-:10339000404705800423CCA10247031123C2470400
-:1033A0001D95E0470B90168047021C314CA547083D
-:1033B0000202C002470480003C47043EE1D0470AB5
-:1033C0001B47051F470601C047030620E8A3024725
-:1033D00003B325ED0004016640ABC42047090A474A
-:1033E000050247060147052670034704AFB694015E
-:1033F0000A0242B507C004471064F850104708702D
-:103400001AA302B10001D04703C00003DDB5E047B5
-:103410001164005047083443D05300228051A04724
-:103420000380D6C76EE1D04709081E5BC81047036A
-:10343000040AF0404709FE00404702198F3040025D
-:10344000000166A5E0470A0B00121E8060001428E8
-:1034500000F04702400007470403F0A0408002004C
-:1034600007B0470301C24E9447080180470506474D
-:103470000308F0401847021000062000020C0A0062
-:103480001947020B3A81816002E68405A0204708B3
-:1034900001470810F04704B7470240043CC005004C
-:1034A00002801087400101000260140240044706B8
-:1034B0000300080036C9580C0034001AF0403047A9
-:1034C0000218000CA14000FE504A024702012028C9
-:1034D0008047030480D0A047060100030A7A054212
-:1034E0004702144702F000304702FB00044080030B
-:1034F000F0804047044028800003400100D080470E
-:103500000603000500DE11D84702366C1AF060474A
-:103510000308000D8000020C0A403008000B38013F
-:10352000010002000D85E020470601000F0052E077
-:10353000404702142800F04703B007000902470281
-:10354000C00548200400074141044702401602E03C
-:10355000470A08F680D2100E47021AF040470318B7
-:103560004703200400A5400080501175D04703C0D8
-:1035700067A0140447080B091B28C020470310F05C
-:103580004704C900400E3C38C05A480100D887B5EE
-:10359000F8470303AEE80080470808019F1414476A
-:1035A000041AF040470280180400201E2200A541A2
-:1035B00030005C037B08084702E021CA470A050C7B
-:1035C00056788240470310F04703F0E53C4703403C
-:1035D000C05A40104702A7C30C04000262DC054732
-:1035E0000A0D81D6C9504705A54047029898470261
-:1035F000A004301C0540800018E0470560068501E6
-:103600004709050A32054A4704405A47039993344B
-:1036100000400201C00A40470210B04703084702B9
-:103620000105470A0581FE51D047040AF0403000E9
-:10363000901000040004027E5F40100050E1B828A2
-:103640000400E0400FF812470A0B53E04A4705F028
-:1036500000300070FD3C04000220E00F48100079AB
-:10366000098168040002600CC4471114004EA04098
-:103670000240470607C850C04703904705407EC731
-:103680000008470F020010A040804047063BC005DD
-:1036900042470210D04705235DAF01470E0647079A
-:1036A00044470306470203C850C0180018033E01F0
-:1036B000006000063DC0471104470542470504026B
-:1036C000C005404702188FBC012047030E824716F1
-:1036D000100001C000044702674850C0100001E11B
-:1036E00030104703604718300001470204470223A7
-:1036F000E005401047020DE047160C470705470359
-:103700000C0006674850C0F0001017B201284702AD
-:103710000780471008470B08470222E00540204772
-:1037200002E7C00147234003E850C14703F04704C4
-:1037300002662F90471B10470203C005404703D085
-:10374000470401442FB040471D736850C010470222
-:1037500019F56C47020366EED0471E42C0054030A3
-:103760004702ADE11C47020142AEF08047024047EC
-:103770000E0447090226036850C00007101DFB080D
-:10378000084702068DE80020471038470A0403E086
-:10379000054040003085830C470508470F04470B60
-:1037A000040020736850C1104702804703C00060C6
-:1037B000208E5420470D04470B04000442E00540CE
-:1037C000100051E04703804142650DA0470372009D
-:1037D0009011010101470B104706404705014705BD
-:1037E0004000024706084711204706804705024768
-:1037F00012084722010002470404471110470640FF
-:1038000047050147054047031600014706044722C4
-:10381000020020000847020847031047243C000C20
-:1038200047063047688010470402004047040801FB
-:103830004703020040470408014704302004474D75
-:1038400001470604472103008047050247030C4750
-:103850001F1E472D024703404705014717404705F4
-:103860000147060447030301470604470610471DA6
-:103870008047050247110C30472C0C3020472B0C99
-:1038800030472C0C3020472B0C30470E01470C10D2
-:1038900047100C3020470D02471D0C30472C0C30D0
-:1038A00020472B0C30472C0C3020472B0C30472C5A
-:1038B0000C3020472B0C30472C0C3020472B0C3081
-:1038C000472C0C3020472B0C3047130800040020F5
-:1038D00055470880004247080C302047120C002052
-:1038E0000168554047074002004047070C30471524
-:1038F0000400200F470B0205500447040C302047FA
-:1039000014260168F0C04709661E855447050C302F
-:1039100047180F470DF08047040C30204715016809
-:10392000F0C0470A168F0C47050C3047150C4702AC
-:103930000F470DF08047040C3020471501E8F0C018
-:10394000470A1E8F0C47050C3047150C20200F47E7
-:103950000B0200F047050C30204714266548F0C0E4
-:103960004709601C8F0C47050C30471620200F4775
-:103970000A460200F047050C302047156548F0C0A4
-:1039800047080207548F0C000147030C3047180FFB
-:10399000470DF047050C3020471206470201C8F0DA
-:1039A000C047076047021C8F0C47050C3047170CB7
-:1039B0000F470503C01247020401B0F047050C3061
-:1039C00020471501DAF0C0470423C0470307148FCE
-:1039D0000C47050C304718F04703D9B0A4470280C4
-:1039E000470A0C30204714060008F0470350A78010
-:1039F000020040470A0C30471620300F4703D90019
-:103A0000A047040247080C3020471505780F80476F
-:103A10000250A780024703404047070C3047152457
-:103A2000201B0F470528470D0C3020471501F80FC4
-:103A3000804703078002470C0C3047170D0F4704DF
-:103A4000B020470D0C302047140661790F804703E2
-:103A5000078402470C0C30471504200D0F47035014
-:103A600000A8470D0C302047142004F80F804703AE
-:103A7000070002470C0C30471506203C0F47035047
-:103A800000B4470440050A088047040C302047145E
-:103A90003501C90F8047030100024702026000E5BB
-:103AA0000447050C304715366C1C0F47035000289F
-:103AB0004707588047040C302047141428E80F802B
-:103AC00047030704020060470214E05447050C3026
-:103AD00047166D4CA547035000204704C0040A0850
-:103AE0008047040C3020471529415A80470387003E
-:103AF000024702024702A504471B10044000F0479A
-:103B00000301A9A00004800042471F207808F04765
-:103B1000020800BFA0214040020040471D100420C1
-:103B200060A54702404702A047020100400205503D
-:103B3000471C2007605A8047030780024702026043
-:103B40001E8556471D0340A547035190B04702010B
-:103B50004704F0471D01605A804702D9A3840247F9
-:103B6000020800168F0E470E01470D1C004FA54797
-:103B700004A0703C4706F0470E01470D2601E15AAC
-:103B800080470219B5F43E47041E8F0E471C1C20C7
-:103B9000390F47031900B44704028200F1471C267D
-:103BA00005580F804702F9E38002470360148F0C29
-:103BB000471C1C3C2F0F4703100034470320020210
-:103BC00000F1471C2061DB0F8047028003000247A1
-:103BD0000306548F0C471C3C381C0F4702180090FA
-:103BE000F03C4703028000F1471D04C80F80180015
-:103BF0003DA5E03E006047021C8F0C471C3C380C82
-:103C00000F47031000283C47040190F1471D25CAC7
-:103C10000F8047029005643E47041DBF0C470E0409
-:103C2000470222CF4A6047050400042047031000E2
-:103C3000188F62E1004100421C05A0470E040004F9
-:103C400067FB404047050400360447031000981DF9
-:103C50006CF1024002002C470210014706044702A3
-:103C600008284702100025F03C600042470410027B
-:103C700032DAC34000400185414100050003810064
-:103C80005004470A16A804470206067A7C424047B9
-:103C9000060402DFD348000459F0728147041EE095
-:103CA000504710023FE8F24707801C7AE0A5470220
-:103CB00020080F3001400001C25C05A00401470D3F
-:103CC000100E62DFFA4707102026FC500100C018D2
-:103CD000E13A01000147026E4713214FF547070102
-:103CE0004221D90740007D000F2811000101C026A4
-:103CF000020414471006EBF64707011C05FD03619B
-:103D000000021987F69D000247021F800420470821
-:103D100009470408000628E0182040470408470225
-:103D200002DFE3402000D80B656100940142B50139
-:103D3000470A0847040C002E07FA040247050C0046
-:103D4000042BCCC36070009187BA8900CA0200219D
-:103D5000C20020470F3C0010A0470208470601F0B0
-:103D6000D3410147029FF95100040002B680404749
-:103D700011014EA0470902E8C342020070153EC17E
-:103D8000470306D5A0A047100642D0B94047070414
-:103D90002830A047031805732147036037A1470F58
-:103DA00006000E3BDCB1624705064703DAA00018A7
-:103DB000007C0FBB09006001E035D047020A4708CC
-:103DC00010470602CFE0470D0400190F21194702E2
-:103DD000014247040447080E47040E47021BD04720
-:103DE0000930470304059981720D470202470B030E
-:103DF000000980920447047F60C247060401420321
-:103E0000400500100801804703400340470A0300B3
-:103E10000F80174705386CC302470504009E000E4B
-:103E20000A20100058F047034047101814470403B5
-:103E3000F00347081E3C30A008470290E77F214767
-:103E40000306EED4A447090100DE8047030402DA2A
-:103E5000430247073E056EA04703B819FF414702DA
-:103E60004002B6891447090908941047034040F0FE
-:103E7000024707802C3F5ECB470308A983610147B7
-:103E80000202020F470A0801F7470280470260C892
-:103E90000A0247060E20060CC7104702781BEB01EA
-:103EA00008084702468F0847094B001640470201A1
-:103EB00046387B0201000247053C3C100A470330AC
-:103EC00009807447020363C00F470A20001220478D
-:103ED00003BC7AF947030D47052005DA0A2002479B
-:103EE000020772B4080009405E8F081047080B0DE6
-:103EF000941A4247033C00A008470508001C294BC0
-:103F000008002020D005414702800002C20F470A66
-:103F1000080B06A590470369CAA02047050C00209E
-:103F2000020C042032801809200008C047025C8F70
-:103F3000084709200E1000084703243004014705F4
-:103F400004470220CCA141470218B0C02847040210
-:103F50000F470C17900080001429EA04024705045B
-:103F600047020378D1408000D005782847041C8F91
-:103F70000847090700D04703401472D94703014797
-:103F8000050401CA5B4703110567B8404702428038
-:103F90000F47080180000A760080808000767B80D1
-:103FA0002000024703060E14000DA708180159C58A
-:103FB00073BC006047024C8F084709050EDF008084
-:103FC0004703237B470A26CEFF094000D9E3384147
-:103FD00047072047080518DA47053CE980200038E4
-:103FE000470603DBF7470338A1380147040C0008F4
-:103FF000004047023500501347030403C047022620
-:104000006D7040084047040400047C7005470308B5
-:10401000ABA39C20470203010F040040014020E0B5
-:10402000A00147030683D047022428DA501247052F
-:1040300004002423EC4702800071B17EBD4040475C
-:1040400002418F044703467E0D34470201470604B0
-:104050006410A04707020036DAF0484702500743D1
-:10406000000147040F04470201639CEC342000095F
-:104070008047052065DEA0470901FFF4404000D9D4
-:10408000A720000A47020700CF044702024034017C
-:10409000A04708022666500147094370A047035015
-:1040A0000FA40020470204010F0447042FE0022060
-:1040B000470826760E022247070621EC4704980F90
-:1040C000F420470303808F0647020140010A470698
-:1040D000154001800C62CC4705C047043D40E740D5
-:1040E000C10050A7030020470202410F044702020B
-:1040F0000284AA47055A155001002026FE084704ED
-:104100001000804702077CD34A020081D772000C5E
-:104110000801E001CF040080004247050180080348
-:10412000C047020C41DD20470608002E39D00A475F
-:10413000030800C02820470220010F0400C002002D
-:104140004047040D98523C300240002ACF47070CEC
-:104150000006036C470430073028010001C000EF5F
-:10416000044703029E4705080803C047021401E004
-:1041700024001047061C207000414703A0C14702DD
-:10418000404702010F04470437AA010447021952AD
-:104190003C30470302DA10023002470604EE806327
-:1041A000470315310028C0470201EF04470340359B
-:1041B000040010470403C0470303F04703404705CA
-:1041C00006034A1047030803240020470202400F59
-:1041D0000400604703880121804702723C30470396
-:1041E00068EE402200404703060006021E20001829
-:1041F0000031EF32002160470201AF041047022373
-:10420000CDE0470603C14704EF47034047051401CB
-:10421000E04705A5FBE0470306010F0447036004E0
-:10422000C0804704723C304703027D80470240470C
-:1042300006036A0A4703019B2FF483470203808F1A
-:10424000048047060100010E0803C0044702404BEA
-:10425000F1493000080F28044710140500044706F0
-:10426000030008187A3C300447023BCDF040700050
-:1042700010470204470610470280470503A18A47FA
-:1042800004028047060803C447050A40800070FD09
-:1042900024470280470D02804705028047040180C1
-:1042A0005A3C3040000600FA0A40470380470201AA
-:1042B000470D0142C0470401404704038F470203F2
-:1042C000C010470238ED0BC10002008D28470A01DB
-:1042D0000141840001C027824704068047065A3CFA
-:1042E00030400006027A05490005470204000E47E7
-:1042F000092A81A047031F9380470950470203C042
-:1043000010002401505F4047027003004047023014
-:104310004703044706400002800F000847082000BA
-:104320007A3C30000E00637AA540470280470504BE
-:104330004705184704C00060008F000447091808AB
-:1043400003C05800042C70E3404702909D000847CA
-:104350000E01C00300F04709018B523C300C002CC9
-:1043600003FCC34200380008000C470E020014E0B2
-:10437000F847043FC04704080803C05047020170D3
-:104380000500300031F1000C000440470B40022EC4
-:10439000CA5047041DD080470319523C30204702C1
-:1043A00002DA470230008090000400207047057850
-:1043B0004706065415A8470803470303C0470204ED
-:1043C0002C6A81400002000747030447052800F3D8
-:1043D000C2BF800003D280C0F0470701804702724D
-:1043E0003C3006010C026F50401801470306470697
-:1043F00018180007E2954703400EE0F847095000FF
-:104400000AC0470401DA3C47024010CB470402C00F
-:10441000054442800847060402470222470820005C
-:104420007840204703016D34470418470401485081
-:10443000400100704706071C000847037200701116
-:10444000020101470802470608470402470A0447D9
-:104450000220470680470C0147060447040147082D
-:1044600002C0470310471702470608470B084716C4
-:104470000247060847040247060847062047068009
-:10448000471F0300070004470B7C471D03470F6CC1
-:10449000470CA84705024727204708044722024047
-:1044A000C0470408014703020040470408014705CC
-:1044B000200447058010474C03470D70471F0147F4
-:1044C00003044709D0470340473A02471208470D03
-:1044D00080470A80000247030247058047050247DC
-:1044E0000608470620472204470D401030C04718F1
-:1044F000067B38470240626D6140470383DC054715
-:104500000430C0471803DBD0470301AB2022C0476B
-:104510000203C0008047021030C047160103F8ECC8
-:1045200000B001804702016200060083D6000A0045
-:10453000180030C0471703F83001F0470903C20DD7
-:104540001047021030C047160108805A00B014000E
-:10455000AA49A16040030083C447030C0030C04750
-:104560001702002D01800800064B6C028003000337
-:10457000C247041030C0470A80470D14EC50104762
-:1045800002A2EDF540470383CC054702800030C00E
-:1045900047193AD8F04703A1E420470303C2008B30
-:1045A00001001030C04716010A805F8047080300F1
-:1045B00083C60847032030C047172100281047084A
-:1045C000020003C00547031030C0471002470980AE
-:1045D000470502470483C647025C470230C0471ABA
-:1045E00010470503C0470303C2470280001030C0D4
-:1045F0004717080969470740470383D605814703E2
-:1046000030C04718215D470720470303C0000A4711
-:10461000021030C0471708805F181047071000834A
-:10462000DC4703800030C0470901470E227A008032
-:104630004707600003C2470201001030C04717045B
-:10464000000A1847024010F1296047060A47033064
-:10465000C0471801504703040F00014047091030BC
-:10466000C04717043C585010018010F16A0680477B
-:1046700004014702180030C047183C105080470220
-:104680000F00414047091030C04717043C5878A03C
-:10469000470210F121404703A906F380004800308B
-:1046A000C047183C105847030F00400280002019F3
-:1046B0003FE547028C1030C04717043C5C470410AC
-:1046C000F121604047028BACE00A470330C0471835
-:1046D0003C1000C047020F00400280002002A7B536
-:1046E0000A47021030C04717043C5C470410F160D1
-:1046F000470490B788470430C047183C1047040F60
-:1047000047050222EFF54702201030C04717080284
-:104710004B9980470210F16047048BAEF81B4703AA
-:1047200030C0470901470D0210DA1047030F00405F
-:1047300047030202A5A50A47021030C04717080226
-:104740005A470410F168470320A907D19A020C00C8
-:1047500030C047170122EB470220000F47048000BA
-:10476000193EA58002081030C0471708826B470425
-:1047700010F1284704A93CE00A470330C04718114C
-:104780005D47040F0040470280022A268000020095
-:104790001030C04717183DC04704169947058001DF
-:1047A000B50A08470230C04712028C000800083CD6
-:1047B00020470303096B47053FC1ED9047021030C6
-:1047C000C04709056047081C470260470501801083
-:1047D000F1624702060083DE4703180030C0470934
-:1047E00040470802803047068000010F0041C04763
-:1047F0000303C047041030C047130C7C003047034C
-:10480000100080800AA13847020300A940804702B7
-:104810000C0030C0471202C278003047030847023C
-:10482000C00AA040470429404703081030DE471063
-:10483000084702404709C060F180470483C4470528
-:1048400030C2470F01140003470A4000F0800008FF
-:10485000470203C20D0B47021030CE470908470933
-:104860005C470A2A500447030183C44702404702B9
-:1048700030C2470908470620020247028047062047
-:104880000045A0344702800003C20947031030C02E
-:104890000700A0470F804E78470720002A5047099D
-:1048A00002470230C04709084708B2427847090565
-:1048B000A03C402847081030C04712800E470C0229
-:1048C0004702808083D6470530C047090847062045
-:1048D00000F24000084704D0002047030240008057
-:1048E0000003C0470202001030C0074703020F78E0
-:1048F00004470220470854050030470680470A1C39
-:10490000000C0030C04704020F080247082000B323
-:10491000823A8020470680470580470410A204475A
-:10492000071041F700280010470380A04705080042
-:10493000080379000447095981A50A40470ADFB4F2
-:104940004047057147060800608369D0B0470919E0
-:104950008D0D90470902248380280044090AF9003C
-:10496000A0018047030800083DC080E0018020F5D9
-:10497000470306005A64A0470A02E7B3C04000108C
-:10498000222FDA11B047050847023C2071B04702D8
-:10499000A0F080038047021A74470B02AA771447DD
-:1049A00003014148504702804704304704A01000EB
-:1049B0002A57A86047035A44850A470902AA0C02ED
-:1049C0002C4702014000D8B000804704204703F183
-:1049D00047030F50F5C047031A640090470A189226
-:1049E000D428000101406A50104707083DC03047F5
-:1049F0000320F5806047035A4488470B341EB46C8B
-:104A0000470223401BD8F0470608203C00304703EC
-:104A100020F08047041A65010B470940053EC04756
-:104A200004046B8047020800204708144703020073
-:104A30000347020CC5A8000D404707080807C047F8
-:104A400004035810470202003C4708084704404747
-:104A500003332CBB0E008047080112862800014258
-:104A600094DB4703C0470F08470780470A1E804072
-:104A7000470202003B00900080471028470660472D
-:104A80000850A55EE060000208BBDA80E04707013D
-:104A9000E94E518047061047023C1C07470B85062C
-:104AA0008447042A6EF04706744702AA78F847073D
-:104AB0002847023C0207804709025A0054700070E0
-:104AC00047038047070108F46A470420F182470240
-:104AD0000240029DE7470280470702A503424000CB
-:104AE000304703F000024707980B470420F001C04D
-:104AF00047028002830080014708030F52A047034A
-:104B00000C3E6A47090294DE18470A5414850A4786
-:104B10000AF0983C470303C360470901541FD0477C
-:104B20000990144702904709030F13804702600C55
-:104B30003C4E30000180470614C8470201804703FD
-:104B4000E00846005A45E04702184708F0470503C9
-:104B5000C0470A02BC1CD04706220020001A74007D
-:104B6000084709030F13A60447020C3C4A98104754
-:104B70000505000294DD51E000100AF1844704436A
-:104B8000C48047020C4708F0043C20470203C010D1
-:104B900010804705020001540909470305F0A047AA
-:104BA000043C010D0B000C4707030F12806030001E
-:104BB0000C3C4AB180C8470715CA5004470220F58B
-:104BC00080038003005A65E047020C4708F0044761
-:104BD0000403C010100014470602BC1C084704F070
-:104BE000470302001A54000B00044707030F178005
-:104BF00047030C3C5E47028047060294CDF9F0471C
-:104C00000903C4470CF0470503C0470A01541F704D
-:104C1000D0470603470203C04708204702030F1688
-:104C20008047030C3C5A0001C8470714FAB8E04714
-:104C3000080183DE47021C4709F0470503C047030C
-:104C400014470602BC3CB890470983C0470B02AA30
-:104C500017A06047020C3C5A018047060101E8FF9B
-:104C600071C0470507804704010010804708AA0467
-:104C700004470303C010470A542C0847060447069C
-:104C800080470C200400200AA85E181400C04704C6
-:104C90000108F54C704704A76000044705080008A8
-:104CA000470A0420001002A810008A0040470404AC
-:104CB000006419F8F0000100A0470A08470E083DFB
-:104CC00060000447052000083DC047048005E0005F
-:104CD000380004C3FCA04711483C00F04708083CDA
-:104CE00047062BA342D000043C3E470B020F7847F7
-:104CF0000360083D6010000180470A05804019B03C
-:104D000006000600C3C4E04702184707020F084721
-:104D100004083C00F8470B700008470201EB4047CD
-:104D200002243C471230083CE070470280470440B0
-:104D3000083DE0304702802845E04704C3C4A9810C
-:104D4000470F22083C20080014C04705083C2047B4
-:104D500003C0242BA002C047023C010108470902FE
-:104D60000F304704083CE001F04707083C60470368
-:104D7000204009B047023000C3C4A9984709020F78
-:104D80004705083C2001E04707083C20470521EB88
-:104D90004047033C0101470D20044702183C6000D6
-:104DA0008008470405470905E2E0284702C3C5E03B
-:104DB000470D3C384702083C20014705024705B033
-:104DC0004703808BA06047033C4713083C40F847EB
-:104DD00008083CC047042A01A440470201C3C5A0FB
-:104DE0004711083C20F04708083C20B047032050FA
-:104DF000A04703043C471202083CC04707010008D3
-:104E00003DE0470501B1404703C3C5A0184710085E
-:104E10003C470A083C4702C047033B7C2047033C11
-:104E20000103470D0E010020083C60470380470541
-:104E3000083CE047038400012447020200AA85A140
-:104E400001000C470B028000083C200004470708C3
-:104E50003C2010E147020200B447042A8100080008
-:104E60000447027200901103010147080247060837
-:104E70004704024708078004470220470680470C82
-:104E800001470604470401470D10472A0847160248
-:104E9000470608470402470608470620470680479A
-:104EA0001F024703044729034729A0472D10471E27
-:104EB000020040470408014703020040470408017C
-:104EC0000780470320044705801047450147060334
-:104ED000470D204718024706034703044709C04708
-:104EE0000340472B38472108470B400080470A8082
-:104EF0004705024705804705024705180847062071
-:104F00002C471101470F04470D400030C0472B10BC
-:104F100030C0472C30C0472B1030C0472C30C04722
-:104F20001004471801001030C0470F80471C30C0E4
-:104F3000472B1030C0472C30C0472B1030C0470ED5
-:104F400010471D30C0470A0200140B471D1030C027
-:104F5000470C28E1471E30C0471B04470F1030C0E4
-:104F6000471B0A471030C0470B20280B471D103045
-:104F7000C0470C14E1471E30C0472B1030C0472CEF
-:104F800030C0472533069047031030C047242031F6
-:104F9000A480470430C0472B1030C0472C30C04796
-:104FA000253C0247041030C0472304803C144705C9
-:104FB00030C04708804721801030C0472901400099
-:104FC00030C047270147031030C0472C30C0470A84
-:104FD00080471D0A47021030C0472801470330C0F0
-:104FE000471D0300F047070547031030C0471FF176
-:104FF00047070D9A470330C0471702A809704705B5
-:10500000404706010800041030C0471180470501E1
-:10501000544147041000796047050801000800303A
-:10502000C047150447023C47060B404703802A81CE
-:10503000000847021030C04715020007C058470457
-:105040001008684704AA85E199470330C047183C17
-:105050001047050301428047023C47051030C04716
-:105060001707C04A470410086A06C04702C3C5A014
-:10507000470430C0470F0447053000025A40470537
-:1050800003014047033C47051030C0470F0A47075C
-:10509000065848470410086B66804702C3C5E00005
-:1050A00080470230C0470FF047083C100847040B08
-:1050B00041428047023C0147041030C0470F10476F
-:1050C0000707C05A38470310002A06C04702C3C466
-:1050D000E018470330C04711C04705025A50014746
-:1050E000040B41428047023C010147031030C04796
-:1050F0000E50470280470506585E71C047021000F7
-:105100002B66C04702C3C4AF00A0470230C0471798
-:10511000025A504705034704013C47051030C04779
-:10512000100180470506584870E0470210002847E4
-:105130000301C3C4E04702180030C0470B083C47D6
-:1051400009010001409847040100034047023C3632
-:1051500047041030C0470B083D6047090447023838
-:10516000E0470210002800404702C3C4E7470E3C56
-:1051700047021010D9470D04470506C04702080230
-:1051800047112000034B470D02470502800010081D
-:105190001CE0470D0200084704020020470302807C
-:1051A00047041047041BB842C04702108090090210
-:1051B000470B1C470C01470A073E470310149795FD
-:1051C00098471301E04707016BCA999047093016C9
-:1051D000B500024713F0470701606999904705063B
-:1051E000804702103488470F084704010020470415
-:1051F000040002A8100847030A008364471580478B
-:105200000401E04705020202A85C1847030A03797B
-:1052100042804718D9F0470702003C1000E04704DD
-:10522000704704069E901B47110B4B80E047070711
-:10523000C05C001000040807B0470301A94F800AB2
-:10524000470E053203D42008B002470508003C474A
-:10525000020A470240A08047042801DD80470F3042
-:1052600003D56A7880024704300007C05C00044719
-:1052700003A37847051C95471E3C4702A047090E2B
-:1052800001AD1A470E0160470378470817C05C005C
-:10529000104708100617900A00184707020F470525
-:1052A000A0014C470602900147021000E0470208A7
-:1052B0000B38470534A01B4709920F784705824DEC
-:1052C000470601470204000C0010470303BC00041A
-:1052D00047020216950A471103D0470220470406E9
-:1052E00004003C2047032020F08047040237800957
-:1052F000471004001A788147050104183C604703F1
-:105300002020F78166800201802CE04703023FC025
-:105310004709024703D070002047040247062020B7
-:1053200020F00142808000138299090200443FC0AE
-:105330004709010004001A8180470B01002020F377
-:105340000366C00012A34605471340470A3C4702C4
-:1053500080003020F047051E810029471004021A02
-:1053600001E0470604183C60470420F780E047024C
-:10537000101E8CC0470E01470301C009E0284709F1
-:105380007008002060F08044008000084E810A0010
-:1053900080470B02470204021A79F004470B2000F1
-:1053A00020F3800700800004B408471202D050A008
-:1053B0004707603C2047032060F080470250001000
-:1053C000038D471104000A50A0084706183C4047C7
-:1053D000032020F7470410001D80470E01470203F9
-:1053E000C25010A04707229447048060F080470213
-:1053F00002003040C79F470D02800007C0CAD04757
-:1054000007081A9408470201E020F7470303103009
-:10541000941F0E471003C06047020447050C029416
-:105420000050A0006060F047052001ED80471007A4
-:10543000C1EE01E0804705080A94084702010020F8
-:10544000F7470306100014A5470218470B0147024F
-:1054500003C040508447060C01680C50A00038601F
-:10546000F0470502810D1F40470C02470207C0EAC2
-:1054700000B84705020A0A940100A0470220F74736
-:1054800002084000029EE00A471042A81030800047
-:105490004047112047040B47100AA85A001000C0CB
-:1054A000471150471543C010008047083C4704018E
-:1054B000010F34028047020142000E47100C3C5A93
-:1054C00001904707083CE04705073140470220812B
-:1054D00055E0471123C0003047093C000800400058
-:1054E0008000A0000347160C3C5A00014707083C07
-:1054F0006071804703512047070E471023C04702C1
-:1055000001C047073C20008080000FF0A1404717F2
-:105510000C3C5E4709083C40019047028FA52002E1
-:1055200080470401471123C0101047093C2047035E
-:10553000010103B8001000402042E09047100C3CED
-:105540004A99804707083C40470402074702200069
-:10555000100056879E471023C0101047093C0008D2
-:105560004702C04702014047031C16B147110C3CDB
-:105570004A984708083CC0584702804707102DD07A
-:10558000471143C0470B3C47028000404704034794
-:10559000160C3C4E470201804705083CC000100134
-:1055A000470520470718470E43C2E0470A3C201032
-:1055B000470501428047050D47100C3FEE4709089B
-:1055C0003CE0984706028047050110470C40471A07
-:1055D0006300294000100020470B704708804711E6
-:1055E0001200A9408018470D4002470408472720B1
-:1055F00001470438471206470618004047250300B4
-:105600004003C20010472701470283D60018470E07
-:1056100030470401470C04470540471B80470B02F5
-:10562000470402470240470F0F06804703083C002B
-:105630000147050285470B044702040281C0470960
-:105640000102007A804703083D40008047040102C0
-:10565000470B074703A804B18A470D280002083CFE
-:1056600020014702C0470408403C00088000802A0F
-:105670005034024702840281E108470C06470308C0
-:105680003C6001E000C047034000183C605010142B
-:105690008025A04702404702E804B981470F50081F
-:1056A0003C470B3C20014702402AA0404702010032
-:1056B0000280C0471050083D607A000180470518FD
-:1056C0003D4000A001002AA73047020405E804F08D
-:1056D0000A2018470C7000483C470702700023C09E
-:1056E00000700447022E7B384703060294E00E4701
-:1056F00010083CC047090BC140000A47022240285D
-:1057000000054702E826B00147031006B0470480B1
-:105710007E80470301541847080800B01908D04795
-:1057200005034047022A81470580BEF198470202DF
-:105730000276803847022295EA01E10080470401A1
-:105740000A75E971F0470401E04002012A96E780FA
-:105750004705D010470280AF0654300002017C0B91
-:10576000470601470202F43C47048050BC604702F0
-:105770000430E6D047048286B01C470305337668C0
-:105780004703147D470780010141791808C0004094
-:10579000A187E0470391E7B18047032004A14704B4
-:1057A0008412822847020968090880470702BC2A38
-:1057B0007180470401E047033E820919470380A531
-:1057C000E847030200F20E6C47020A940139E1C077
-:1057D000470714FA01C04705E047033E94C0094754
-:1057E0000303C14705AF0E42600202096808704713
-:1057F000080154087047034000FC470515910F4706
-:105800000343C4A0470304053A462805000A940050
-:1058100080470802955E8008000400116447055423
-:10582000A8470403C10100180008550A47042014C2
-:105830001C470601470202BC3A70804702050080FF
-:1058400002470303C0001E470343C5AD9A4703A5A3
-:105850001F86470302BD6950A0470580470215EC2B
-:1058600080B047020501214040470283D6000A4725
-:105870000303C0050A4703403604204702083C20C2
-:10588000084702804702024703D82F08F04702A8C2
-:10589000503C002047023C00D59B470343C488018D
-:1058A00047020220D2A0644702083CE0504702C0F1
-:1058B00047040148D47A701000042475F847043C6A
-:1058C00015C38A470303C0470310000403CC0040FC
-:1058D00040083C4708040001C019D847030500BC34
-:1058E0000020008028B5918A470343C5A01E001000
-:1058F00042205220600050283CE07980018047041B
-:105900000102E8EBB80001800007A1600006001466
-:1059100007E947021847023D000D000200050AC0D2
-:105920003C47047C10F0470702A809D0A540002C92
-:10593000BD746247022030CE8D47044021A01B4732
-:1059400003A557542802002040F980B047040147BE
-:105950000202955D800847022C3DF7604020002040
-:10596000F4950A4704720080110062002F824702FA
-:105970000103470410000800101002020400220076
-:1059800020200008042404470708044703200400DB
-:105990002020202400082C040C0C47030410100CB9
-:1059A000001000084703080847030830003030049F
-:1059B000002226060408000404000447042008000E
-:1059C0000C000828000C000800280800100808280F
-:1059D00008470228282847020C101010240002242F
-:1059E000242C2C0400282C21010800113010200048
-:1059F0000422022247032020203004083010001027
-:105A00000800040404040004000447060800040815
-:105A10000808470208470224240400042C2C2828E4
-:105A200047022101211004083010201047022000F5
-:105A30002020080420202000044704040800040457
-:105A400004040010101010100006081008080302CB
-:105A50004702040408020424242404002C2C2820D7
-:105A6000020021012100020A200028000802282843
-:105A700020300400303010200002470204000A02E7
-:105A8000040400140006101010080447020808005F
-:105A900008020C040C2C02022C2C2C2C0006282AA8
-:105AA0002A470208220022000C022002202047027E
-:105AB000202030300202507040000A0E0C080C0406
-:105AC00047030400100808101002120400022020EE
-:105AD00020080824242400020247040A0E47030277
-:105AE00004470206240608082C2428280202201055
-:105AF00030100E0A201028084702280020200A082B
-:105B0000203030180400021A0A040A0A0C040C0C93
-:105B1000470208082808020C080828080C02280A6E
-:105B20002802000808022008080020282010000C85
-:105B30001010041008020404280C04082820212155
-:105B4000080031303020060E222222200E06204787
-:105B50000220040C101010000A4702040404000C78
-:105B6000040447020A02470208000608080A02085D
-:105B70000800060406040206082A284703212131EA
-:105B800030060A30302020020220202000080400C5
-:105B90002010000600100010000C0400040404068D
-:105BA0001614101010020618100808014702080405
-:105BB000040A020404040604082A0C2A220A022306
-:105BC000232322000822222A200A02282A30100435
-:105BD000001010000802020008080008000C040C65
-:105BE0000C0206180818180400081808080A020C05
-:105BF0000C0C0600080E04220E0A06222A2222009D
-:105C000008222222220C022222222202003200102A
-:105C100010000240504000020C08080C04080A045E
-:105C200004470308101012120400024702200E0459
-:105C3000240424200C0E02000202020C02020202C2
-:105C400004020602060602080A262A08080B30305B
-:105C500030300608202028284702820080010300F7
-:105C600002282828000208082818180E091A1A0AFB
-:105C7000080208080C0C0C00020C002208000E029E
-:105C80000A22020603020222020808020222020875
-:105C90000822203010020410140404080004000834
-:105CA00008040808000121020011301020080E022B
-:105CB0002202000A084705021000101002470210D5
-:105CC00000040A0C04040006080802000A02060088
-:105CD0000A0A020E0A000606060200040A0A0A025E
-:105CE000020013011130040A0030002002470508A9
-:105CF0000610470306470502081000044703141462
-:105D000010100002181018180147020804060200BB
-:105D1000060606020C080A0A0A00080A0301032004
-:105D2000470202200A020A001A0A1A120400081A7C
-:105D300008080002080808080800080C0C0C0204F7
-:105D40000C001810040010180010000204060606CB
-:105D50000808060202000A0C0002000247032000A5
-:105D6000220C02000212000200121212024702402C
-:105D7000424047020C0808080400020404044704D7
-:105D80001012120400124703020004060602470222
-:105D9000020202024702024702060402040606004B
-:105DA00002000A021A0A00011212003204470220FD
-:105DB0000820000208080808020008000810040370
-:105DC000121A120847040402020206060202000424
-:105DD0002202020006010002000247022200020A1B
-:105DE00047023A2A321A020404120404470408083B
-:105DF0000400080001010200111010470204020211
-:105E0000024708024702101002001010001000069E
-:105E100004060602470202020A000600080A0402FB
-:105E20000002040400020004080A0A10020013130E
-:105E300013020447020247061047020647021000F9
-:105E4000060010001047020A4702144703141410FA
-:105E500004000218001818000110120616020006AD
-:105E60000602000400080808470202010101470475
-:105E70001018100200181A1A0A04000A0208020078
-:105E8000020008000847040404020404040010048B
-:105E90000010101210000216060606470302470201
-:105EA000020408080847061004021000101002003F
-:105EB000100202020400020200020008080808089A
-:105EC0000002040404044704120204001210101219
-:105ED00002000616060247030247060400040004F7
-:105EE00004001402001818181A0001120202020419
-:105EF00000024702080002080800080247050401E2
-:105F000012021210470210120612000206060006C4
-:105F1000000447022000060120002047041018104A
-:105F20004702383A320A0204060606044702110103
-:105F300062003F8247020103470802470802470602
-:105F40000101470620204706202047060420470677
-:105F50004004470740470E858447070147068047AE
-:105F6000088047060202470602470802471E044708
-:105F70000804471E0404471E204707202047062028
-:105F800020470601470801473601014716424708E6
-:105F90004247060202470E212047062021470610ED
-:105FA00020470614144706505047061010470610A5
-:105FB0001047069511470610944706909047061023
-:105FC000104706021047060202472604044726042B
-:105FD000470804471E204707202047062020470681
-:105FE0000101472E01470801471E42424707024769
-:105FF0000630204706303047061111470614104777
-:106000000650144706105047061010470611104757
-:106010000610114706949447061090470610104743
-:106020000612104706121247061010470710470EB7
-:1060300004470804472E0404472E20204706212049
-:1060400047070147260101470882008001034720D6
-:1060500052024706305247063030470610104706B6
-:106060001110470604154706404047160101470E28
-:1060700084470804470E1202470612104706101202
-:106080004706101047061010470604144736044709
-:106090000804472E202047060121471E014708011A
-:1060A000471610470712104706301247067272470C
-:1060B0000710470E0447074105470740470E0147B1
-:1060C000080147160404470602470802470E020269
-:1060D00047061047071010470610104706101047D4
-:1060E0000710476621204707214716010147161070
-:1060F0004707101047061212470620304706422075
-:1061000047074247164140470701470E010147260E
-:106110000202471602470802470E104707101047B1
-:10612000061010470710475E204707212147081136
-:106130000262002F824702010347081B1B47041F0E
-:106140001B4704041F47101B47051B1B47041F1B4D
-:1061500047041F1F47101B1B47041B1B47041F1F1F
-:1061600047041F1F47051B470A1B1B47051B470406
-:10617000040447041F1F47051B470A1B1B4704E471
-:10618000FB4704E4E447041FFF47051B470AF919CE
-:106190004704E4F94704E4E44704F7F747051347E5
-:1061A0000AF9F94704E4F94704E4E44704F7F74738
-:1061B00005F3470AF9E9470414FD47041E1C470488
-:1061C000F7FF4705E1470AE9E947041CFD47041EBC
-:1061D0001A4704EFFF4705E1470ADDC947041EDD02
-:1061E00047043E3A4704BDBF4705A9470ADDD947E2
-:1061F00004A2FF4704A6A24704BDBD4705B9470A4C
-:10620000FFDD4704A6FF470484864704BDBD47045D
-:1062100004BD470AFFFD470406FF47040404470482
-:106220003D3D4704043D470AFFFF470406FF47047E
-:1062300004044704FDFD470404FD470AFBFB470532
-:10624000FB4704244705FDFD4705F9470AFBFB47CB
-:1062500004FBFB4704FFFB4704FFFF4705FB470A1E
-:10626000FB224704FBFB4704DFFB4704FFFF470516
-:1062700022470A22024704FBFB4704DFDB470426D0
-:10628000FF470522478002820080010347022C2C31
-:1062900047041F3E47041F1F4704CCDE4705C8477D
-:1062A0000A3E2C47041F3F47049F1F4704DEDE477A
-:1062B00005C8470A3F3E47041F3F47049F9F4704C6
-:1062C000DEDE4705DA470A373647040137470489D7
-:1062D0008147045ADA470552470A76364704C1F621
-:1062E0004704A9814704FAFA4705D2470A7474475C
-:1062F00004C1F44704A9E94704F2FA4705F2470A42
-:1063000074744704E5F44704EDED4704F2FE4705D5
-:10631000F2470A7474470427744704CF8F47047602
-:10632000FE470570470A747447041F7447049F9F13
-:10633000470474F6470574470A746447041B74479E
-:10634000049B9B470476F6470574470A6060470440
-:10635000197047048999470476F6470576470A601D
-:10636000604704096047048989470476F647057643
-:10637000470A64644704096C47048189470476F638
-:10638000470576470A76764704097E4704818947A0
-:106390000476F6470576470A76764704297E470451
-:1063A000C189470476F6470576470A777647047F22
-:1063B0007F4704F7FF470477F7470576470A77607A
-:1063C00047045F7F4704B7FF470477F747056047F7
-:1063D0000A612047045F7F4704B79F470461F7477E
-:1063E0000540478002110362003F824702010347D4
-:1063F000838282008001034783822244B201060027
-:1064000047000000000000000000000000040240FF
-:10641000000400000A00090000140240000400000B
-:106420000A000900000C0240000800000B000900EF
-:1064300000080240000400000A00090000140240A5
-:106440008000000007000900000002400200000078
-:1064500001000900001C02402000000001000000B3
-:10646000001C024008000000010000000000024083
-:106470000008000001000000000000080080000883
-:106480000000010800800108000002080000040864
-:106490000000080800000C080000100800001408A4
-:1064A0000000180800001C08000008001000180078
-:1064B00020002800300038004000480050005800FC
-:1064C000000000006410B71DC8206E3BAC30D92618
-:1064D0009041DC76F4516B6B5861B24D3C710550C4
-:1064E0002083B8ED44930FF0E8A3D6D68CB361CBEC
-:1064F000B0C2649BD4D2D38678E20AA01CF2BDBDA0
-:106500004932435F504D49435F4D414700537475D5
-:10651000636B20627574746F6E2072656769737443
-:10652000657220697320696E76616C69642C2063E2
-:106530006C656172696E672E00427574746F6E20AF
-:1065400069642000697320737475636B2100427560
-:1065500074746F6E20776173207075736865642042
-:106560006F6E20626F6F742E20427574746F6E2090
-:10657000636F756E7465723A2000446973706C6164
-:106580007920627573792D776169742074696D65FE
-:106590006F75742065787069726564210046504794
-:1065A0004120636F6E66696775726174696F6E20F2
-:1065B0006661696C65642E00446973706C61792052
-:1065C000696E697469616C697A6564206166746575
-:1065D00072200020726574726965732E00446973BD
-:1065E000706C617920696E697469616C697A617433
-:1065F000696F6E206661696C65642E004352455375
-:106600004554206E6F74206C6F7720647572696ECC
-:10661000672072657365740043444F4E45206E6F6A
-:1066200074206C6F77206166746572207265736583
-:106630007400435245534554206E6F742068696757
-:1066400068206166746572207265736574004344E6
-:106650004F4E45206E6F74206869676820616674CC
-:1066600065722070726F6772616D6D696E6700454B
-:106670006E61626C696E67203676362028446973D5
-:10668000706C617920564444432900456E61626C08
-:10669000696E67203476352028446973706C61799F
-:1066A0002056444450290044697361626C696E67E6
-:1066B000203476352028446973706C617920564403
-:1066C0004450290044697361626C696E67203676B4
-:1066D000362028446973706C6179205644444329FC
-:1066E000002E2E2F7372632F647269766572732F7A
-:1066F0006932632F6932632E63002E2E2F7372630B
-:106700002F647269766572732F6932632F69326301
-:106710005F68616C2E630046617374204D6F646521
-:1067200020506C7573206E6F7420796574207375BA
-:1067300070706F72746564002E2E2F7372632F64F5
-:106740007269766572732F7065726970685F636FC6
-:106750006E6669672E6300616464726573732000FE
-:10676000206973206F75747369646520737973741D
-:10677000656D20666C617368006661696C65642094
-:10678000746F20657261736520736563746F722026
-:106790000050726F6772616D206661696C6564207C
-:1067A0004000496E76616C6964206669726D77613C
-:1067B0007265206465736372697074696F6E21001D
-:1067C000436865636B73756D6D696E67206669728A
-:1067D0006D77617265207570646174650043616CEA
-:1067E00063756C6174656420636865636B73756D54
-:1067F0003A2000496E76616C6964206669726D7733
-:106800006172652043524320696E205350492066CF
-:106810006C61736821007072765F65726173655F89
-:106820006F6C645F6669726D776172650070727615
-:106830005F77726974655F6E65775F6669726D77A1
-:106840006172650057652772652064656164004365
-:106850006865636B73756D6D696E67200020627982
-:106860007465730D0A00436865636B73756D202D45
-:106870002077616E746564200020676F7420004F7C
-:10688000757220696E7465726E616C20666C6173DE
-:106890006820636F6E74656E747320617265206228
-:1068A00061642028636865636B73756D2066616938
-:1068B0006C656429212054686973206973207265AE
-:1068C000616C6C792062616421004F757220707276
-:1068D0006576696F7573206669726D776172652080
-:1068E000757064617465206661696C65642C2061F3
-:1068F000626F7274696E67207570646174652E00D2
-:106900004E6577206669726D7761726520697320C4
-:10691000617661696C61626C6521004C6F616469CC
-:106920006E67207265636F76657279206669726D35
-:1069300077617265004661696C656420746F206CD4
-:106940006F6164207265636F766572792066697223
-:106950006D776172652C20737472696B65206F6E40
-:10696000652E2054727920616761696E2E00466140
-:10697000696C656420746F206C6F6164207265635C
-:106980006F76657279206669726D776172652C2009
-:10699000737472696B652074776F2E20547279203E
-:1069A000616761696E2E004661696C656420746F71
-:1069B000206C6F6164207265636F76657279206602
-:1069C00069726D776172652C20737472696B6520D2
-:1069D00074687265652E20534144205741544348E2
-:1069E0000048415244204641554C54006578697432
-:1069F000207374616E646279000D0A0D0A0D0A003D
-:106A0000E29688E29688E29688E29688E29688E2A4
-:106A10009688E295972020E29688E29688E296880A
-:106A2000E29688E29688E29688E2959720E2968838
-:106A3000E29688E29688E29688E29688E29688E274
-:106A4000959720E29688E29688E29688E29688E218
-:106A50009688E29688E29688E29597E29688E29692
-:106A600088E29688E29688E29688E29688E2959790
-:106A700020E29688E29688E29688E29688E29688F6
-:106A8000E29688E29688E29688E2959700E29688F8
-:106A9000E29688E29594E29590E29590E29688E2FB
-:106AA0009688E29597E29688E29688E29594E29538
-:106AB00090E29590E29590E29688E29688E295972A
-:106AC000E29688E29688E29594E29590E29590E2CB
-:106AD0009688E29688E29597E29688E29688E29513
-:106AE00094E29590E29590E29590E29590E2959DE2
-:106AF000E29688E29688E29594E29590E29590E29B
-:106B00009688E29688E29597E2959AE29590E295CA
-:106B100090E29688E29688E29594E29590E29590CC
-:106B2000E2959D00E29688E29688E29688E2968851
-:106B3000E29688E29688E29594E2959DE29688E254
-:106B40009688E29591202020E29688E29688E29548
-:106B500091E29688E29688E29688E29688E29688A4
-:106B6000E29688E29594E2959DE29688E29688E224
-:106B70009688E29688E29688E295972020E29688A9
-:106B8000E29688E29688E29688E29688E29688E223
-:106B90009594E2959D202020E29688E29688E295E1
-:106BA0009120202000E29688E29688E29594E29572
-:106BB00090E29590E29688E29688E29597E2968830
-:106BC000E29688E29591202020E29688E29688E27B
-:106BD0009591E29688E29688E29594E29590E29506
-:106BE00090E29688E29688E29597E29688E2968807
-:106BF000E29594E29590E29590E2959D2020E296B0
-:106C000088E29688E29594E29590E29590E29688E3
-:106C1000E29688E29597202020E29688E29688E224
-:106C2000959120202000E29688E29688E2959120B6
-:106C300020E29688E29688E29591E2959AE296881B
-:106C4000E29688E29688E29688E29688E29688E262
-:106C50009594E2959DE29688E29688E29688E2967F
-:106C600088E29688E29688E29594E2959DE296887D
-:106C7000E29688E29688E29688E29688E29688E232
-:106C80009688E29597E29688E29688E29591202090
-:106C9000E29688E29688E29591202020E29688E2AA
-:106CA0009688E2959120202000E2959AE29590E264
-:106CB000959D2020E2959AE29590E2959D20E2959F
-:106CC0009AE29590E29590E29590E29590E2959007
-:106CD000E2959D20E2959AE29590E29590E295905A
-:106CE000E29590E29590E2959D20E2959AE295904A
-:106CF000E29590E29590E29590E29590E29590E28F
-:106D0000959DE2959AE29590E2959D2020E2959AD4
-:106D1000E29590E2959D202020E2959AE29590E2FE
-:106D2000959D202020004C617374206669726D77F8
-:106D300061726520626F6F74207761732073746174
-:106D4000626C653B20636C65617220737472696B61
-:106D5000657300486F6C6420646F776E2055502017
-:106D60002B204241434B202B2053454C454354207C
-:106D7000666F72203520736563732E20746F2066F2
-:106D80006F7263652D626F6F7420505246004669C2
-:106D9000726D7761726520697320657261736564D5
-:106DA000005761746368646F67206361757365641D
-:106DB000206120726573657400536F667477617229
-:106DC00065206661696C75726520636175736564C1
-:106DD0002061207265736574004661696C6564208A
-:106DE000746F207374617274206669726D7761725A
-:106DF000652C20737472696B652074687265652EEA
-:106E0000004661696C656420746F207374617274EC
-:106E1000206669726D776172652C20737472696B7C
-:106E2000652074776F2E004661696C656420746F0D
-:106E3000207374617274206669726D776172652C5B
-:106E400020737472696B65206F6E652E00466F72D9
-:106E500063652D626F6F74696E67207265636F760C
-:106E6000657279206D6F64652E2E2E00426F6F74EF
-:106E7000696E67206669726D7761726520402000D7
-:106E80002E2E2E0D0A0D0A00426F6F742062697457
-:106E9000733A20004153534552543A20003A00417E
-:106EA0005353455254004153534552544E002A2ADD
-:106EB0002A20575446200053544D33320053544D2A
-:106EC0003332207065726970686572616C206C691C
-:106ED0006272617279207472697070656420616E8B
-:106EE000206173736572740069746F6120627566E6
-:106EF00066657220746F6F20736D616C6C002E2E4E
-:106F00002F7372632F7574696C2F736C652E630019
-:106F1000FF00000000010203040102030406070849
-:046F20000900000064
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_robert_evt@1478015115.bin b/bin/boot/nowatchdog_boot_robert_evt@1478015115.bin
deleted file mode 100755
index 000baba678..0000000000
Binary files a/bin/boot/nowatchdog_boot_robert_evt@1478015115.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_robert_evt@1478015115.hex b/bin/boot/nowatchdog_boot_robert_evt@1478015115.hex
deleted file mode 100644
index 5183aade98..0000000000
--- a/bin/boot/nowatchdog_boot_robert_evt@1478015115.hex
+++ /dev/null
@@ -1,1784 +0,0 @@
-:020000040800F2
-:1000000000AA01208D25000889250008E91D0008A7
-:1000100089250008892500088925000800000000BE
-:10002000000000000000000000000000892500081A
-:10003000892500080000000089250008892500089E
-:1000400089250008892500088925000889250008D8
-:1000500089250008892500088925000889250008C8
-:1000600089250008892500088925000889250008B8
-:1000700089250008892500088925000889250008A8
-:100080008925000889250008892500088925000898
-:100090008925000889250008892500088925000888
-:1000A0008925000889250008892500088925000878
-:1000B0008925000889250008892500088925000868
-:1000C0008925000889250008892500088925000858
-:1000D0008925000889250008892500088925000848
-:1000E0008925000889250008892500088925000838
-:1000F0008925000889250008892500088925000828
-:100100008925000889250008892500088925000817
-:100110008925000889250008892500088925000807
-:1001200089250008892500088925000889250008F7
-:1001300089250008892500088925000889250008E7
-:1001400089250008892500088925000889250008D7
-:1001500089250008892500088925000889250008C7
-:1001600089250008892500088925000889250008B7
-:1001700089250008892500088925000889250008A7
-:100180008925000889250008892500088925000897
-:100190008925000889250008892500088925000887
-:1001A0008925000889250008892500088925000877
-:1001B00089250008892500088925000861070008AD
-:1001C0006D07000889250008000000008925000847
-:1001D0008925000889250008892500088925000847
-:1001E0008925000889250008892500088925000837
-:0801F00089250008892500089B
-:0801F8009C0000000100000062
-:1002000053B94AB9002908BF00281CBF4FF0FF317D
-:100210004FF0FF3000F03CB882B0EC462DE90050C2
-:1002200000F01EF8DDF804E002B00CBC704700BF1F
-:100230002DE9F041904606460F461D46069C00F00B
-:1002400029F808FB01FC8646A8FB002300FB05C536
-:10025000B21A2B4467EB0303C4E90023BDE8F08125
-:100260002DE9F8431D46174680468946089E00F052
-:1002700053F900FB05F3A0FB074507FB0137B8EB7B
-:1002800004043D4469EB0505C6E90045BDE8F88373
-:10029000704700BF00292DE9F047C0F2A280002678
-:1002A000002BC0F298808C4690469E461546044628
-:1002B0000F46CBBB8A4256D9B2FA82F33BB1C3F1A7
-:1002C00020029F409D409C4020FA02F21743280CD8
-:1002D000220C1FFA85FEB7FBF0F100FB11770EFB35
-:1002E00001F342EA0747BB4207D97F1980F0018139
-:1002F000BB4240F2FE8002392F44FF1AA4B2B7FB82
-:10030000F0F300FB13770EFB03FE44EA0747BE45FC
-:1003100006D97F1980F0EB80BE4540F2E880023BB1
-:1003200043EA0143002203E08B420FD90022134627
-:10033000341C4FF0000518BF0124604265EB4501F5
-:100340005840514000196941BDE8F087B3FA83F283
-:10035000002A40F08380804540F2CD808B42C0F07F
-:10036000CA801346E4E712B90123B3FBF2F5B5FAEC
-:1003700085F2002A3BD1781B4FEA154E1FFA85FC07
-:100380000122210CB0FBFEF80EFB18000CFB08F359
-:1003900041EA0047BB4208D97F1980F0B080BB42D8
-:1003A00040F2AD80A8F102082F44FF1AA4B2B7FBB7
-:1003B000FEF30EFB13770CFB03FC44EA0747BC4536
-:1003C00006D97F1980F09980BC4540F29680023BA7
-:1003D00043EA0843ACE752426FEA060663EB430385
-:1003E00061E740424FF0FF3661EB410158E795402D
-:1003F000C2F1200107FA02F34FEA154ECF4024FA6A
-:1004000001F194401FFA85FC1943B7FBFEF24FEA55
-:1004100011480EFB12770CFB02F348EA0747BB4278
-:1004200005D97F1971D2BB426FD9023A2F44FF1A06
-:1004300089B2B7FBFEF80EFB18770CFB08F041EA17
-:100440000743984206D95B1961D298425FD9A8F157
-:1004500002082B44181A48EA024292E7C2F1200728
-:1004600003FA02FE08FA02F5914028FA07F32CFA83
-:1004700007FCF84043EA0E0E08434FEA1E48070CFB
-:100480001FFA8EFABCFBF8F908FB19CC0AFB09F13C
-:1004900047EA0C4C614507D91CEB0E0C32D2614582
-:1004A00030D9A9F10209F444C1EB0C0C80B2BCFBB9
-:1004B000F8F308FB13CC0AFB03FA40EA0C418A4527
-:1004C00006D911EB0E0125D28A4523D9023B71448E
-:1004D00043EA0943CAEB0101A3FB0589494503D35C
-:1004E00003D19440444500D2013B002220E7013B68
-:1004F00016E7013901E701231AE7013B68E708F134
-:10050000FF3852E709F1FF39CEE7013A8FE708F1EA
-:10051000FF389FE7013BDBE72DE9F043002B40D19B
-:100520008A42044615464AD9B2FA82F30F464BB1C5
-:10053000C3F12006994000FA03F402FA03F5F040F3
-:1005400040EA0107290C260C1FFA85FEB7FBF1F0E3
-:1005500001FB10770EFB00F246EA07439A4207D9E7
-:100560005B1980F0EA809A4240F2E78002382B441F
-:100570009A1AA4B2B2FBF1F301FB13220EFB03FEA5
-:1005800044EA0242964506D9521980F0DA8096452F
-:1005900040F2D780023B43EA004000263146BDE8E6
-:1005A000F0838B4244D8B3FA83F6002E45D18242C1
-:1005B00040F2BF808B42C0F0BC803046EEE712B9FB
-:1005C0000125B5FBF2F5B5FA85F2002A7BD14A1B6D
-:1005D0002F0C1FFA85FE0126230CB2FBF7F007FB58
-:1005E00010220EFB00FC43EA02418C4507D9491951
-:1005F00080F0A1808C4540F29E8002382944CCEBEB
-:100600000101A4B2B1FBF7F307FB13110EFB03FECC
-:1006100044EA0144A64506D9641980F09080A645B5
-:1006200040F28D80023B43EA00403146BDE8F08352
-:10063000002630463146BDE8F083C6F12005B340C0
-:1006400002FA06F701FA06F4EA40E94020FA05F555
-:100650001A4325434FEA124C4FEA154E93B2B1FBB1
-:10066000FCF80CFB181103FB08F44EEA01418C4224
-:1006700006D9891869D28C4267D9A8F102081144B9
-:10068000091BADB2B1FBFCF40CFB141103FB04FE1F
-:1006900045EA01439E4505D99B1854D29E4552D93F
-:1006A000023C134444EA0844CEEB0303A4FB07894D
-:1006B0004B4503D351D1B04040454ED20026601E79
-:1006C0003146BDE8F083C2F12006954001FA02F3FD
-:1006D00000FA02F42F0CF140F0401FFA85FEB1FB46
-:1006E000F7F6184307FB16110EFB06F24FEA104C03
-:1006F0004CEA01439A4205D95B1929D29A4227D97B
-:10070000023E2B449B1A80B2B3FBF7FC07FB1C3361
-:100710000EFB0CF140EA0343994206D95B1919D24A
-:10072000994217D9ACF1020C2B445A1A4CEA0646EE
-:1007300052E7012032E7013861E7013818E7013B51
-:1007400071E7013B27E7013CACE708F1FF3897E789
-:10075000013ED7E70CF1FF3CE7E7204600261DE706
-:10076000014800F0E2BF00BF342B0008014801F04F
-:1007700044B800BF342B0008014800F005BE00BF9C
-:10078000342B000837B50024012002F0AFF90190A6
-:100790002546E0B200F046F801AA08B910551DE060
-:1007A000135D042B0BDD174800F03CF9019800F0B5
-:1007B00040F90120002102F089F9002020E00133F6
-:1007C000DBB2042B135509D90F48012500F012F9AB
-:1007D000204600F02EF90D4800F024F90134042CD5
-:1007E000D7D1019C3CB10A4800F004F9204600F042
-:1007F00020F900F08FF80120214602F067F9284621
-:1008000003B030BD1D650008496500085465000847
-:100810005E65000808B500F083FB80F00100C0B2FF
-:1008200008BD000008B50C22044B02FB003000F0AC
-:1008300099FC80F00100C0B208BD00BFD42B0008B5
-:1008400010B5002401F096F8054820440C34017AD4
-:1008500000F06EFC302CF7D1BDE8104001F08BB8F1
-:10086000D42B0008044BDA691106FBD59862DA69CB
-:100870001206FCD5704700BF0048004070B5214DFE
-:100880008AB02148082101F077F828464FF48021EA
-:100890001E4C01F071F82B68642623F0010394E8E4
-:1008A00007002B600C348DE8070000216846022207
-:1008B0000B4600F01FFC03AB94E8070083E8070039
-:1008C00000211846022200240B4600F013FC06A863
-:1008D00002F022F8089821460D4A70430023FFF7E2
-:1008E0008FFCC0F3420320F00F000004000C1843FB
-:1008F0000D23B0FBF6F0E8606C60AC602B600AB0D2
-:1009000070BD00BF00480040000C0240042C0008ED
-:1009100040420F002DE9F043334D83B02C6800AF07
-:1009200004F12E0304F1270823F00703ADEB030DB8
-:1009300050238DF8003021236E460DF106028DF80C
-:10094000013000238DF8023003238DF8033004F1C9
-:1009500021035BBAADF80430244B03F11C0153F8BA
-:10096000040B8B4242F8040BF9D11B7804F12309E4
-:1009700006F123001E491370224602F0C7F83146E3
-:100980004A46002001F046FD07F1080304F5927481
-:10099000314643F8040D42461868FE23B4FBF3F3D6
-:1009A000434446F80900073323F00703ADEB030D7A
-:1009B00068466E4601F006FD044655206C44FFF77C
-:1009C00051FFA64207D016F8010B552808BF00209A
-:1009D000FFF748FFF5E75520FFF744FF00230C37EA
-:1009E0002B60BD46BDE8F083380000201C2C0008B9
-:1009F0003C00002010B5441E14F8012F7AB10849BC
-:100A00000B68FF2B0BD80A2A02D1FFF783FFF3E70D
-:100A10000D2A1FBF581C5B1808601A71ECE710BD47
-:100A20003800002008B5FFF7E5FFBDE80840FFF7F4
-:100A300071BF1FB50C2201A901F01AFD01A8FFF733
-:100A4000D9FF05B05DF804FB07B502A9012201F842
-:100A5000010D042000F096F903B05DF804FB0021BD
-:100A600002200A4600F08EB910B540F2F51400F0ED
-:100A7000B9F850B1013C04D10548FFF7D3FF204637
-:100A800010BD642001F0E6FCF1E7012010BD00BFBD
-:100A90008A65000810B5074C43F2CD71064848F648
-:100AA000B803224601F02CFD01462046BDE8104067
-:100AB00000F0E4B83C010020392C000810B500F02B
-:100AC00099F8FFF7E7FF08B9154816E0002400F091
-:100AD00039F9FFF7C4FF0120FFF7B6FFFFF7C4FFA6
-:100AE00078B1002103200A4600F04CF90D48FFF7C9
-:100AF00081FF2046FFF79DFF0B48BDE81040FFF740
-:100B000091BFFFF7C7FF0028DED001340B2CE2D1E4
-:100B10000648FFF787FFBDE81040FFF7A0BF00BF02
-:100B2000AD650008C8650008E3650008ED650008CC
-:100B300008B5FFF799FF0120FFF786FFFFF794FF45
-:100B4000002103200A46BDE8084000F01BB9000060
-:100B50002F2307B54A1C58430B4B00EB52001A7861
-:100B6000B0FBF1F0C0B282420AD002A91870042290
-:100B700041F8040D012000F005F90220FFF764FFA1
-:100B800003B05DF804FB00BF0000002007B502A918
-:100B9000042241F8040D012000F0F4F80320FFF7CF
-:100BA00053FF03B05DF804FBFFF759BF0C4B014442
-:100BB00030B51C68884207D022689568AD07FCD51F
-:100BC00010F8015B1573F5E71B681A68936813F456
-:100BD000C05FFBD10A20BDE8304001F03BBC00BF44
-:100BE000842B0008024B1868403000F0BBBA00BFED
-:100BF000842B000838B5204B012200211C6804F129
-:100C00002005284600F048FA0021284600F05EFA48
-:100C100004F1380000F0A0FA04F1400000F09CFA62
-:100C2000012104F12C000A4600F036FA002104F1FB
-:100C3000080001220B4600F05DFA0021012204F1B8
-:100C400014000B4600F056FA6068012101F016FF0F
-:100C50006068002101F012FF94E8030000F08CFEB0
-:100C600023684CF207321A604FF4B8525A601A687F
-:100C700042F040021A6038BD842B00082B4B2DE94E
-:100C8000F7431C68814601208846E36A04F1200787
-:100C900004F12C060093236B019301F0DFFB38462F
-:100CA000012100F013FA0021304600F00FFA012074
-:100CB00001F0D4FB684600F055FA054620B11C4807
-:100CC0000025FFF7AFFE2CE030460121383400F05C
-:100CD000FDF9012001F0C2FB204600F043FA064670
-:100CE00008B114481BE0684600F03CFA054608B914
-:100CF000114814E0012001F0B1FB48464146FFF7DE
-:100D000055FF3846314600F0E1F90C480921FFF75C
-:100D10004DFF204600F026FA054610B90848FFF7B7
-:100D200081FE284603B0BDE8F08300BF842B000895
-:100D30000C66000828660008426600080664000881
-:100D40005E66000808B5022001F088FB0A4B1B68AC
-:100D500093F8483043B10948FFF764FE012000F0E2
-:100D6000D9FD022001F07AFB0548FFF75BFE012068
-:100D7000BDE8084000F0C8BD842B00087F6600086D
-:100D80009B6600080F4BF7B51C6802AD0F460121AA
-:100D9000203405F8010D1646204600F097F964202E
-:100DA00001F058FB28460121FFF700FF1EB138462D
-:100DB0003146FFF7FBFE2046002100F087F903B023
-:100DC000F0BD00BF842B0008F0B50746ADF2044D1E
-:100DD0000E460C460025B919B4F5806F6846A1EBA4
-:100DE00004010DD94FF48062A4F5806400F0D8F8B6
-:100DF000284669464FF4806201F00CFB0546EAE79D
-:100E0000224600F0CDF869462246284601F002FB52
-:100E10000DF2044DF0BD08B5202001F047FD00287B
-:100E2000FAD108BD08B5022001F040FD0028FAD033
-:100E30000220BDE8084001F043BD00B58DB0684612
-:100E400001F0BDFC0023684600934FF480730A93C1
-:100E500035230B9301F0E4FCFFF7E4FFFFF7DBFF22
-:100E60000DB05DF804FB000030B5002495B02A48B1
-:100E7000022100F081FD294D0021032228190C34A4
-:100E80000B4600F037F9482CF5D1002105F1480058
-:100E900000240A4600F000F9002105F148004FF453
-:100EA000407500F013F901A801F080FC102301A89F
-:100EB00002940193172303940593049406940794D2
-:100EC00001F08CFC012001F0CFFCFFF7B6FF08A871
-:100ED00001F075FC662308A808941393129501F09D
-:100EE0009FFCFFF79FFF08A801F069FC992308A861
-:100EF00008941393129501F093FCFFF793FF4CF2C3
-:100F0000503001F0A7FAFFF798FF0348022100F0E4
-:100F10003DFD15B030BD00BF001000A010640008FA
-:100F200030B502218DB01C4800F026FD022001F0F2
-:100F3000AFFC684601F043FC4FF0806368460093C5
-:100F40004FF0407304934FF440730A93AF230B9315
-:100F500001F066FCFFF766FF01F0A2FC054601F018
-:100F60009FFC044601F09CFC240244EA004040EA55
-:100F70000504FFF750FF094B9C4204D02046002493
-:100F8000FFF757FD00E001240348022100F0FEFCBA
-:100F900020460DB030BD00BF001000A020BB1800DF
-:100FA00070B515468CB004460E461B48022100F071
-:100FB000E3FC681E01F06CFC684601F000FC4FF099
-:100FC00080636846254400934FF0407304930A23DE
-:100FD00005934FF4406309934FF440730A934FF421
-:100FE000005308930B230B9301F01AFC304601F0D9
-:100FF00047FCAC4204D001F053FC04F8010BF8E7C5
-:10100000022001F05DFCFFF706FF0348022100F01B
-:10101000BDFC0CB070BD00BF001000A0034A136BF4
-:1010200023F4FF6323F00703136370470038024083
-:1010300000F13F4000F57E00C0F387200A280AD85F
-:10104000054A135C591C11542BB9044901230A6B3E
-:10105000834013430B637047F4890020003802403B
-:1010600000F13F4000F57E00C0F387200A280DD82C
-:10107000074A135C53B1013BDBB2135433B9054942
-:1010800001230A6B834022EA03030B63704700BF0E
-:10109000F489002000380240436813B5009301230F
-:1010A000044600688DF8043000238DF805208DF883
-:1010B00007308DF80610FFF7BBFF2068694601F086
-:1010C00021FB2068FFF7CCFF02B010BD38B5037AD2
-:1010D00004460D460BB981F001052068FFF7A8FF13
-:1010E0002068A1882A4601F04BFB2068BDE8384003
-:1010F000FFF7B6BF13B5044640688DF8073000907F
-:1011000002208DF805208DF8040020688DF8061067
-:10111000FFF78EFFA27A2068218901F035FB206855
-:10112000694601F0EFFA2068FFF79AFF02B010BDA0
-:10113000002313B5044601934368006800938DF8BB
-:101140000710FFF775FF2068694601F0DBFA206899
-:10115000FFF786FF02B010BD036813B10021FFF74F
-:10116000E7BF704738B504460068FFF761FFA18804
-:10117000206801F0FFFA05462068FFF771FF281C80
-:1011800018BF012038BD1FB5836804460093C368AB
-:1011900068460193FFF7E0FF636902A80293A36921
-:1011A0000393FFF7D9FF04B010BD10B50446012129
-:1011B000083002220023FFF79DFF04F114000121F3
-:1011C00002220023BDE81040FFF794BF0368DB69EB
-:1011D00010B5044673B9C36A63B10A2001F03EF941
-:1011E0002046FFF7D0FF2046E36A012198471420EC
-:1011F00001F034F92046FFF7D8FF2046BDE8104043
-:1012000000F0E0B910B5044600F04FFA48B10A20EA
-:1012100001F024F9204600F048FA80F00100C0B245
-:1012200010BD012010BD30B5044687B0C36A00214F
-:101230009847A3680021012500936846E3680A46A1
-:101240008DF808500193FFF727FF68460021FFF74C
-:101250003DFF6369002103A80393A3690A468DF843
-:1012600014500493FFF718FF03A80021FFF72EFF87
-:1012700007B030BD10B5044600F00AFA2368DB69F8
-:1012800033B9E36A4BB12046BDE81040FFF7CBBF4E
-:101290002046BDE81040FFF776BF10BD10B50446EC
-:1012A000FFF7E8FF2046BDE81040FFF78FBF0000C2
-:1012B0002DE9F3419846036804460E46DB6917465C
-:1012C0000BB900205BE000F0F0F9B8B925681422F2
-:1012D0000021284601F025FC9DF828306F8020462B
-:1012E0006B71089B2E71AB60099B85F806802B61A2
-:1012F00000F0ECF9236800229A6111E02046FFF724
-:10130000CDFF2046FFF77EFF0028DFD1D9E79A699D
-:10131000B2F57A7F23DA013202209A6101F09EF859
-:10132000204600F0DFF90122236883F82020154AC7
-:101330000192019A511E01911AB193F82020002ABE
-:10134000F7D1002283F82020019A42B11D7D05F0DB
-:10135000FD02012ADBD16B1E5D425D4103E00025E9
-:10136000204600F0A8F923680022204683F82020B8
-:10137000FFF748FF10B92046FFF790FF284602B05C
-:10138000BDE8F08180841E0010B5044618B90E48EF
-:10139000A92100F0DFFF00212422006801F0C1FB39
-:1013A000204600F0CBF8236A2BB1002104F1200085
-:1013B0000A46FFF771FEE36A23B12046BDE81040FC
-:1013C000FFF731BF10BD00BFF166000810B504463D
-:1013D00018B90848B62100F0BDFF00680368DB6952
-:1013E0000BB9FFF7F3FE23681A68D3690133D361A1
-:1013F00010BD00BFF166000808B518B90748BF2145
-:1014000000F0A8FF00680268D36933B1013BD361E3
-:101410001BB9BDE80840FFF72DBF08BDF166000805
-:101420001FB50C46114618B90A4840F28D1103E069
-:1014300023B908484FF4C77100F08CFF82888DE80B
-:101440000A000021234602910068FFF731FF04B033
-:1014500010BD00BFF166000813460122FFF7E0BF90
-:101460001FB50C46114618B90A484FF4D77103E06E
-:1014700023B9084840F2AF1100F06CFF82888DE874
-:101480000A0000230121029323460068FFF710FFA2
-:1014900004B010BDF166000807B502AB03F8012DDA
-:1014A0000122FFF7DDFF03B05DF804FB03680022B3
-:1014B000197583F82020704710B504686388227975
-:1014C000C3F3090322B92278012A18BF43F48063C9
-:1014D000A268E468121BFF2A95BF120443F0FF7351
-:1014E00002F47F0243F4803398BF134309B143F4FD
-:1014F000005342681268536010BD43681B681A6845
-:1015000022F0D60210B51A605A6842F480425A603E
-:1015100008220368BDE810401A70FFF7C7BF0368D0
-:10152000012110B50446586801F09CFA0021236897
-:10153000BDE81040586801F095BA000043685A7B36
-:1015400053B2002B30B506DA02F00F021B4B1344E6
-:10155000C0221A7606E003F16043C02203F561431E
-:1015600083F8002343689A7B53B2002B06DA02F01B
-:101570000F02124B1344C0221A7606E003F16043B7
-:10158000C02203F5614383F8002350F8045F0C4C3C
-:101590006B7B59B203F01F020123490903FA02F2DF
-:1015A00044F82120AA7B51B202F01F02490993405E
-:1015B00044F82130BDE83040FFF7B1BFFCEC00E05B
-:1015C00000E100E043682C499A688A42F0B507467A
-:1015D00087B004D929485121294A00F0AFFE294992
-:1015E0008A4205D91C7B34B1012C07D000F0BCFE27
-:1015F0000124254603E00924102500E0022502A865
-:1016000001F08AF979686019049A8B684343B2FB48
-:10161000F3F603FB162303B9013E0F2E03D9174837
-:10162000702100F097FE03C900F0A6F97B684FF027
-:10163000000100221B68013D66F307110192013C85
-:101640008DF804508DF8071019688DF8054021F0C9
-:10165000010119600C49186801401960019919616C
-:101660009A60DA601A6842F001021A60074A596803
-:101670000A405A6007B0F0BD801A06000A670008E9
-:1016800027670008A0860100001F30FF008000F8D7
-:1016900010B5044654F8043F93E8030000F076F9CF
-:1016A0002046BDE81040FFF73ABF43681B689869C1
-:1016B000C0F3C030704743681B681A6822F0D60236
-:1016C0001A605A6842F480425A60704703685A7937
-:1016D0000AB9012204E01A790AB9052200E00622BB
-:1016E0001A70704743681B681A6842F0D20210B53E
-:1016F0001A60026814791CB9196841F00401196074
-:10170000117801290CD15288012CC2F309020CBFB7
-:101710004FF08071002142F490320A435A6010BDAC
-:101720000121BDE81040FFF7C7BE38B54368054644
-:101730001C6803681A78013A072A5BD8DFE802F0D0
-:10174000045A5A5A223B5A57A269910701D59A79ED
-:10175000A2621A793AB9A26952060FD50522284623
-:1017600001211A7008E0012A08D1A269100605D5E6
-:101770000622284600211A70FFF79EFEA369D906AB
-:101780003AD525E0A269520705D5DA681969501CD7
-:10179000D860636A8B54A3691B0603D528460021D1
-:1017A000FFF78AFEA369580626D528460121BDE821
-:1017B0003840FFF7A2BEA269910705D5DA6819691A
-:1017C000501CD8608B5CA362A16911F0100109D094
-:1017D000E3692846022143F01003E361BDE8384085
-:1017E000FFF764BEA3691A06DCD52846D8E7A369CB
-:1017F000DB0701D400F0B8FD38BD43681B689A6967
-:10180000D20503D5DA6942F48072DA619A6951052A
-:1018100003D5DA6942F48062DA619A69920503D5E8
-:10182000DA6942F40072DA610321FFF766BE000054
-:10183000094B70B51C680D4606462046FFF7C6FDED
-:101840002A4631462046FFF707FE05462046FFF7A9
-:10185000D3FD284670BD00BF682B0008094B70B54A
-:101860001C680D4606462046FFF7B0FD2A46314665
-:101870002046FFF711FE05462046FFF7BDFD28462E
-:1018800070BD00BF682B000837B500F073F81B4827
-:1018900001210222FFF700FC194801210222FFF773
-:1018A000FBFB00F068F800200DF10701FFF7C0FF17
-:1018B0009DF80750012D1DD114200DF10701FFF7F0
-:1018C000B7FFA8B10F4C237813B1013323700FE099
-:1018D0009DF80710142021F0060141F002018DF857
-:1018E0000710FFF7BBFF18B10320257000F0B6FD0D
-:1018F000012000E0002003B030BD00BF6464000898
-:101900007C640008FF89002001460148FFF7DEBB28
-:101910006464000870470000B0F1804F08B503D23E
-:101920000D48302100F016FD0C4B98420ED903F5FE
-:10193000803398420CD9B0F1A04F0BD3084A094B21
-:10194000B0F1204F34BF1846104608BD064808BD08
-:10195000064808BD064808BD48670008FFFF00406C
-:10196000D5290008BD290008ED290008052A00082E
-:10197000A52900087047704710B50C46FFF7CCFF4B
-:10198000012103462046BDE81040184710B50C461B
-:10199000FFF7C2FF002103462046BDE8104018476C
-:1019A00038B5104C05464FF080512046FFF7E4FF54
-:1019B00045B154E8003F43F4807344E80032002A04
-:1019C00008D0F6E754E8003F23F4807344E800327F
-:1019D000002AF7D103484FF08051BDE83840FFF7A7
-:1019E000D5BF00BF00700040024B5868C0F34000F4
-:1019F000704700BF00700040024A136843F00803BC
-:101A00001360704700700040B0F1006F10B50446DD
-:101A10000BD20C48FEF7EEFF2046FFF70AF80A4803
-:101A2000FFF700F84FF0FF3010BD084B002053F8CF
-:101A3000042BA24202D81A68944202D301300B2828
-:101A4000F5D110BD6767000870670008886400085A
-:101A50002DE9F8430446174699460E46C1B3FFF7F1
-:101A6000D3FF0546601E3044FFF7CEFF002D8046B1
-:101A700031DB00282FDB461B01361FB10020314629
-:101A80004A46B8472C4600F09BFD44451EDCF32037
-:101A900000F0ACFD114B002133F8140000F0DEFD26
-:101AA00009280AD00E48FEF7A5FF2046FEF7C1FF21
-:101AB000FEF730FF00F092FD0DE02FB1C5F10100FF
-:101AC00031464A462044B8470134DEE700F086FD3F
-:101AD0000120BDE8F8830020BDE8F883B864000861
-:101AE000896700082DE9F0410F461646804600F050
-:101AF00067FD3E443C46F32000F078FDB44216D02A
-:101B0000C7EB0805254414F8011B284600F0DCFD4E
-:101B10000928F3D00848FEF76DFF2846FEF789FF35
-:101B2000FEF7F8FE00F05AFD0020BDE8F08100F05D
-:101B300055FD0120BDE8F081A167000808B57D20B2
-:101B400000F0A8FF003018BF012008BD4900FEF7D3
-:101B5000FFBF00002DE9F043012185B005460020BC
-:101B6000FEF7F6FF042000F047FB01A8294600F02D
-:101B700097FB01A800F0A3FB08B93B4814E00C3523
-:101B80003A48FEF74FFF02992846FFF71DF9044631
-:101B90003748FEF72FFF2046FEF74BFFFEF7BAFE51
-:101BA000039B9C4204D03348FEF73CFF012057E0E2
-:101BB000029CDFF8E0803048FEF734FF21462F4AD0
-:101BC000002340460024FFF743FF029F2C484FEAC2
-:101BD0005709FEF727FFBC421CD23E1B294861195A
-:101BE000B6F5803F28BF4FF480363246FFF7D8F96C
-:101BF00008EB040023493246FFF774FF18B9224866
-:101C0000FEF710FF06E009EB54003946FEF7A0FF8F
-:101C10003444E0E71D48FEF7EDFE0298FEF709FFA9
-:101C20001B48FEF7E7FE1B49029A002000F0F2FB7A
-:101C300004461948FEF7DEFE0398FEF7FAFE174841
-:101C4000FEF7D8FE2046FEF7F4FEFEF763FE039B88
-:101C50009C4204D01248FEF7E5FE022000E000207E
-:101C600005B0BDE8F08300BFB2670008D067000888
-:101C7000ED67000803680008266800084D1B00088F
-:101C80003D680008008A0020546800085F6800086A
-:101C90006D68000800800008766800088968000800
-:101CA0008F68000810B5022000F0BEFAD8B30420F7
-:101CB00000F0BAFA044670B11B48FEF7B3FE0420E8
-:101CC00000F0A6FA022000F0A3FA4FF40040BDE8AD
-:101CD000104000F09DBA1548FEF7A4FE082000F061
-:101CE00097FA102000F094FA202000F091FA40209A
-:101CF00000F08EFA2046FFF72DFF022807D10820BA
-:101D000000F07AFA102000F077FA00F051FB04207E
-:101D100000F07EFA022000F07BFA4FF40040BDE8AC
-:101D2000104000F069BA10BDDA68000810690008B8
-:101D300010B52548FEF776FE4FF48000FFF70AFF46
-:101D400010B102283AD809E0202000F061FA4020C2
-:101D500000F05EFA802000F04FFA2FE0082000F03B
-:101D60004BFA102000F048FA202000F05DFA20B96C
-:101D70001648FEF757FE202007E0402000F054FAF6
-:101D800058B91348FEF74EFE402000F035FA4FF4E4
-:101D9000007000F031FA00F00BFB0E480024FEF753
-:101DA00041FE082000F034FA102000F031FA202023
-:101DB00000F02EFA402000F02BFA00E0012404206D
-:101DC00000F026FA204610BD2B690008456900087E
-:101DD0007E690008B769000808B50248FEF722FED0
-:101DE00000F05CFAF16900081EF0040F0CBFEFF37D
-:101DF0000880EFF30980FFF7EFBF704708B50120B7
-:101E0000FEF710FD08B900200FE00020FEF70AFDE4
-:101E10000028F8D00220FEF705FD0028F3D00320AB
-:101E2000FEF700FD80F00100C0B200F0010008BD27
-:101E30001FB504460E48FEF7F5FD01A90C22204609
-:101E400000F016FB01A8FEF7EDFD2046FEF79EFE12
-:101E50000220FEF7E7FC04460220FEF7E3FCA04266
-:101E600001D000F0A5FA0A2000F0F8FAF4E700BF6C
-:101E7000E76900087FB5BB484FF08051FFF77CFD54
-:101E8000FFF7B2FD044630B1FFF7B6FDB648FEF7E6
-:101E9000C9FD00F094FA4FF08051B248FFF776FD8B
-:101EA000FEF76AFCFEF7EAFCB048FEF7BBFDB0485F
-:101EB000FEF7B8FDAF48FEF7B5FDAF48FEF7B2FD3F
-:101EC000AE48FEF7AFFDAE48FEF7ACFDAD48FEF7FD
-:101ED000A9FDFFF7D9FC00F0B1F900F0D1F92146D6
-:101EE0000C2201A800F01DFE00F0C6F901A90C2289
-:101EF00000F0BEFA01A8FEF795FDA348FEF792FD9B
-:101F0000A148FEF78FFD4FF4804000F08DF990B1AD
-:101F10009E48FEF787FD4FF4804000F079F90820D5
-:101F200000F076F9102000F073F9202000F070F92D
-:101F3000402000F06DF9FEF797FFFEF781FCFFF7F8
-:101F4000A3FCFEF7BBFDFEF7F3FDFEF71BFC08B19B
-:101F50008F4803E0FEF75EFC10B18E48FFF768FF84
-:101F600000F07AF9802000F05FF918B1802000F0CD
-:101F70004FF94BE04FF4003000F056F920B14FF428
-:101F8000003000F045F943E0FFF738FF68B141F257
-:101F900088348148FEF746FDFFF730FF78B1012015
-:101FA00000F05CFA013CF7D132E07C4B0CCB013302
-:101FB00001D0013203D17A48FEF734FD28E0FFF763
-:101FC000BDFD48B3FFF7BAFD10B17648FEF72AFD14
-:101FD0004FF4007000F028F910B17348FEF722FDAD
-:101FE0004FF4007000F014F9102000F01DF90028E3
-:101FF00000F0EE806D48FEF715FD082000F008F9AE
-:10200000102000F005F9FFF793FE98B96848A5E79E
-:102010006848FEF707FDF6E74FF4007000F004F99A
-:102020000028CFD1082000F0F3F8102000F0F0F8DD
-:10203000FFF738FE4FF4005000F0F6F804464FF476
-:10204000805000F0F1F8400040EA8400C4B24FF440
-:10205000006000F0E9F82043C0B20728C3B20DD1F8
-:102060004FF4006000F0D4F84FF4805000F0D0F846
-:102070004FF4005000F0CCF84F486FE701334FF4B5
-:102080000060DBB2023B052B11D8DFE803F00C1037
-:1020900003100C1000F0BCF84FF4805000F0B8F8BA
-:1020A0004FF4005003E000F0B3F84FF4805000F01C
-:1020B000A3F8FEF7B3FF394B40485D681E68FEF792
-:1020C00099FC2846FEF7B5FC3D48FEF793FC00223C
-:1020D000930001324FF0FF3103F16043082A03F50A
-:1020E0006143C3F88010C3F88011F1D1354B4FF430
-:1020F000801200241A634FF480625C639C631A644C
-:102100005C6400F0E3FB3048012100F087FC2146CD
-:102110002D4800F083FCF320012100F08BFC2146C8
-:10212000F32000F087FC0320012100F08FFC214602
-:10213000032000F08BFC6FF4A050012100F092FC12
-:1021400021466FF4A05000F08DFC2048012100F0E2
-:1021500095FC1E48214600F091FC63B64FF0FF3E0F
-:10216000B546284700700040FC690008096A00086D
-:10217000106A00089D6A0008346B0008B56B0008FF
-:10218000366C0008B96C00080F6A0008366D00084C
-:10219000014550FE024550FE636D000800800008B6
-:1021A0009E6D0008B16D0008C96D0008E96D00085A
-:1021B000034550FE5D6E0008044550FE7C6E00082D
-:1021C000906E0008003802400010E022B379F764F6
-:1021D000082000F029F820B10548FEF723FC102064
-:1021E00003E00448FEF71EFC082000F005F81FE796
-:1021F000116E0008376E000810B50446002000F08C
-:1022000075FC40EA04010020BDE8104000F05EBC0F
-:1022100010B50446002000F069FC20EA040100200B
-:10222000BDE8104000F052BC10B50446002000F09C
-:102230005DFC204214BF0120002010BD08B5012024
-:10224000FFF7AEFB0120FFF7EFFF20B90121BDE84A
-:10225000084000F03BBC08BD08B50648FEF7CAFBC5
-:10226000002000F043FCFEF7E4FBBDE80840FEF769
-:1022700051BB00BF986E0008022000F037BC000080
-:1022800008B5FFF7F9FF0449884204D00220BDE8F1
-:10229000084000F01BBC08BD8BB8185800BEFDE715
-:1022A0001FB504460C2201A8FEF77AFE01AB03CB52
-:1022B000206018686160A060204604B010BD00680E
-:1022C000A0F10C03584258417047000080B51746F2
-:1022D000064610480D461C46FEF78CFB3846FEF7B6
-:1022E00089FB0D48FEF786FB3046FEF783FB0B4863
-:1022F000FEF780FB2846FEF79CFB2CB10848FEF752
-:1023000079FB2046FEF776FB0648FEF78BFBFFF7CE
-:10231000C5FF00BFA46E0008B66C0008AD6E0008D3
-:10232000B76C00080F6A00081FB506AA52F8044BE4
-:10233000039200921A462346FFF7C8FF0CB41FB55C
-:1023400006AA52F8043B03920092014AFFF7BEFF2F
-:10235000AF6E0008002307B572460093014BFFF7EC
-:10236000E3FF00BFB66E00087446064808B5FEF7E6
-:1023700041FB2046FEF75DFB0348FEF753FBFFF7EA
-:102380008DFF00BFBE6E00080F6A0008BFF34F8FBD
-:102390000549064BCA6802F4E0621343CB60BFF301
-:1023A0004F8F00BFFDE700BF00ED00E00400FA051D
-:1023B00008B5FEF7F9FB00F081FBFFF7E7FF08B572
-:1023C000FFF7E4FFF0B5064600240120254603464A
-:1023D00094421DD011F804C000F1010EBCF1000FB1
-:1023E00003D17355774605460DE00133774606F86D
-:1023F00000C0DBB2FF2B07D102F1FF3C644506D0E1
-:102400007355871C7546012301343846E0E7704652
-:102410007355F0BD30B5C9B1C0430A44914213D0E1
-:1024200011F8013B0A4D83EA000404F00F0455F84B
-:10243000244084EA101080EA131303F00F0355F8C8
-:10244000233083EA1010E9E7C04330BD084630BDB1
-:10245000D064000800010138FDD1704710B5044672
-:102460002CB14FF47A70013CFFF7F4FFF8E710BD90
-:102470000A2A10B504DC1148BDE81040FEF7D2BAB4
-:1024800030230C461C2204F8023B78234B700F23A8
-:1024900093400340D340092B01D8303302E00F2B87
-:1024A00002D85733DBB200E02023043A04F8013BA2
-:1024B000131DECD100238B7210BD00BFF86E000815
-:1024C00008B582684368934203D304481421FFF798
-:1024D00041FF0268591C4160D05C08BD0E6F0008C6
-:1024E00043688268934210B503D304481921FFF76B
-:1024F00031FF02685C1C4460D15410BD0E6F0008AF
-:10250000F0B587B00E460746154600210C226846F6
-:102510001C4600F006FB00210C2203A8029600973F
-:1025200000F0FFFA684603950594FFF7C9FF0646D9
-:102530006846FFF7C5FFB042014601D003A808E096
-:102540006846FFF7BDFF0446D8B1012804D103A8AF
-:102550003146FFF7C5FFEBE7030608D504F07F041B
-:102560006846FFF7ADFF40EA042000F18004A4B202
-:102570000025A542DCDA03A80021FFF7B1FF0135F1
-:10258000F7E7049807B0F0BDFEE700000748084AE7
-:102590000849121A08B500F0B9FA0748074A00219D
-:1025A000121A00F0BEFAFFF765FC00BF0000002021
-:1025B00014000020206F000814000020008A012071
-:1025C000044B1A69002A04DA034A5A6002F188327D
-:1025D0005A607047003C024023016745024A136974
-:1025E00043F0004313617047003C0240014BD86048
-:1025F000704700BF003C02400E4BDA68D20310D493
-:10260000DA68D1060FD4DA68D2050ED4DA6812F08F
-:10261000E00F0CD1DB6813F0020F14BF0820092073
-:10262000704701207047062070470220704707203E
-:10263000704700BF003C0240092307B58DF8073002
-:10264000FFF7DAFF8DF807009DF80730012BF7D070
-:102650009DF8070003B05DF804FB000070B5064666
-:1026600041B1012908D002290CBF4FF400754FF485
-:10267000407503E00D4601E04FF48075FFF7DCFF85
-:1026800009281ED10F4C236923F44073236121696B
-:1026900029432161236923F0F8032361236943F06F
-:1026A00002031E432661236943F480332361FFF74D
-:1026B000C3FF236923F002032361236923F0F80396
-:1026C000236170BD003C024070B505460E46FFF721
-:1026D000B3FF092813D10A4C236923F44073236103
-:1026E00023692361236943F0010323612E70BFF343
-:1026F0004F8FFFF7A1FF236923F00103236170BD12
-:10270000003C0240F0B500220E680123934003EA2A
-:10271000060E9E452AD1550003230468AB40DB43D7
-:102720001C4004600C79076804FA05FC013C4CEA83
-:102730000707012C076011D884684F791C40AF400F
-:102740008460846827438760446824EA0E044460F8
-:102750008C7947689440A4B23C434460C4682340E9
-:10276000C360CB79C468AB402343C3600132102AF5
-:10277000CBD1F0BD0369194214BF0120002070477E
-:1027800002B909048161704701F00703C9089B0081
-:1027900000EB81000F219A40994010B5046A24EAA9
-:1027A00001010162016A1143016210BD002303604F
-:1027B00043608360C36003614361836170470023AA
-:1027C00043608360C3600360036143618361C361ED
-:1027D000036243628362C362704700000E4903686C
-:1027E0000A6810B544691C4383691C4322F07F4387
-:1027F000426823F03003234343EA02630B60C3685B
-:1028000082684C681A43054B23401343026943EA2C
-:1028100002434B6010BD00BF001000A0FEF7E0FFB8
-:1028200090E80C000E491A4383681A43C3681A43A0
-:1028300003691A4383691A43C3691A43036A1A4333
-:10284000436A1A43836A1A43C36A10B51A434C6930
-:10285000044B23401343426943EA82434B6110BD5A
-:10286000001000A000008090044B1A6810B142F0E4
-:10287000010201E022F001021A607047001000A07E
-:10288000024B9A68920600D498617047001000A02D
-:10289000024B9A68920600D418617047001000A09D
-:1028A000014B1878704700BF201000A0034B9B68B5
-:1028B000184214BF01200020704700BF001000A084
-:1028C000014BD860704700BF001000A00F4B0021E3
-:1028D0001A6842F001021A6099601A6822F0A85240
-:1028E00022F410221A600A4A5A600A4AC3F8842065
-:1028F00002F18062C3F888201A6822F480221A60EC
-:10290000D960C3F88C10C3F89010704700380240AB
-:1029100010300024003000201E4A936803F00C039E
-:10292000042B10B503D0082B03D01B4B19E01B4B15
-:1029300017E05168536811F4800F516803F03F03AA
-:1029400018BF164AC1F3881108BF134AB2FBF3F34C
-:10295000104A4B435268C2F3014201325200B3FBAA
-:10296000F2F30C4A036093680D49C3F30313CC5C84
-:102970000368E34043609468C4F382240C5D23FA47
-:1029800004F484609268C2F342328A5CD340C3602C
-:1029900010BD00BF003802400024F40040787D01E3
-:1029A00001000020044B1A6B09B1104301E022EA38
-:1029B00000001863704700BF00380240044B5A6B98
-:1029C00009B1104301E022EA00005863704700BFDC
-:1029D00000380240044B9A6B09B1104301E022EA2F
-:1029E00000009863704700BF00380240044B1A6C27
-:1029F00009B1104301E022EA00001864704700BFEB
-:102A000000380240044B5A6C09B1104301E022EA3D
-:102A100000005864704700BF00380240044B1A6938
-:102A200009B1104301E022EA00001861704700BFBD
-:102A300000380240044B5A6909B1104301E022EA10
-:102A400000005861704700BF00380240044B9A698B
-:102A500009B1104301E022EA00009861704700BF0D
-:102A600000380240044B1A6A09B1104301E022EA1F
-:102A700000001862704700BF00380240044B5A6AD9
-:102A800009B1104301E022EA00005862704700BF1C
-:102A9000003802404209084B012A01D11B6804E0BA
-:102AA000022A01D11B6F00E05B6F00F01F0023FAC8
-:102AB00000F000F00100704700380240024A536FF6
-:102AC00043F08073536770470038024082B00023A0
-:102AD0000193054B0193019B03EB80000190019B47
-:102AE000196002B0704700BF5028004082B0002338
-:102AF0000193054B0193019B03EB80000190019B27
-:102B0000186802B0704700BF50280040431E0A44B6
-:102B100010B5914204D011F8014B03F8014FF8E7CA
-:102B200010BD02440346934202D003F8011BFAE7AA
-:102B30007047000014000020742B000800140240AD
-:102B4000004000000E00040000140240008000005D
-:102B50000F00040000000000000000000000000062
-:102B600000000000106500086C2B0008342B0008E2
-:102B7000500000000060004000000001801A0600C4
-:102B8000005F6000882B0008005401400000200016
-:102B90000000024020000000050008000000024084
-:102BA0008000000007000800000002401000000044
-:102BB00000000000000002400800000001000000CA
-:102BC0000004024004000000000402400100000074
-:102BD0000000000000180240080000000000000093
-:102BE0000018024010000000010000000018024020
-:102BF000200000000100000000180240400000001A
-:102C000001000000000C0240000100000800070065
-:102C1000000C0240000200000900070001424F4F73
-:102C2000544C4F414445520000000000002A2A0045
-:102C300000000000000000000047FF004C617474B9
-:102C400069636500694345637562653220323031DE
-:102C5000362E30322E323738313000506172743AAD
-:102C6000206943453430554C314B2D434D3336416B
-:102C700000446174653A204A756C20323520323048
-:102C800031362030393A35363A33394702FF7EAA99
-:102C9000997E5100010592002062016F8247027205
-:102CA000007011000101470B1047028047050247E1
-:102CB000058003470801470208471120470C0247D7
-:102CC0000B02471740470501470540470C04009099
-:102CD000470F104706404705014705404705014794
-:102CE000048000044710804705020020000800808F
-:102CF000470201470908471701470434000C4704FD
-:102D000003470D30475970470E80104704020040BA
-:102D1000470408014702070200404704080147052D
-:102D20002004474103470B03470D1C471080470908
-:102D3000010080470203470908470324472B7847CF
-:102D4000124007470A40470C040008470E40470559
-:102D5000014706044704014706044706104711804F
-:102D60000747061C470380470C08470A0C302047DA
-:102D70000F30E8470C63C1470C0C30470F4001058A
-:102D8000470C03C0470C0C3020470D184702E047A2
-:102D900004020CB10018003847064047080C3047C1
-:102DA0001001074702010001CD72470398470F0C3D
-:102DB0003020470D3000F9A04708100001C047053A
-:102DC000038047070C30470E30007105470830007C
-:102DD00001470F0C3020470F5808470401DCA000C2
-:102DE00080470363C1470203C020AF5247050C3040
-:102DF00047100803470402E0F5470503C0470202F5
-:102E0000E0050FA01047040C30204712400020209E
-:102E1000470AC001E007A547060C3047110D4703DC
-:102E200014470B4047030547031447020C30204763
-:102E30000F900004470220470E17CFA24702084711
-:102E4000020C30471030092447022C470D02CD0FE9
-:102E5000F047050C3020470F1080044703684703F4
-:102E6000010547100C30471011073047190C30206E
-:102E7000470D300010470A0147100C30470E30470D
-:102E800002052047023447050247100C302047074F
-:102E9000044706404704203404ED80000247091C23
-:102EA000000847050C30470F4047050422FC470245
-:102EB000014707A00002C047060C3020470903EA7B
-:102EC000F52000404706035CA500184708401C8F0A
-:102ED0000847050C30470A03D05047024047060117
-:102EE000F0554703104706200200F047050C30203C
-:102EF0004709284703110001E047032038FC8002FE
-:102F0000470A1E8F0847050C304708080040470352
-:102F10003029470402BC03D0470AC04703F04705E5
-:102F20000C3020470A1C0F10470829DCA500304749
-:102F3000090E8F0847050C30470C0F4709415055C3
-:102F4000002047090200F047050C3020470D0447D8
-:102F5000065C76EC80024707084702068047060CAD
-:102F60003047080247050447030147033CF0470A7E
-:102F700001400C00F047050C3020470820470B1C8F
-:102F800021FAE732004047100C3047090C470B2468
-:102F900064F0F7084709028047070C302047141CEB
-:102FA00031CCE720804703383D4447020280470781
-:102FB0000C30470F404705027668FB47024000C0CF
-:102FC000403D4703028047070C302047080C470567
-:102FD0000147053C63DE800010470C0447040C30B9
-:102FE000470A2047040247052402E8470210470623
-:102FF00001014047020147050C302000A100123CAE
-:1030000020000447021EF060470720001EF04047E2
-:10301000030D72BD400003428EEF47060C3047059A
-:1030200003C0C04704F04702400097470304200054
-:10303000F0470401403C470201429C47070C302006
-:1030400047033A3C200647030CF06018021080004A
-:10305000060140024AA50018800007781500604765
-:10306000020CC96047050C30470503C0104704F047
-:10307000470205090747038001D0554703900040E8
-:103080001620000142C1096047050C302047033279
-:103090003C202C47031CF0403047028000044702CC
-:1030A000204705018839414702020025ACC020476E
-:1030B000040C30470503C0044704F001300801093F
-:1030C000000C4702404705F00F42820100204025D6
-:1030D00047070C30204703323C20470280001EF097
-:1030E00040470280E847037C4707057815470444BA
-:1030F00088002047040C3047040803C80001470239
-:1031000010F0470371094703964708C016400003B3
-:1031100042150020470202001C0C30200001017AF9
-:103120003C2047040EF0600008704703A00601DA57
-:10313000A047090A007E8800300002C0000C30471A
-:10314000038D0003C04000243000F0470308FB4714
-:103150000240000340F54709014287002047040C64
-:103160000C30202000013A3C2020100447070804BE
-:10317000001000045AA102004000A04705603EEF85
-:10318000A547050C300010070D0803C04702024791
-:10319000070520470334E001470B1C05A047020246
-:1031A00047020C3020040500723C20001047060442
-:1031B00050800447022021EEE2020040181047042C
-:1031C00003601FAAF5470202C0000C300004054747
-:1031D0000203C0001004470542D8BD2C00103C7605
-:1031E0007042470240008047030102C02C00F047B4
-:1031F000050C3020000800723C2000A02078470316
-:10320000300010470501DCA302304702804703C0AD
-:1032100001C047080C3000040B470203C0005214E1
-:103220004704300008033C4702343830A3002040F4
-:103230000147048101C2C0470C0A723C204702A02A
-:103240003BF9014001404705202C0CF040470307A3
-:103250008402470306DEF5E0470A100803C10001B7
-:10326000547D69A7004040470402046000F0470213
-:103270008050003C470402BCF1D010470601804753
-:1032800002723C20060024017F744001404703067F
-:1032900047034EA50018470215A3C2806002002C08
-:1032A00091A0470B0803C047023C2E78A0100240B3
-:1032B0004707D055470490003C470201401DF3F0FA
-:1032C0004707034703121540040036687B6440300B
-:1032D00047040CA047020DD1000147020723C24753
-:1032E00002034614ABC420470A08154004023C0000
-:1032F0004A58007047040C470203DFE24705803C50
-:1033000047020266C20BC208470A03BC1047023CD0
-:10331000294B7440002847042000281EF04000027A
-:103320001801A3C20004016060AB470C043C4703D2
-:10333000164268A0004047074010F0470205080009
-:10334000803C47021403B4C70010470A03BC100CAA
-:103350004702035D7A014706A00E60FEA0470230D7
-:1033600001A7A3C2000803469E81A020470A043C8F
-:103370000004470202C85A0847071E03C0F5470564
-:10338000803C470201601D03F0470C295047021E94
-:1033900001D95B10404705800423CCA102470311EB
-:1033A00023C247041D95E0470B90168047021C314D
-:1033B0004CA547080202C002470480003C47043E77
-:1033C000E1D0470A1B47051F470601C047030620F7
-:1033D000E8A3024703B325ED0004016640ABC42017
-:1033E00047090A47050247060147052670034704B7
-:1033F000AFB694010A0242B507C004471064F85002
-:10340000104708701AA302B10001D04703C000039F
-:10341000DDB5E0471164005047083443D053002223
-:103420008051A0470380D6C76EE1D04709081E5BD4
-:10343000C8104703040AF0404709FE00404702193C
-:103440008F304002000166A5E0470A0B00121E8083
-:103450006000142800F04702400007470403F0A072
-:103460004080020007B0470301C24E944708018024
-:10347000470506470308F0401847021000062000E1
-:10348000020C0A001947020B3A81816002E68405AA
-:10349000A020470801470810F04704B7470240043E
-:1034A0003CC0050002801087400101000260140248
-:1034B000400447060300080036C9580C0034001ABF
-:1034C000F04030470218000CA14000FE504A02476D
-:1034D000020120288047030480D0A0470601000392
-:1034E0000A7A05424702144702F000304702FB0007
-:1034F00004408003F08040470440288000034001DE
-:1035000000D080470603000500DE11D84702366C64
-:103510001AF060470308000D8000020C0A403008D2
-:10352000000B3801010002000D85E0204706010074
-:103530000F0052E0404702142800F04703B0070094
-:1035400009024702C0054820040007414104470220
-:10355000401602E0470A08F680D2100E47021AF021
-:10356000404703184703200400A540008050117510
-:10357000D04703C067A0140447080B091B28C020CC
-:10358000470310F04704C900400E3C38C05A4801B8
-:1035900000D887B5F8470303AEE800804708080164
-:1035A0009F141447041AF040470280180400201E9C
-:1035B0002200A54130005C037B08084702E021CAD5
-:1035C000470A050C56788240470310F04703F0E5A0
-:1035D0003C470340C05A40104702A7C30C040002F6
-:1035E00062DC05470A0D81D6C9504705A540470250
-:1035F00098984702A004301C0540800018E0470559
-:10360000600685014709050A32054A4704405A47C2
-:103610000399933400400201C00A40470210B047AA
-:10362000030847020105470A0581FE51D047040AF5
-:10363000F0403000901000040004027E5F40100053
-:1036400050E1B8280400E0400FF812470A0B53E09D
-:103650004A4705F000300070FD3C04000220E00FF6
-:1036600048100079098168040002600CC4471114F5
-:10367000004EA0400240470607C850C0470390478D
-:1036800005407EC70008470F020010A04080404759
-:10369000063BC00542470210D04705235DAF0147F6
-:1036A0000E06470744470306470203C850C01800E8
-:1036B00018033E01006000063DC047110447054263
-:1036C00047050402C005404702188FBC012047038C
-:1036D0000E824716100001C000044702674850C020
-:1036E000100001E130104703604718300001470225
-:1036F00004470223E005401047020DE047160C473F
-:10370000070547030C0006674850C0F0001017B2C9
-:10371000012847020780471008470B08470222E0AC
-:103720000540204702E7C00147234003E850C14756
-:1037300003F0470402662F90471B10470203C005A1
-:10374000404703D0470401442FB040471D736850E1
-:10375000C010470219F56C47020366EED0471E42BF
-:10376000C00540304702ADE11C47020142AEF08087
-:10377000470240470E0447090226036850C000076D
-:10378000101DFB08084702068DE800204710384747
-:103790000A0403E0054040003085830C47050847D4
-:1037A0000F04470B040020736850C1104702804784
-:1037B00003C00060208E5420470D04470B04000412
-:1037C00042E00540100051E04703804142650DA0F2
-:1037D000470372009011010101470B104706404753
-:1037E00005014705400002470608471120470680AB
-:1037F0004705024712084722010002470404471107
-:10380000104706404705014705404703160001479A
-:103810000604472202002000084702084703104719
-:10382000243C000C470630476880104704020040E3
-:1038300047040801470302004047040801470430D9
-:103840002004474D01470604472103008047050235
-:1038500047030C471F1E472D0247034047050147FA
-:10386000174047050147060447030301470604477D
-:103870000610471D8047050247110C30472C0C30BD
-:1038800020472B0C30472C0C3020472B0C30470E98
-:1038900001470C1047100C3020470D02471D0C301B
-:1038A000472C0C3020472B0C30472C0C3020472B5A
-:1038B0000C30472C0C3020472B0C30472C0C302080
-:1038C000472B0C30472C0C3020472B0C304713086B
-:1038D0000004002055470880004247080C3020476C
-:1038E000120C00200168554047074002004047077E
-:1038F0000C3047150400200F470B02055004470405
-:103900000C30204714260168F0C04709661E855414
-:1039100047050C3047180F470DF08047040C302046
-:1039200047150168F0C0470A168F0C47050C304751
-:10393000150C47020F470DF08047040C3020471547
-:1039400001E8F0C0470A1E8F0C47050C3047150CE4
-:1039500020200F470B0200F047050C3020471426AB
-:103960006548F0C04709601C8F0C47050C304716AE
-:1039700020200F470A460200F047050C302047156B
-:103980006548F0C047080207548F0C000147030C3C
-:103990003047180F470DF047050C302047120647F7
-:1039A0000201C8F0C047076047021C8F0C47050C96
-:1039B0003047170C0F470503C01247020401B0F04F
-:1039C00047050C3020471501DAF0C0470423C047F3
-:1039D0000307148F0C47050C304718F04703D9B084
-:1039E000A4470280470A0C30204714060008F0471D
-:1039F0000350A780020040470A0C30471620300FC2
-:103A00004703D900A047040247080C30204715059A
-:103A1000780F80470250A780024703404047070CB9
-:103A200030471524201B0F470528470D0C30204731
-:103A30001501F80F804703078002470C0C30471729
-:103A40000D0F4704B020470D0C3020471406617954
-:103A50000F804703078402470C0C30471504200DE4
-:103A60000F47035000A8470D0C302047142004F8DE
-:103A70000F804703070002470C0C30471506203C17
-:103A80000F47035000B4470440050A088047040C60
-:103A9000302047143501C90F804703010002470257
-:103AA000026000E50447050C304715366C1C0F47D3
-:103AB000035000284707588047040C30204714144F
-:103AC00028E80F8047030704020060470214E0540F
-:103AD00047050C3047166D4CA5470350002047049E
-:103AE000C0040A088047040C3020471529415A8039
-:103AF00047038700024702024702A504471B100440
-:103B00004000F0470301A9A00004800042471F20A5
-:103B10007808F047020800BFA0214040020040475B
-:103B20001D10042060A54702404702A04702010083
-:103B300040020550471C2007605A80470307800257
-:103B4000470202601E8556471D0340A5470351905A
-:103B5000B04702014704F0471D01605A804702D96F
-:103B6000A3840247020800168F0E470E01470D1C62
-:103B7000004FA54704A0703C4706F0470E01470DD3
-:103B80002601E15A80470219B5F43E47041E8F0E04
-:103B9000471C1C20390F47031900B4470402820058
-:103BA000F1471C2605580F804702F9E380024703BE
-:103BB00060148F0C471C1C3C2F0F47031000344728
-:103BC0000320020200F1471C2061DB0F80470280C6
-:103BD000030002470306548F0C471C3C381C0F4758
-:103BE00002180090F03C4703028000F1471D04C812
-:103BF0000F8018003DA5E03E006047021C8F0C4777
-:103C00001C3C380C0F47031000283C47040190F17E
-:103C1000471D25CA0F8047029005643E47041DBF1B
-:103C20000C470E04470222CF4A60470504000420D7
-:103C300047031000188F62E1004100421C05A047B5
-:103C40000E04000467FB40404705040036044703A8
-:103C50001000981D6CF1024002002C470210014731
-:103C60000604470208284702100025F03C60004285
-:103C70004704100232DAC34000400185414100058B
-:103C8000000381005004470A16A804470206067A7A
-:103C90007C424047060402DFD348000459F0728199
-:103CA00047041EE0504710023FE8F24707801C7AA5
-:103CB000E0A5470220080F3001400001C25C05A0CA
-:103CC0000401470D100E62DFFA4707102026FC5052
-:103CD0000100C018E13A01000147026E4713214F6D
-:103CE000F54707014221D90740007D000F28110048
-:103CF0000101C026020414471006EBF64707011C19
-:103D000005FD036100021987F69D000247021F802E
-:103D10000420470809470408000628E01820404707
-:103D20000408470202DFE3402000D80B65610094DD
-:103D30000142B501470A0847040C002E07FA0402A5
-:103D400047050C00042BCCC36070009187BA890032
-:103D5000CA020021C20020470F3C0010A047020801
-:103D6000470601F0D3410147029FF95100040002C8
-:103D7000B680404711014EA0470902E8C342020045
-:103D800070153EC1470306D5A0A047100642D0B922
-:103D9000404707042830A0470318057321470360F4
-:103DA00037A1470F06000E3BDCB16247050647030B
-:103DB000DAA00018007C0FBB09006001E035D04795
-:103DC000020A470810470602CFE0470D0400190F0A
-:103DD00021194702014247040447080E47040E47D1
-:103DE000021BD0470930470304059981720D470231
-:103DF00002470B03000980920447047F60C2470614
-:103E000004014203400500100801804703400340BD
-:103E1000470A03000F80174705386CC302470504A3
-:103E2000009E000E0A20100058F04703404710186B
-:103E300014470403F00347081E3C30A008470290D3
-:103E4000E77F21470306EED4A447090100DE80473F
-:103E5000030402DA430247073E056EA04703B81980
-:103E6000FF4147024002B6891447090908941047E8
-:103E7000034040F0024707802C3F5ECB470308A970
-:103E8000836101470202020F470A0801F7470280D7
-:103E9000470260C80A0247060E20060CC7104702F8
-:103EA000781BEB0108084702468F0847094B0016AC
-:103EB0004047020146387B0201000247053C3C10A6
-:103EC0000A47033009807447020363C00F470A2082
-:103ED0000012204703BC7AF947030D47052005DA95
-:103EE0000A200247020772B4080009405E8F0810DA
-:103EF00047080B0D941A4247033C00A008470508E9
-:103F0000001C294B08002020D005414702800002F8
-:103F1000C20F470A080B06A590470369CAA02047AD
-:103F2000050C0020020C042032801809200008C073
-:103F300047025C8F084709200E1000084703243011
-:103F40000401470504470220CCA141470218B0C034
-:103F5000284704020F470C17900080001429EA0438
-:103F60000247050447020378D1408000D005782835
-:103F700047041C8F0847090700D04703401472D933
-:103F800047030147050401CA5B4703110567B840B1
-:103F9000470242800F47080180000A760080808037
-:103FA00000767B802000024703060E14000DA70850
-:103FB000180159C573BC006047024C8F08470905BA
-:103FC0000EDF00804703237B470A26CEFF0940000F
-:103FD000D9E3384147072047080518DA47053CE987
-:103FE00080200038470603DBF7470338A138014734
-:103FF000040C000800404702350050134703040337
-:10400000C04702266D7040084047040400047C70DD
-:1040100005470308ABA39C20470203010F0400409F
-:10402000014020E0A00147030683D047022428DA9C
-:104030005012470504002423EC4702800071B17E32
-:10404000BD40404702418F044703467E0D3447027E
-:10405000014706046410A04707020036DAF048471B
-:1040600002500743000147040F04470201639CEC20
-:10407000342000098047052065DEA0470901FFF4D0
-:10408000404000D9A720000A47020700CF0447029A
-:1040900002403401A04708022666500147094370D8
-:1040A000A04703500FA40020470204010F04470457
-:1040B0002FE00220470826760E022247070621EC51
-:1040C0004704980FF420470303808F0647020140FE
-:1040D000010A4706154001800C62CC4705C0470421
-:1040E0003D40E740C10050A7030020470202410FB6
-:1040F000044702020284AA47055A155001002026EF
-:10410000FE0847041000804702077CD34A02008162
-:10411000D772000C0801E001CF040080004247057F
-:1041200001800803C047020C41DD20470608002E2D
-:1041300039D00A47030800C02820470220010F0495
-:1041400000C002004047040D98523C300240002A53
-:10415000CF47070C0006036C4704300730280100E6
-:1041600001C000EF044703029E4705080803C0474B
-:10417000021401E024001047061C20700041470390
-:10418000A0C14702404702010F04470437AA0104B7
-:10419000470219523C30470302DA10023002470648
-:1041A00004EE8063470315310028C0470201EF0485
-:1041B00047034035040010470403C0470303F0479A
-:1041C0000340470506034A1047030803240020471D
-:1041D0000202400F040060470388012180470272F9
-:1041E0003C30470368EE40220040470306000602C9
-:1041F0001E2000180031EF32002160470201AF0499
-:1042000010470223CDE0470603C14704EF470340B0
-:1042100047051401E04705A5FBE0470306010F042D
-:1042200047036004C0804704723C304703027D802E
-:104230004702404706036A0A4703019B2FF483475E
-:104240000203808F048047060100010E0803C004AA
-:104250004702404BF1493000080F2804471014056D
-:1042600000044706030008187A3C300447023BCD9F
-:10427000F0407000104702044706104702804705CF
-:1042800003A18A4704028047060803C447050A4081
-:10429000800070FD24470280470D028047050280A0
-:1042A000470401805A3C3040000600FA0A404703A8
-:1042B00080470201470D0142C04704014047040303
-:1042C0008F470203C010470238ED0BC10002008D7A
-:1042D00028470A010141840001C027824704068063
-:1042E00047065A3C30400006027A0549000547025D
-:1042F00004000E47092A81A047031F9380470950F5
-:10430000470203C010002401505F404702700300C1
-:10431000404702304703044706400002800F000870
-:10432000470820007A3C30000E00637AA54047021F
-:10433000804705044705184704C00060008F00044B
-:104340004709180803C05800042C70E34047029046
-:104350009D0008470E01C00300F04709018B523C45
-:10436000300C002C03FCC34200380008000C470E40
-:10437000020014E0F847043FC04704080803C05097
-:10438000470201700500300031F1000C0004404785
-:104390000B40022ECA5047041DD080470319523CDF
-:1043A0003020470202DA47023000809000040020EB
-:1043B000704705784706065415A8470803470303C6
-:1043C000C04702042C6A81400002000747030447EB
-:1043D000052800F3C2BF800003D280C0F047070168
-:1043E000804702723C3006010C026F5040180147B2
-:1043F0000306470618180007E2954703400EE0F849
-:10440000470950000AC0470401DA3C47024010CB7C
-:10441000470402C0054442800847060402470222BE
-:10442000470820007840204703016D3447041847AF
-:1044300004014850400100704706071C000847036C
-:104440007200701102010147080247060847040282
-:10445000470A04470220470680470C0147060447E5
-:104460000401470802C047031047170247060847E0
-:104470000B08471602470608470402470608470686
-:1044800020470680471F0300070004470B7C471D99
-:1044900003470F6C470CA84705024727204708042D
-:1044A00047220240C0470408014703020040470476
-:1044B00008014705200447058010474C03470D704D
-:1044C000471F014703044709D0470340473A0247C3
-:1044D0001208470D80470A80000247030247058003
-:1044E000470502470608470620472204470D4010AB
-:1044F00030C04718067B38470240626D6140470371
-:1045000083DC05470430C0471803DBD0470301AB09
-:104510002022C0470203C0008047021030C0471667
-:104520000103F8EC00B0018047020162000600833D
-:10453000D6000A00180030C0471703F83001F047D2
-:104540000903C20D1047021030C047160108805AF7
-:1045500000B01400AA49A16040030083C447030CC3
-:104560000030C0471702002D01800800064B6C0286
-:1045700080030003C247041030C0470A80470D146F
-:10458000EC50104702A2EDF540470383CC054702EB
-:10459000800030C047193AD8F04703A1E420470310
-:1045A00003C2008B01001030C04716010A805F80F3
-:1045B0004708030083C60847032030C0471721007F
-:1045C00028104708020003C00547031030C04710F9
-:1045D00002470980470502470483C647025C470239
-:1045E00030C0471A10470503C0470303C247028083
-:1045F000001030C04717080969470740470383D6B2
-:104600000581470330C04718215D47072047030352
-:10461000C0000A47021030C0471708805F181047D3
-:1046200007100083DC4703800030C0470901470EB4
-:10463000227A00804707600003C247020100103061
-:10464000C0471704000A1847024010F129604706C6
-:104650000A470330C0471801504703040F000140C8
-:1046600047091030C04717043C585010018010F122
-:104670006A06804704014702180030C047183C1002
-:10468000508047020F00414047091030C0471704CF
-:104690003C5878A0470210F121404703A906F38057
-:1046A00000480030C047183C105847030F00400234
-:1046B000800020193FE547028C1030C04717043CAA
-:1046C0005C470410F121604047028BACE00A4703CD
-:1046D00030C047183C1000C047020F004002800065
-:1046E0002002A7B50A47021030C04717043C5C47B8
-:1046F0000410F160470490B788470430C047183C65
-:104700001047040F47050222EFF54702201030C082
-:10471000471708024B9980470210F16047048BAE9F
-:10472000F81B470330C0470901470D0210DA104754
-:10473000030F004047030202A5A50A47021030C03C
-:10474000471708025A470410F168470320A907D108
-:104750009A020C0030C047170122EB470220000FDD
-:1047600047048000193EA58002081030C047170892
-:10477000826B470410F1284704A93CE00A47033044
-:10478000C04718115D47040F0040470280022A26E7
-:10479000800002001030C04717183DC0470416992A
-:1047A00047058001B50A08470230C04712028C0055
-:1047B0000800083C20470303096B47053FC1ED9003
-:1047C00047021030C04709056047081C4702604790
-:1047D00005018010F1624702060083DE47031800DE
-:1047E00030C0470940470802803047068000010F6B
-:1047F0000041C0470303C047041030C047130C7C7E
-:1048000000304703100080800AA13847020300A946
-:10481000408047020C0030C0471202C27800304787
-:1048200003084702C00AA040470429404703081074
-:1048300030DE4710084702404709C060F180470456
-:1048400083C4470530C2470F01140003470A4000E4
-:10485000F0800008470203C20D0B47021030CE471C
-:10486000090847095C470A2A500447030183C447E3
-:104870000240470230C247090847062002024702A9
-:10488000804706200045A0344702800003C2094744
-:10489000031030C00700A0470F804E784707200064
-:1048A0002A50470902470230C04709084708B24268
-:1048B00078470905A03C402847081030C0471280BF
-:1048C0000E470C024702808083D6470530C0470957
-:1048D0000847062000F24000084704D000204703A4
-:1048E000024000800003C0470202001030C00747AA
-:1048F00003020F780447022047085405003047069A
-:1049000080470A1C000C0030C04704020F08024711
-:10491000082000B3823A802047068047058047047C
-:1049200010A20447071041F700280010470380A099
-:1049300047050800080379000447095981A50A4082
-:10494000470ADFB44047057147060800608369D015
-:10495000B04709198D0D904709022483802800442F
-:10496000090AF900A0018047030800083DC080E063
-:10497000018020F5470306005A64A0470A02E7B306
-:10498000C0400010222FDA11B047050847023C2032
-:1049900071B04702A0F080038047021A74470B02EF
-:1049A000AA77144703014148504702804704304723
-:1049B00004A010002A57A86047035A44850A4709F3
-:1049C00002AA0C022C4702014000D8B00080470424
-:1049D000204703F147030F50F5C047031A640090C6
-:1049E000470A1892D428000101406A50104707086E
-:1049F0003DC030470320F5806047035A4488470B89
-:104A0000341EB46C470223401BD8F0470608203CF4
-:104A10000030470320F08047041A65010B47094026
-:104A2000053EC04704046B80470208002047081475
-:104A3000470302000347020CC5A8000D40470708C2
-:104A40000807C04704035810470202003C47080803
-:104A50004704404703332CBB0E00804708011286F1
-:104A60002800014294DB4703C0470F0847078047EF
-:104A70000A1E8040470202003B0090008047102839
-:104A8000470660470850A55EE060000208BBDA8078
-:104A9000E0470701E94E518047061047023C1C07DA
-:104AA000470B85068447042A6EF04706744702AA1E
-:104AB00078F847072847023C0207804709025A0056
-:104AC0005470007047038047070108F46A470420C8
-:104AD000F18247020240029DE7470280470702A594
-:104AE00003424000304703F000024707980B470499
-:104AF00020F001C047028002830080014708030FB5
-:104B000052A047030C3E6A47090294DE18470A5434
-:104B100014850A470AF0983C470303C3604709011C
-:104B2000541FD0470990144702904709030F138080
-:104B30004702600C3C4E30000180470614C8470213
-:104B400001804703E00846005A45E047021847083D
-:104B5000F0470503C0470A02BC1CD04706220020CC
-:104B6000001A7400084709030F13A60447020C3CFF
-:104B70004A9810470505000294DD51E000100AF143
-:104B800084470443C48047020C4708F0043C204794
-:104B90000203C010108047050200015409094703B1
-:104BA00005F0A047043C010D0B000C4707030F1252
-:104BB000806030000C3C4AB180C8470715CA5004D9
-:104BC000470220F580038003005A65E047020C4746
-:104BD00008F004470403C010100014470602BC1C70
-:104BE000084704F0470302001A54000B000447076B
-:104BF000030F178047030C3C5E4702804706029470
-:104C0000CDF9F0470903C4470CF0470503C0470A34
-:104C100001541F70D0470603470203C047082047CE
-:104C200002030F168047030C3C5A0001C8470714C3
-:104C3000FAB8E047080183DE47021C4709F0470540
-:104C400003C0470314470602BC3CB890470983C021
-:104C5000470B02AA17A06047020C3C5A0180470686
-:104C60000101E8FF71C0470507804704010010807B
-:104C70004708AA0404470303C010470A542C0847F6
-:104C80000604470680470C200400200AA85E18147A
-:104C900000C047040108F54C704704A760000447B2
-:104CA00005080008470A0420001002A810008A0026
-:104CB00040470404006419F8F0000100A0470A0806
-:104CC000470E083D60000447052000083DC047042A
-:104CD0008005E000380004C3FCA04711483C00F008
-:104CE0004708083C47062BA342D000043C3E470B34
-:104CF000020F78470360083D6010000180470A05F5
-:104D0000804019B006000600C3C4E04702184707F8
-:104D1000020F084704083C00F8470B7000084702E0
-:104D200001EB404702243C471230083CE070470248
-:104D300080470440083DE0304702802845E04704B2
-:104D4000C3C4A981470F22083C20080014C04705AE
-:104D5000083C204703C0242BA002C047023C0101AD
-:104D6000084709020F304704083CE001F0470708F4
-:104D70003C604703204009B047023000C3C4A998F3
-:104D80004709020F4705083C2001E04707083C207F
-:104D9000470521EB4047033C0101470D2004470232
-:104DA000183C60008008470405470905E2E02847F1
-:104DB00002C3C5E0470D3C384702083C20014705C7
-:104DC000024705B04703808BA06047033C471308A8
-:104DD0003C40F84708083CC047042A01A440470269
-:104DE00001C3C5A04711083C20F04708083C20B08B
-:104DF00047032050A04703043C471202083CC04729
-:104E0000070100083DE0470501B1404703C3C5A0C5
-:104E1000184710083C470A083C4702C047033B7C40
-:104E20002047033C0103470D0E010020083C60476A
-:104E300003804705083CE047038400012447020241
-:104E400000AA85A101000C470B028000083C20004D
-:104E5000044707083C2010E147020200B447042A37
-:104E60008100080004470272009011030101470805
-:104E70000247060847040247080780044702204704
-:104E80000680470C01470604470401470D10472AD6
-:104E90000847160247060847040247060847062047
-:104EA000470680471F024703044729034729A047B5
-:104EB0002D10471E0200404704080147030200402E
-:104EC0004704080107804703200447058010474531
-:104ED00001470603470D204718024706034703040E
-:104EE0004709C0470340472B38472108470B40007C
-:104EF00080470A8047050247058047050247051895
-:104F0000084706202C471101470F04470D40003089
-:104F1000C0472B1030C0472C30C0472B1030C04743
-:104F20002C30C0471004471801001030C0470F80D4
-:104F3000471C30C0472B1030C0472C30C0472B10C7
-:104F400030C0470E10471D30C0470A0200140B47FF
-:104F50001D1030C0470C28E1471E30C0471B0447D6
-:104F60000F1030C0471B0A471030C0470B20280BDA
-:104F7000471D1030C0470C14E1471E30C0472B10AE
-:104F800030C0472C30C0472533069047031030C04F
-:104F900047242031A480470430C0472B1030C0473D
-:104FA0002C30C047253C0247041030C04723048002
-:104FB0003C14470530C04708804721801030C04767
-:104FC0002901400030C047270147031030C0472C5B
-:104FD00030C0470A80471D0A47021030C0472801E9
-:104FE000470330C0471D0300F04707054703103053
-:104FF000C0471FF147070D9A470330C0471702A863
-:1050000009704705404706010800041030C04711E9
-:1050100080470501544147041000796047050801A5
-:1050200000080030C047150447023C47060B4047C4
-:1050300003802A81000847021030C047150200078C
-:10504000C05847041008684704AA85E1994703300F
-:10505000C047183C1047050301428047023C470502
-:105060001030C0471707C04A470410086A06C047F7
-:1050700002C3C5A0470430C0470F044705300002F3
-:105080005A40470503014047033C47051030C047DD
-:105090000F0A4707065848470410086B6680470206
-:1050A000C3C5E00080470230C0470FF047083C10FE
-:1050B0000847040B41428047023C0147041030C0BE
-:1050C000470F10470707C05A38470310002A06C089
-:1050D0004702C3C4E018470330C04711C047050268
-:1050E0005A500147040B41428047023C01014703EB
-:1050F0001030C0470E50470280470506585E71C009
-:10510000470210002B66C04702C3C4AF00A047028D
-:1051100030C04717025A504705034704013C470572
-:105120001030C047100180470506584870E047021C
-:10513000100028470301C3C4E04702180030C047ED
-:105140000B083C4709010001409847040100034057
-:1051500047023C3647041030C0470B083D60470902
-:1051600004470238E0470210002800404702C3C449
-:10517000E7470E3C47021010D9470D04470506C00B
-:105180004702080247112000034B470D0247050262
-:10519000800010081CE0470D0200084704020020B0
-:1051A0004703028047041047041BB842C04702105F
-:1051B00080900902470B1C470C01470A073E470332
-:1051C0001014979598471301E04707016BCA99900F
-:1051D00047093016B500024713F047070160699987
-:1051E00090470506804702103488470F084704019E
-:1051F00000204704040002A8100847030A00836443
-:10520000471580470401E04705020202A85C1847E1
-:10521000030A037942804718D9F0470702003C107F
-:1052200000E04704704704069E901B47110B4B801B
-:10523000E0470707C05C001000040807B0470301FF
-:10524000A94F800A470E053203D42008B002470553
-:1052500008003C47020A470240A08047042801DDBD
-:1052600080470F3003D56A7880024704300007C0BA
-:105270005C00044703A37847051C95471E3C470282
-:10528000A047090E01AD1A470E0160470378470891
-:1052900017C05C00104708100617900A001847074F
-:1052A000020F4705A0014C4706029001470210007B
-:1052B000E04702080B38470534A01B4709920F78D6
-:1052C0004705824D470601470204000C00104703C2
-:1052D00003BC000447020216950A471103D0470297
-:1052E0002047040604003C2047032020F0804704A8
-:1052F00002378009471004001A7881470501041815
-:105300003C6047032020F78166800201802CE04743
-:1053100003023FC04709024703D070002047040240
-:105320004706202020F00142808000138299090264
-:1053300000443FC04709010004001A8180470B0167
-:10534000002020F30366C00012A346054713404720
-:105350000A3C470280003020F047051E81002947A3
-:105360001004021A01E0470604183C60470420F7C5
-:1053700080E04702101E8CC0470E01470301C009A0
-:10538000E02847097008002060F080440080000891
-:105390004E810A0080470B02470204021A79F0048A
-:1053A000470B200020F3800700800004B408471258
-:1053B00002D050A04707603C2047032060F08047A0
-:1053C00002500010038D471104000A50A008470640
-:1053D000183C4047032020F7470410001D80470E6B
-:1053E00001470203C25010A047072294470480607F
-:1053F000F080470202003040C79F470D028000073F
-:10540000C0CAD04707081A9408470201E020F747AE
-:1054100003031030941F0E471003C0604702044777
-:10542000050C02940050A0006060F047052001EDDB
-:1054300080471007C1EE01E0804705080A9408473D
-:1054400002010020F7470306100014A54702184781
-:105450000B01470203C040508447060C01680C5002
-:10546000A0003860F0470502810D1F40470C02473D
-:105470000207C0EA00B84705020A0A940100A047E3
-:105480000220F74702084000029EE00A471042A8A7
-:10549000103080004047112047040B47100AA85ADB
-:1054A000001000C0471150471543C0100080470846
-:1054B0003C470401010F34028047020142000E47BD
-:1054C000100C3C5A01904707083CE0470507314063
-:1054D0004702208155E0471123C0003047093C00B6
-:1054E000080040008000A0000347160C3C5A000151
-:1054F0004707083C6071804703512047070E47105B
-:1055000023C0470201C047073C20008080000FF005
-:10551000A14047170C3C5E4709083C4001904702F8
-:105520008FA5200280470401471123C010104709AE
-:105530003C204703010103B8001000402042E090E6
-:1055400047100C3C4A99804707083C404704020733
-:1055500047022000100056879E471023C0101047B6
-:10556000093C00084702C04702014047031C16B12E
-:1055700047110C3C4A984708083CC05847028047EE
-:1055800007102DD0471143C0470B3C470280004015
-:1055900047040347160C3C4E470201804705083C70
-:1055A000C0001001470520470718470E43C2E047D7
-:1055B0000A3C2010470501428047050D47100C3F6B
-:1055C000EE4709083CE0984706028047050110476E
-:1055D0000C40471A6300294000100020470B704719
-:1055E000088047111200A9408018470D4002470467
-:1055F000084727200147043847120647061800408D
-:10560000472503004003C20010472701470283D605
-:105610000018470E30470401470C04470540471B5C
-:1056200080470B02470402470240470F0F0680479E
-:1056300003083C000147050285470B0447020402AA
-:1056400081C047090102007A804703083D4000807D
-:1056500047040102470B074703A804B18A470D28F6
-:105660000002083C20014702C0470408403C0008F3
-:105670008000802A5034024702840281E108470CEE
-:10568000064703083C6001E000C047034000183CA7
-:10569000605010148025A04702404702E804B981F9
-:1056A000470F50083C470B3C20014702402AA040CE
-:1056B000470201000280C0471050083D607A000197
-:1056C000804705183D4000A001002AA7304702048A
-:1056D00005E804F00A2018470C7000483C47070210
-:1056E000700023C000700447022E7B384703060277
-:1056F00094E00E4710083CC047090BC140000A4720
-:105700000222402800054702E826B00147031006A0
-:10571000B04704807E80470301541847080800B052
-:105720001908D04705034047022A81470580BEF18A
-:10573000984702020276803847022295EA01E1008A
-:10574000804704010A75E971F0470401E040020155
-:105750002A96E7804705D010470280AF06543000F4
-:1057600002017C0B470601470202F43C47048050CB
-:10577000BC6047020430E6D047048286B01C470371
-:10578000053376684703147D470780010141791886
-:1057900008C00040A187E0470391E7B1804703209C
-:1057A00004A1470484128228470209680908804737
-:1057B0000702BC2A7180470401E047033E820919B1
-:1057C000470380A5E847030200F20E6C47020A94E3
-:1057D0000139E1C0470714FA01C04705E047033E1D
-:1057E00094C009470303C14705AF0E426002020996
-:1057F00068087047080154087047034000FC4705DB
-:1058000015910F470343C4A0470304053A462805F2
-:10581000000A940080470802955E80080004001189
-:1058200064470554A8470403C10100180008550A3D
-:10583000470420141C470601470202BC3A70804707
-:105840000205008002470303C0001E470343C5ADA5
-:105850009A4703A51F86470302BD6950A0470580EC
-:10586000470215EC80B04702050121404047028302
-:10587000D6000A470303C0050A4703403604204701
-:1058800002083C20084702804702024703D82F083D
-:10589000F04702A8503C002047023C00D59B47033C
-:1058A00043C4880147020220D2A0644702083CE0BA
-:1058B000504702C047040148D47A70100004247590
-:1058C000F847043C15C38A470303C047031000048C
-:1058D00003CC004040083C4708040001C019D847E9
-:1058E000030500BC0020008028B5918A470343C50A
-:1058F000A01E001042205220600050283CE0798019
-:10590000018047040102E8EBB80001800007A160B4
-:105910000006001407E947021847023D000D000287
-:1059200000050AC03C47047C10F0470702A809D0D4
-:10593000A540002CBD746247022030CE8D47044044
-:1059400021A01B4703A557542802002040F980B02E
-:10595000470401470202955D800847022C3DF7602D
-:1059600040200020F4950A47047200801100620074
-:105970002F824702010347041000080010100202A2
-:1059800004002200202000080424044707080447DC
-:10599000032004002020202400082C040C0C4703C2
-:1059A0000410100C001000084703080847030830D3
-:1059B00000303004002226060408000404000447D6
-:1059C000042008000C000828000C0008002808002B
-:1059D0001008082808470228282847020C10101031
-:1059E00024000224242C2C0400282C21010800115E
-:1059F0003010200004220222470320202030040817
-:105A000030100010080004040404000400044706D9
-:105A10000800040808084702084702242404000478
-:105A20002C2C2828470221012110040830102010B6
-:105A300047022000202008042020200004470404FE
-:105A400008000404040400101010101000060810D0
-:105A50000808030247020404080204242424040062
-:105A60002C2C2820020021012100020A20002800FD
-:105A7000080228282030040030301020000247029D
-:105A800004000A0204040014000610101008044761
-:105A90000208080008020C040C2C02022C2C2C2CEE
-:105AA0000006282A2A470208220022000C022002AF
-:105AB00020204702202030300202507040000A0EA1
-:105AC0000C080C044703040010080810100212040C
-:105AD0000002202020080824242400020247040A8F
-:105AE0000E47030204470206240608082C2428282F
-:105AF0000202201030100E0A201028084702280049
-:105B000020200A08203030180400021A0A040A0A69
-:105B10000C040C0C470208082808020C0808280886
-:105B20000C02280A28020008080220080800202881
-:105B30002010000C1010041008020404280C0408A3
-:105B400028202121080031303020060E2222222078
-:105B50000E0620470220040C101010000A47020411
-:105B60000404000C040447020A0247020800060865
-:105B7000080A02080800060406040206082A284744
-:105B80000321213130060A3030202002022020205B
-:105B9000000804002010000600100010000C040093
-:105BA0000404040616141010100206181008080148
-:105BB00047020804040A020404040604082A0C2A02
-:105BC000220A0223232322000822222A200A022852
-:105BD0002A30100400101000080202000808000813
-:105BE000000C040C0C020618081818040008180809
-:105BF000080A020C0C0C0600080E04220E0A0622EB
-:105C00002A22220008222222220C022222222202FE
-:105C10000032001010000240504000020C08080C36
-:105C200004080A0404470308101012120400024773
-:105C300002200E04240424200C0E02000202020C96
-:105C40000202020204020602060602080A262A08C6
-:105C5000080B303030300608202028284702820008
-:105C60008001030002282828000208082818180EBE
-:105C7000091A1A0A080208080C0C0C00020C00226F
-:105C800008000E020A22020603020222020808028B
-:105C90000222020808222030100204101404040812
-:105CA0000004000808040808000121020011301057
-:105CB00020080E022202000A0847050210001010F8
-:105CC0000247021000040A0C04040006080802003F
-:105CD0000A0206000A0A020E0A000606060200046C
-:105CE0000A0A0A02020013011130040A00300020DF
-:105CF000024705080610470306470502081000047E
-:105D00004703141410100002181018180147020855
-:105D100004060200060606020C080A0A0A00080A1F
-:105D200003010320470202200A020A001A0A1A127B
-:105D30000400081A08080002080808080800080CEF
-:105D40000C0C02040C0018100400101800100002C3
-:105D5000040606060808060202000A0C00020002F9
-:105D600047032000220C020002120002001212124D
-:105D700002470240424047020C080808040002049F
-:105D80000404470410121204001247030200040620
-:105D9000060247020202020247020247020604020A
-:105DA0000406060002000A021A0A0001121200325A
-:105DB0000447022008200002080808080200080022
-:105DC00008100403121A120847040402020206060D
-:105DD0000202000422020200060100020002470241
-:105DE0002200020A47023A2A321A02040412040468
-:105DF00047040808040008000101020011101047C0
-:105E000002040202024708024702101002001010AA
-:105E10000010000604060602470202020A000600FD
-:105E2000080A04020002040400020004080A0A101E
-:105E3000020013131302044702024706104702062A
-:105E400047021000060010001047020A47021447DC
-:105E50000314141004000218001818000110120690
-:105E600016020006060200040008080847020201A4
-:105E7000010147041018100200181A1A0A04000A37
-:105E80000208020002000800084704040402040497
-:105E90000400100400101012100002160606064737
-:105EA0000302470202040808084706100402100013
-:105EB0001010020010020202040002020002000898
-:105EC000080808080002040404044704120204003D
-:105ED00012101012020006160602470302470604BB
-:105EE0000004000404001402001818181A0001121B
-:105EF0000202020400024702080002080800080229
-:105F00004705040112021210470210120612000285
-:105F10000606000600044702200006012000204774
-:105F2000041018104702383A320A02040606060422
-:105F30004702110162003F824702010347080247FE
-:105F40000802470601014706202047062020470691
-:105F5000042047064004470740470E858447070151
-:105F600047068047088047060202470602470802A4
-:105F7000471E04470804471E0404471E2047072005
-:105F80002047062020470601470801473601014700
-:105F9000164247084247060202470E2120470620C4
-:105FA0002147061020470614144706505047061094
-:105FB00010470610104706951147061094470690A3
-:105FC00090470610104706021047060202472604B3
-:105FD00004472604470804471E2047072020470699
-:105FE000202047060101472E01470801471E424273
-:105FF0004707024706302047063030470611114751
-:106000000614104706501447061050470610104754
-:106010000611104706101147069494470610904742
-:1060200006101047061210470612124706101047B6
-:106030000710470E04470804472E0404472E20206B
-:1060400047062120470701472601014708820080B3
-:1060500001034720520247063052470630304706B8
-:106060001010470611104706041547064040471612
-:106070000101470E84470804470E1202470612101A
-:106080004706101247061010470610104706041462
-:10609000473604470804472E202047060121471EA3
-:1060A00001470801471610470712104706301247EC
-:1060B000067272470710470E04470741054707401D
-:1060C000470E014708014716040447060247080225
-:1060D000470E0202470610470710104706101047E8
-:1060E0000610104707104766212047072147160171
-:1060F00001471610470710104706121247062030B6
-:106100004706422047074247164140470701470ECE
-:10611000010147260202471602470802470E1047B0
-:1061200007101047061010470710475E2047072149
-:10613000214708110262002F824702010347081B12
-:106140001B47041F1B4704041F47101B47051B1B4D
-:1061500047041F1B47041F1F47101B1B47041B1B23
-:1061600047041F1F47041F1F47051B470A1B1B47E8
-:10617000051B4704040447041F1F47051B470A1B50
-:106180001B4704E4FB4704E4E447041FFF47051BE7
-:10619000470AF9194704E4F94704E4E44704F7F728
-:1061A000470513470AF9F94704E4F94704E4E447CB
-:1061B00004F7F74705F3470AF9E9470414FD4704D4
-:1061C0001E1C4704F7FF4705E1470AE9E947041C9D
-:1061D000FD47041E1A4704EFFF4705E1470ADDC9E2
-:1061E00047041EDD47043E3A4704BDBF4705A947A3
-:1061F0000ADDD94704A2FF4704A6A24704BDBD4754
-:1062000005B9470AFFDD4704A6FF47048486470413
-:10621000BDBD470404BD470AFFFD470406FF470410
-:10622000040447043D3D4704043D470AFFFF47047B
-:1062300006FF470404044704FDFD470404FD470A24
-:10624000FBFB4705FB4704244705FDFD4705F947D0
-:106250000AFBFB4704FBFB4704FFFB4704FFFF4728
-:1062600005FB470AFB224704FBFB4704DFFB47040F
-:10627000FFFF470522470A22024704FBFB4704DFD2
-:10628000DB470426FF470522478002820080010386
-:1062900047022C2C47041F3E47041F1F4704CCDE37
-:1062A0004705C8470A3E2C47041F3F47049F1F4726
-:1062B00004DEDE4705C8470A3F3E47041F3F470448
-:1062C0009F9F4704DEDE4705DA470A373647040159
-:1062D000374704898147045ADA470552470A763618
-:1062E0004704C1F64704A9814704FAFA4705D24793
-:1062F0000A74744704C1F44704A9E94704F2FA4751
-:1063000005F2470A74744704E5F44704EDED4704C9
-:10631000F2FE4705F2470A7474470427744704CF16
-:106320008F470476FE470570470A747447041F744C
-:1063300047049F9F470474F6470574470A746447EF
-:10634000041B7447049B9B470476F6470574470A71
-:1063500060604704197047048999470476F6470539
-:1063600076470A60604704096047048989470476D4
-:10637000F6470576470A64644704096C4704818937
-:10638000470476F6470576470A76764704097E473E
-:10639000048189470476F6470576470A76764704EE
-:1063A000297E4704C189470476F6470576470A7770
-:1063B0007647047F7F4704F7FF470477F747057662
-:1063C000470A776047045F7F4704B7FF470477F7C2
-:1063D000470560470A612047045F7F4704B79F472E
-:1063E0000461F7470540478002110362003F82477E
-:1063F0000201034783828200800103478382224493
-:10640000B20106004700000000000000000000008C
-:1064100000040240000400000A00090000140240C9
-:10642000000400000A000900000C024000080000FF
-:106430000B00090000080240000400000A000900E7
-:1064400000100240040000000200090000000240A9
-:10645000020000000100090000100240008000005E
-:1064600000000000001C02402000000001000000AD
-:10647000000000000000000000000000000C0240CE
-:106480000400000001000000000000080080000877
-:106490000000010800800108000002080000040854
-:1064A0000000080800000C08000010080000140894
-:1064B0000000180800001C08000008001000180068
-:1064C00020002800300038004000480050005800EC
-:1064D000000000006410B71DC8206E3BAC30D92608
-:1064E0009041DC76F4516B6B5861B24D3C710550B4
-:1064F0002083B8ED44930FF0E8A3D6D68CB361CBDC
-:10650000B0C2649BD4D2D38678E20AA01CF2BDBD8F
-:106510004932435F504D49435F4D414700537475C5
-:10652000636B20627574746F6E2072656769737433
-:10653000657220697320696E76616C69642C2063D2
-:106540006C656172696E672E00427574746F6E209F
-:1065500069642000697320737475636B2100427550
-:1065600074746F6E20776173207075736865642032
-:106570006F6E20626F6F742E20427574746F6E2080
-:10658000636F756E7465723A2000446973706C6154
-:106590007920627573792D776169742074696D65EE
-:1065A0006F75742065787069726564210046504784
-:1065B0004120636F6E66696775726174696F6E20E2
-:1065C0006661696C65642E00446973706C61792042
-:1065D000696E697469616C697A6564206166746565
-:1065E00072200020726574726965732E00446973AD
-:1065F000706C617920696E697469616C697A617423
-:10660000696F6E206661696C65642E004352455364
-:106610004554206E6F74206C6F7720647572696EBC
-:10662000672072657365740043444F4E45206E6F5A
-:1066300074206C6F77206166746572207265736573
-:106640007400435245534554206E6F742068696747
-:1066500068206166746572207265736574004344D6
-:106660004F4E45206E6F74206869676820616674BC
-:1066700065722070726F6772616D6D696E6700453B
-:106680006E61626C696E67203676362028446973C5
-:10669000706C617920564444432900456E61626CF8
-:1066A000696E67203476352028446973706C61798F
-:1066B0002056444450290044697361626C696E67D6
-:1066C000203476352028446973706C6179205644F3
-:1066D0004450290044697361626C696E67203676A4
-:1066E000362028446973706C6179205644444329EC
-:1066F000002E2E2F7372632F647269766572732F6A
-:106700006932632F6932632E63002E2E2F737263FA
-:106710002F647269766572732F6932632F693263F1
-:106720005F68616C2E630046617374204D6F646511
-:1067300020506C7573206E6F7420796574207375AA
-:1067400070706F72746564002E2E2F7372632F64E5
-:106750007269766572732F7065726970685F636FB6
-:106760006E6669672E6300616464726573732000EE
-:10677000206973206F75747369646520737973740D
-:10678000656D20666C617368006661696C65642084
-:10679000746F20657261736520736563746F722016
-:1067A0000050726F6772616D206661696C6564206C
-:1067B0004000496E76616C6964206669726D77612C
-:1067C0007265206465736372697074696F6E21000D
-:1067D000436865636B73756D6D696E67206669727A
-:1067E0006D77617265207570646174650043616CDA
-:1067F00063756C6174656420636865636B73756D44
-:106800003A2000496E76616C6964206669726D7722
-:106810006172652043524320696E205350492066BF
-:106820006C61736821007072765F65726173655F79
-:106830006F6C645F6669726D776172650070727605
-:106840005F77726974655F6E65775F6669726D7791
-:106850006172650057652772652064656164004355
-:106860006865636B73756D6D696E67200020627972
-:106870007465730D0A00436865636B73756D202D35
-:106880002077616E746564200020676F7420004F6C
-:10689000757220696E7465726E616C20666C6173CE
-:1068A0006820636F6E74656E747320617265206218
-:1068B00061642028636865636B73756D2066616928
-:1068C0006C6564292120546869732069732072659E
-:1068D000616C6C792062616421004F757220707266
-:1068E0006576696F7573206669726D776172652070
-:1068F000757064617465206661696C65642C2061E3
-:10690000626F7274696E67207570646174652E00C1
-:106910004E6577206669726D7761726520697320B4
-:10692000617661696C61626C6521004C6F616469BC
-:106930006E67207265636F76657279206669726D25
-:1069400077617265004661696C656420746F206CC4
-:106950006F6164207265636F766572792066697213
-:106960006D776172652C20737472696B65206F6E30
-:10697000652E2054727920616761696E2E00466130
-:10698000696C656420746F206C6F6164207265634C
-:106990006F76657279206669726D776172652C20F9
-:1069A000737472696B652074776F2E20547279202E
-:1069B000616761696E2E004661696C656420746F61
-:1069C000206C6F6164207265636F766572792066F2
-:1069D00069726D776172652C20737472696B6520C2
-:1069E00074687265652E20534144205741544348D2
-:1069F0000048415244204641554C54006578697422
-:106A0000207374616E646279000D0A0D0A0D0A002C
-:106A1000E29688E29688E29688E29688E29688E294
-:106A20009688E295972020E29688E29688E29688FA
-:106A3000E29688E29688E29688E2959720E2968828
-:106A4000E29688E29688E29688E29688E29688E264
-:106A5000959720E29688E29688E29688E29688E208
-:106A60009688E29688E29688E29597E29688E29682
-:106A700088E29688E29688E29688E29688E2959780
-:106A800020E29688E29688E29688E29688E29688E6
-:106A9000E29688E29688E29688E2959700E29688E8
-:106AA000E29688E29594E29590E29590E29688E2EB
-:106AB0009688E29597E29688E29688E29594E29528
-:106AC00090E29590E29590E29688E29688E295971A
-:106AD000E29688E29688E29594E29590E29590E2BB
-:106AE0009688E29688E29597E29688E29688E29503
-:106AF00094E29590E29590E29590E29590E2959DD2
-:106B0000E29688E29688E29594E29590E29590E28A
-:106B10009688E29688E29597E2959AE29590E295BA
-:106B200090E29688E29688E29594E29590E29590BC
-:106B3000E2959D00E29688E29688E29688E2968841
-:106B4000E29688E29688E29594E2959DE29688E244
-:106B50009688E29591202020E29688E29688E29538
-:106B600091E29688E29688E29688E29688E2968894
-:106B7000E29688E29594E2959DE29688E29688E214
-:106B80009688E29688E29688E295972020E2968899
-:106B9000E29688E29688E29688E29688E29688E213
-:106BA0009594E2959D202020E29688E29688E295D1
-:106BB0009120202000E29688E29688E29594E29562
-:106BC00090E29590E29688E29688E29597E2968820
-:106BD000E29688E29591202020E29688E29688E26B
-:106BE0009591E29688E29688E29594E29590E295F6
-:106BF00090E29688E29688E29597E29688E29688F7
-:106C0000E29594E29590E29590E2959D2020E2969F
-:106C100088E29688E29594E29590E29590E29688D3
-:106C2000E29688E29597202020E29688E29688E214
-:106C3000959120202000E29688E29688E2959120A6
-:106C400020E29688E29688E29591E2959AE296880B
-:106C5000E29688E29688E29688E29688E29688E252
-:106C60009594E2959DE29688E29688E29688E2966F
-:106C700088E29688E29688E29594E2959DE296886D
-:106C8000E29688E29688E29688E29688E29688E222
-:106C90009688E29597E29688E29688E29591202080
-:106CA000E29688E29688E29591202020E29688E29A
-:106CB0009688E2959120202000E2959AE29590E254
-:106CC000959D2020E2959AE29590E2959D20E2958F
-:106CD0009AE29590E29590E29590E29590E29590F7
-:106CE000E2959D20E2959AE29590E29590E295904A
-:106CF000E29590E29590E2959D20E2959AE295903A
-:106D0000E29590E29590E29590E29590E29590E27E
-:106D1000959DE2959AE29590E2959D2020E2959AC4
-:106D2000E29590E2959D202020E2959AE29590E2EE
-:106D3000959D202020004C617374206669726D77E8
-:106D400061726520626F6F74207761732073746164
-:106D5000626C653B20636C65617220737472696B51
-:106D6000657300486F6C6420646F776E2055502007
-:106D70002B204241434B202B2053454C454354206C
-:106D8000666F72203520736563732E20746F2066E2
-:106D90006F7263652D626F6F7420505246004669B2
-:106DA000726D7761726520697320657261736564C5
-:106DB000005761746368646F67206361757365640D
-:106DC000206120726573657400536F667477617219
-:106DD00065206661696C75726520636175736564B1
-:106DE0002061207265736574004661696C6564207A
-:106DF000746F207374617274206669726D7761724A
-:106E0000652C20737472696B652074687265652ED9
-:106E1000004661696C656420746F207374617274DC
-:106E2000206669726D776172652C20737472696B6C
-:106E3000652074776F2E004661696C656420746FFD
-:106E4000207374617274206669726D776172652C4B
-:106E500020737472696B65206F6E652E00466F72C9
-:106E600063652D626F6F74696E67207265636F76FC
-:106E7000657279206D6F64652E2E2E00426F6F74DF
-:106E8000696E67206669726D7761726520402000C7
-:106E90002E2E2E0D0A0D0A00426F6F742062697447
-:106EA000733A20004153534552543A20003A00416E
-:106EB0005353455254004153534552544E002A2ACD
-:106EC0002A20575446200053544D33320053544D1A
-:106ED0003332207065726970686572616C206C690C
-:106EE0006272617279207472697070656420616E7B
-:106EF000206173736572740069746F6120627566D6
-:106F000066657220746F6F20736D616C6C002E2E3D
-:106F10002F7372632F7574696C2F736C652E630009
-:106F2000FF00000000010203040102030406070839
-:046F30000900000054
-:0400000508000200ED
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_silk@1478015115.bin b/bin/boot/nowatchdog_boot_silk@1478015115.bin
deleted file mode 100755
index 6686b878cd..0000000000
Binary files a/bin/boot/nowatchdog_boot_silk@1478015115.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_silk@1478015115.hex b/bin/boot/nowatchdog_boot_silk@1478015115.hex
deleted file mode 100644
index 9f3dd00a03..0000000000
--- a/bin/boot/nowatchdog_boot_silk@1478015115.hex
+++ /dev/null
@@ -1,901 +0,0 @@
-:020000040800F2
-:100000005821012085010008C901000811170008C6
-:10001000C9010008C9010008C9010008000000006A
-:10002000000000000000000000000000C9010008FE
-:10003000C901000800000000C9010008C90100084A
-:10004000C9010008C9010008C9010008C901000868
-:10005000C9010008C9010008C9010008C901000858
-:10006000C9010008C9010008C9010008C901000848
-:10007000C9010008C9010008C9010008C901000838
-:10008000C9010008C9010008C9010008C901000828
-:10009000C9010008C9010008C9010008C901000818
-:1000A000C9010008C9010008C9010008C901000808
-:1000B000C9010008C9010008C9010008F9100008B9
-:1000C00005110008111100081D110008C9010008E0
-:1000D000C9010008C9010008C9010008C9010008D8
-:1000E000C9010008C9010008C9010008C9010008C8
-:1000F000C9010008C9010008C9010008C9010008B8
-:10010000C9010008C9010008C9010008C9010008A7
-:10011000C9010008C9010008C9010008C901000897
-:10012000C9010008C9010008C9010008C901000887
-:10013000C9010008C9010008C9010008C901000877
-:10014000C9010008C9010008C9010008C901000867
-:10015000C9010008C9010008C9010008C901000857
-:100160002911000835110008C9010008C90100085B
-:10017000C9010008C9010008C9010008C901000837
-:04018000C9010008A9
-:10018400002103E00A4B5B584350043109480A4BF1
-:1001940042189A42F6D3094A02E0002342F8043B8B
-:1001A400074B9A42F9D301F06FFE01F0FBFA704756
-:1001B400E03700080000002030000020300000205C
-:1001C40054010120FEE7000037B5012002F074FA63
-:1001D400002401902546E0B200F046F801AA08B9CF
-:1001E40010551DE0135D042B0BDD174800F07EF95C
-:1001F400019800F082F90120002102F04DFA00205C
-:1002040020E00133DBB2042B135509D90F4800F069
-:1002140055F9204600F071F90D4800F067F9012501
-:100224000134042CD7D1019C3CB10A4800F046F9B2
-:10023400204600F062F900F0D1F80120214602F0D6
-:100244002BFA284603B030BD74310008A0310008F1
-:10025400AB310008B531000808B500F0A7FB80F009
-:100264000100C0B208BD000008B5054B03EB001344
-:100274005868198901F067FF003018BF012008BDD4
-:10028400FC28000838B500242546E0B2FFF7ECFF4F
-:10029400A04001340543042CEDB2F6D1284638BD04
-:1002A40073B50020014602F04FF80120002102F04E
-:1002B4004BF80220002102F047F84FF4804001215E
-:1002C400104C02F085F904F14006684601F032FF53
-:1002D40002238DF80530A37B60688DF80730002574
-:1002E400A3688DF8045069461034009301F0EAFEC7
-:1002F400B442EAD14FF48040294602F069F902B0D1
-:1003040070BD00BFFC28000810B504460848402111
-:1003140002F0D8FA0028F9D00548214602F0CEFAB6
-:100324000348402102F0CEFA0028F9D010BD00BFE6
-:10033400001001402DE9F043DFF89890DFF8988031
-:1003440087B01020012102F043F948460921072211
-:1003540001F004FF07210A4606AD404601F0FEFE07
-:100364004FF4007345F8183D00240226012748463F
-:1003740029468DF806408DF807708DF804608DF8D5
-:10038400056001F09FFE80234046294600938DF8C6
-:10039400046001F097FEADF80C40ADF80E40ADF8E6
-:1003A4001040ADF8144004F1804404F58834084B3F
-:1003B400029320460C2302A9ADF8123002F018FA79
-:1003C4002046394602F06EFA07B0BDE8F08300BF5C
-:1003D40040420F0000000240000402402DE9F043B7
-:1003E400334D83B02C6804F12E0323F0070300AFD0
-:1003F400ADEB030D50238DF8003021238DF801302F
-:1004040000238DF8023003238DF8033004F1210317
-:100414005BBAADF80430274B04F127086E460DF1A2
-:10042400060203F11C0153F8040B42F8040B8B423F
-:10043400F9D11B78137004F12309224606F1230035
-:100444001D4902F045FA31464A46002001F0C4FC39
-:1004540007F1080304F5927443F8040D186846F88C
-:100464000900FE23B4FBF3F34344073323F00703EB
-:10047400ADEB030D31464246684601F085FC044667
-:100484005520FFF741FF6E466C44A64207D016F88C
-:10049400010B552808BF0020FFF736FFF5E755206C
-:1004A400FFF732FF00230C372B60BD46BDE8F08315
-:1004B40030000020442900083400002010B5441EF8
-:1004C40014F8012F7AB108490B68FF2B0BD80A2ABC
-:1004D40002D1FFF783FFF3E70D2A1FBF581C5B18F7
-:1004E40008601A71ECE710BD3000002008B5FFF772
-:1004F400E5FFBDE80840FFF771BF1FB50C2201A955
-:1005040001F09AFC01A8FFF7D9FF05B05DF804FBE0
-:10051400014608B5044802F062F90348022102F0DA
-:1005240060F90028F9D008BD003800402DE9F047F3
-:1005340007310733089E099F92464FEAD108DD0828
-:1005440081460024B4420CD004EB0A03122000FBC1
-:100554000380494638442A4602F0BAF90134A944D2
-:10056400F0E7BDE8F087000008B54FF480400121B2
-:1005740002F022F805484FF40071012201F0E9FD70
-:100584000720BDE8084001F047BC00BF000402405A
-:1005940008B5072001F040FC4FF400710648002222
-:1005A40001F0D7FD042001F037FC4FF48040002116
-:1005B400BDE8084002F000B800040240F8B5074660
-:1005C400FFF7D2FF8020FFF7A3FF0024661C30BA98
-:1005D40090FAA0F0C0B2FFF79BFF122303FB047450
-:1005E4000025605D00BA90FAA0F00135C0B2FFF7B3
-:1005F4008FFF122DF5D10020FFF78AFFA82E344675
-:10060400E4D10020FFF784FFBDE8F840FFF7C0BF46
-:1006140010B5ADF6D83D02AC204600214FF43D6242
-:1006240002F061F91B238DE8180010214022692390
-:100634000448FFF77BFF2046FFF7C0FF0DF6D83DC7
-:1006440010BD00BF612900082DE9F043ADF6DC3D83
-:1006540002AC00214FF43D620546204602F043F906
-:100664002C238DE818002B48182120225C231C27FA
-:10067400FFF75CFFBE460F23BB402B4023FA07F273
-:10068400254B242101FB0233002202EBC20000F6B9
-:10069400280013F802C020440021082907D00126AD
-:1006A4008E4016EA0C0F14BF0126002603E09E18A4
-:1006B400767806F0010686B101EB0E06F6B24FEA33
-:1006C400D6094FF0010806F0070608FA06F610F8F6
-:1006D400098046EA080600F8096001310929DCD1DD
-:1006E4000232242AD1D10EF10B0EBEF1740FA7F100
-:1006F4000407C0D10E238DE81800102190226D2329
-:100704000648FFF713FF2046FFF758FF0DF6DC3DC0
-:10071400BDE8F083DB2A0008EB2C00082B2F00082F
-:1007240008B5FFF721FF0020FFF7F2FE0020FFF7D6
-:10073400EFFE0020FFF7ECFEBDE80840FFF728BFFE
-:10074400F0B5214B1A685E246043B0FBF1F4944287
-:10075400ADF6DC3D34D002AD00214FF43D622846B5
-:100764001C6002F0C0F81B238DE8280017481021F4
-:1007740040226923FFF7DAFE08238DE82800144895
-:1007840018216A226023FFF7D1FE002000F286714F
-:1007940029440022A2420DD002F11903DBB2DF0882
-:1007A400012603F0070306FA03F3CE5D3343CB556A
-:1007B4000132EFE712306C28E8D12846FFF7FEFE3D
-:1007C4000DF6DC3DF0BD00BF0000002061290008EB
-:1007D400EF2F00082DE9F843224E234CDFF88C90CC
-:1007E4004FF48040012101F0E7FE30460A21052242
-:1007F40001F0B4FC04F10408052230460F2101F095
-:10080400ADFC3046414601F05DFC01254FF4007318
-:100814000027304641466360A6F5E6362572A77286
-:1008240001F050FC414648462572A772656001F00C
-:1008340049FC304601F050FF304604F10C0101F050
-:10084400A3FF3046294601F0BEFF484629462A4602
-:1008540001F07FFC39464FF48040BDE8F84301F0D5
-:10086400ABBE00BF000402400000002000000240B4
-:10087400F0B50746ADF2044D0E460C460025B919F5
-:10088400B4F5806FA1EB040168460DD94FF4806282
-:1008940000F0C4F8284669464FF4806201F09CFADF
-:1008A400A4F580640546EAE7224600F0B7F8284636
-:1008B4006946224601F090FA0DF2044DF0BD08B5E8
-:1008C400202001F0DFFD0028FAD108BD08B5022080
-:1008D40001F0D8FD0028FAD00220BDE8084001F05C
-:1008E400DBBD00B58DB0684601F055FD00230093D3
-:1008F4004FF4807368460A9335230B9301F07CFD13
-:10090400FFF7E4FFFFF7DBFF0DB05DF804FB000029
-:1009140030B5022095B0012101F042FE00242248A6
-:100924000021204403220B460C3400F0C3F8482C69
-:10093400F5D101A801F026FD10230024019301A89C
-:10094400162305930294039404940694079401F0E7
-:1009540031FD012001F074FDFFF7C3FF08A801F089
-:100964001AFD4FF44075662308A813930894129552
-:1009740001F042FDFFF7AAFF08A801F00CFD99233E
-:1009840008A813930894129501F036FDFFF79EFF13
-:1009940042F6E06001F040FAFFF7A3FF022021468F
-:1009A40001F0FEFD15B030BD5030000830B5012116
-:1009B4008DB0022001F0F4FD022001F055FD6846DF
-:1009C40001F0E9FC4FF0806300934FF0407304930F
-:1009D4004FF4407368460A93AF230B9301F00CFD68
-:1009E400FFF774FF01F048FD054601F045FD04469C
-:1009F40001F042FD240244EA004040EA0504FFF706
-:100A04005EFF0220002101F0CBFD0348231A584267
-:100A140058410DB030BD00BFC225370070B5154632
-:100A24008CB004460E460220012101F0B9FD681E77
-:100A340001F01AFD684601F0AEFC4FF080630093AC
-:100A44004FF040730493042305934FF440630993D8
-:100A54004FF440730A934FF40053089368460B23F2
-:100A64000B9301F0C9FC304601F0F6FC2544AC427E
-:100A740004D001F001FD04F8010BF8E7022001F0B5
-:100A84000BFDFFF71CFF0220002101F089FD0CB0D3
-:100A940070BD0000024A136B43F0FF0313637047F9
-:100AA40000380240024A136B23F0FF0313637047BC
-:100AB4000038024013B504464068009002208DF8C7
-:100AC40004008DF805208DF8061020682189A27A8B
-:100AD4008DF8073001F042FB2068694601F0F2FA14
-:100AE40002B010BD02460068838823F4E0631B044F
-:100AF4001B0C838003889BB243F400730380082398
-:100B04000020517513751076704707B500230091C6
-:100B140069468DF804308DF805308DF8073001F002
-:100B2400D1FA03B05DF804FB10B50B4C342300FB81
-:100B34000344236B7BB10A2001F073F96068A16858
-:100B4400FFF7E3FF20696169FFF7DFFF236B0120F3
-:100B5400BDE81040184710BD98300008027D082AEF
-:100B640010B5044607D10268938823F4C0631B04BC
-:100B74001B0C938084E0434B006803EB8203596BA6
-:100B840001F0BCFB00287BD0237D072B72D8DFE863
-:100B940003F0040B1921323B5A6E237A226803F0C6
-:100BA400FE03138201232DE02268A37A1382637A61
-:100BB4000BB1022326E093889BB243F480639380B5
-:100BC40006231FE0226813889BB243F480731380CA
-:100BD400032317E0237A226843F001031382E37AA4
-:100BE400012B01BF138823F480631B041B0C08BF73
-:100BF4001380042306E0226893889BB243F4806345
-:100C04009380052323753BE023682269198A237B9B
-:100C1400D154237BE27A0133DBB2591C9142237312
-:100C240007D12268138823F480631B041B0C1380F0
-:100C340026E0934224D12268938823F480631B0422
-:100C44001B0C938013E0237B21692268CB5C138205
-:100C5400237BE17A0133DBB29942237310D1938869
-:100C640023F480631B041B0C93800723CAE72046EC
-:100C7400012101E020460021BDE81040FFF732BF0A
-:100C8400002010BD983000082DE9F341184C34239E
-:100C940000FB0344236B43B300209847D4F804803B
-:100CA400A668009600250127404669468DF8047021
-:100CB4008DF805508DF8075001F004FAB1B22A46B8
-:100CC400404601F046FA2669646900943046694654
-:100CD4008DF804708DF805508DF8075001F0F2F985
-:100CE4003046A1B22A4601F034FA02B0BDE8F081E0
-:100CF400983000081C23104A434370B505460F4C36
-:100D0400D058D61801F03CFA342305FB03440021E3
-:100D1400E06901F051FC337923B92846BDE87040FD
-:100D2400FFF7B2BF6068A168FFF7EFFE2069616951
-:100D3400BDE87040FFF7E9BE340100209830000898
-:100D44002DE9F04F344D1C2303FB005387B01B796E
-:100D540007460BB9FFF7E8FE304B342407FB043495
-:100D64000226D4F80490A389A26894F80EB00193E3
-:100D74004FF001084FF0000A484602A902928DF88C
-:100D84000C608DF80D608DF80E808DF80FA001F0C9
-:100D940099F9019B484619465A4601F0DFF9D4F8FF
-:100DA4001090238B626994F81AB00193484602A903
-:100DB40002928DF80C608DF80D608DF80E808DF820
-:100DC4000FA001F07FF9019B5A461946484601F0ED
-:100DD400C5F94146E06901F0EFFB02A801F068FAA9
-:100DE4000F4A236A029393424FF48063ADF81230A2
-:100DF4004FF01C0384BF626AADF80E2003FB07F4B6
-:100E040002A9285901F0EAF92859012101F05EFAF2
-:100E140007B0BDE8F08F00BF34010020983000080F
-:100E2400A08601002DE9F341414C9846237F0546F5
-:100E34000E4617461BB93F484FF4BD7103E020B17D
-:100E44003C4840F27B1100F079FF23790BB9002074
-:100E54006AE023681B8B9B0711D49DF82030E37252
-:100E64000025099B277284F80A806672257325750C
-:100E74002361E5822068012101F034FA1FE0FFF7C5
-:100E840039FF2846FFF75CFF22682B48138B99072C
-:100E9400E3D50138FAD1DAE7227E22B1019A511E54
-:100EA4000191002AF8D100222276019A204902B346
-:100EB4000A7D082A13D14D7D237D082B26D0236873
-:100EC4001A8892B242F480721A809A8892B242F4DA
-:100ED40040729A8001222276174A0192DEE7CA8A7A
-:100EE400B2F57A7F05D20132CA82012000F099FF5F
-:100EF400E2E79A8822F4E0621204120C9A801A88BB
-:100F040092B242F400721A8008230B7522680A4CCC
-:100F1400138B9B0707D5013CFAD12046FFF7EAFE65
-:100F24002046FFF70DFF284602B0BDE8F08100BF60
-:100F340034010020F531000880841E00017D03681F
-:100F4400082906D19A8822F480721204120C9A801D
-:100F540038E09A8A120541BF9A8A22F40062120488
-:100F6400120C48BF9A829A8AD20541BF9A8A22F407
-:100F740080721204120C48BF9A829A8A52051ED5B6
-:100F84009A8A22F480621204120C04299A820AD1E9
-:100F9400032202759A8822F4E0621204120C9A80E9
-:100FA400002303760EE0012909D19A8822F4E06235
-:100FB40012040021120C01759A80017602E00021CE
-:100FC400FFF790BD0020704737B5124C124B2360D9
-:100FD40008222275482200238DF8042001250C22C2
-:100FE40001A88DF80520237123762373E37223610E
-:100FF4008DF806308DF8075000F082FF492301A8D0
-:101004008DF8043000F07CFF206801F0B9F82577F2
-:1010140003B030BD34010020005C004013B50D4C1A
-:10102400227F034622B90C484FF48C7100F086FEEF
-:1010340038B1012200920848084A4FF48D7100F03B
-:1010440071FE23790BB9FFF77BFE237901332371FA
-:1010540002B010BD34010020F53100080A32000846
-:101064000C4A117F08B519B90B484FF4957103E088
-:1010740020B1094840F22B1100F060FE13793BB116
-:10108400013BDBB213711BB9BDE80840FFF732BE68
-:1010940008BD00BF34010020F531000837B50D4606
-:1010A40014460093069B019301212A462346FFF729
-:1010B400B9FE03B030BD07B500930123FFF7EEFF7F
-:1010C40003B05DF804FB37B50D4614460093069B48
-:1010D400019300212A462346FFF7A4FE03B030BD46
-:1010E4001FB504AC04F8013D01230094FFF7EBFFA6
-:1010F40004B010BD0148FFF731BD00BF340100202A
-:101104000148FFF71BBF00BF340100200148FFF76F
-:1011140025BD00BF500100200148FFF70FBF00BFED
-:10112400500100200148FFF719BD00BF3401002021
-:101134000148FFF703BF00BF3401002038B50C4657
-:1011440005460020FFF76AFF234681212A46002036
-:10115400FFF7B1FF04460020FFF782FF204638BDA9
-:1011640038B50C4605460020FFF758FF234680217A
-:101174002A460020FFF7B4FF04460020FFF770FF63
-:10118400204638BD37B50D460DF107010446FFF77B
-:10119400D5FF50B19DF807300121A9401943C9B2C8
-:1011A40020468DF80710FFF7DBFF03B030BD0000C9
-:1011B40013B590200DF10701FFF7C0FF044648B3B3
-:1011C4009DF80740A4F111035C425C4114B3FF2174
-:1011D4004220FFF7C5FFFF214120FFF7C1FF352063
-:1011E4000DF10701FFF7AAFF044620B90B480C4A8A
-:1011F400BE2100F097FD9DF80710352041F0030152
-:101204008DF80710FFF7ACFF0A201E21FFF7A8FF97
-:101214000028EBD0204602B010BD00BF36320008D3
-:101224005432000807B587200DF10701FFF786FF48
-:1012340018B19DF80700C0F3800003B05DF804FB0B
-:1012440007B536200DF10701FFF778FF20B19DF8AF
-:1012540007301B090B2B01D0002014E077200DF17F
-:101264000701FFF76BFF0028F6D09DF8073003F065
-:10127400100303F0FF0023B1FFF7D4FF80F0010057
-:10128400C0B200F0010003B05DF804FB08B53620DD
-:101294000121FFF777FF00B1FEE708BD07B5EF2195
-:1012A4007420FFF75DFFFF217520FFF759FF0DF153
-:1012B40007017720FFF742FF0DF107017820FFF7C0
-:1012C4003DFF0A213920FFF74BFF35200421FFF7AA
-:1012D40059FF00B1FEE703B05DF804FBB0F1006F05
-:1012E40010B504460BD20C48FFF7E8F82046FFF788
-:1012F40004F90A48FFF7FAF84FF0FF3010BD084B25
-:10130400002053F8042BA24202D81A68944202D354
-:1013140001300B28F5D110BDB43200087332000837
-:10132400EC3000082DE9F8430446174699460E466A
-:10133400C1B3FFF7D3FF0546601E3044FFF7CEFF6D
-:10134400002D804631DB00282FDB461B01361FB100
-:10135400002031464A46B84700F014FE2C46444566
-:101364001EDCF32000F024FE114B002133F814009E
-:1013740000F056FE09280AD00E48FFF79FF82046D1
-:10138400FFF7BBF8FFF72AF800F00AFE0DE02FB1D3
-:10139400C5F10100204431464A46B8470134DEE72E
-:1013A40000F0FEFD0120BDE8F8830020BDE8F883CD
-:1013B4001C3100088C3200082DE9F0470E46154612
-:1013C4000746984600F0DEFDF32000F0F1FD4FEAF9
-:1013D400D51934463544AC42C6EB040A20D0B81BB8
-:1013E400204414F8011B00F051FE09280CD00F48CA
-:1013F400FFF764F83846FFF780F8FEF7EFFF00F0D8
-:10140400CFFD0020BDE8F087B8F1000FE3D01AF05B
-:101414007F0FE0D14FEADA104946089AC047DAE76D
-:1014240000F0BEFD0120BDE8F08700BFA432000833
-:1014340008B545F2555000F06FFF042000F072FF2C
-:1014440040F6FF7000F074FF002000F065FF4FF4D9
-:1014540080500121BDE8084000F088BD08B57D201A
-:1014640001F0FEF8003018BF012008BD4900FFF765
-:1014740067B900002DE9F041012186B0054600203E
-:10148400FFF75EF9042000F0A1FB03A8294600F051
-:10149400FBFB03A800F007FC08B93C4814E03C48F7
-:1014A4000C35FFF723F804992846FFF7E1F90446C1
-:1014B4003848FFF703F82046FFF71FF8FEF78EFFC2
-:1014C400059B9C4204D03448FFF710F8012059E0F2
-:1014D400049C3248FFF70AF82146314A3148002378
-:1014E400FFF720FF3048049FFFF700F84FEA570842
-:1014F4000024BC4220D23E1BB6F5803F28BF4FF4E7
-:1015040080362A4861193246FFF788FA002304F12D
-:101514000060009300F5804024493246FFF74CFFF9
-:1015240018B92348FEF7E2FF06E0344408EB540000
-:101534003946FFF705F9DCE71E48FEF7BFFF0498BC
-:10154400FEF7DBFF1C48FEF7B9FF1649049A00209A
-:1015540000F042FC04461948FEF7B0FF0598FEF778
-:10156400CCFF1748FEF7AAFF2046FEF7C6FFFEF79A
-:1015740035FF059B9C4204D01248FEF7B7FF0220BA
-:1015840000E0002006B0BDE8F08100BFBD320008D5
-:10159400DB320008F83200080E330008313300084B
-:1015A4007114000800400008443300085101002071
-:1015B4005733000862330008703300087933000899
-:1015C4008C3300089233000810B5022000F016FB9B
-:1015D400D8B3042000F012FB044670B11B48FEF798
-:1015E40085FF042000F0FEFA022000F0FBFA4FF41D
-:1015F4000040BDE8104000F0F5BA1548FEF776FF4C
-:10160400082000F0EFFA102000F0ECFA202000F09F
-:10161400E9FA402000F0E6FA2046FFF72BFF022803
-:1016240007D1082000F0D2FA102000F0CFFA00F021
-:10163400A1FB042000F0D6FA022000F0D3FA4FF404
-:101644000040BDE8104000F0C1BA10BDDD33000811
-:101654001334000810B52548FEF748FF4FF4001076
-:10166400FFF708FF10B102283AD809E0202000F063
-:10167400B9FA402000F0B6FA802000F0A7FA2FE073
-:10168400082000F0A3FA102000F0A0FA202000F0B7
-:10169400B5FA20B91648FEF729FF202007E04020BC
-:1016A40000F0ACFA58B91348FEF720FF402000F0D0
-:1016B4008DFA4FF4007000F089FA00F05BFB0E48DD
-:1016C400FEF714FF082000F08DFA102000F08AFACB
-:1016D400202000F087FA402000F084FA002400E083
-:1016E4000124042000F07EFA204610BD2E340008A8
-:1016F4004834000881340008BA34000808B50248A8
-:10170400FEF7F4FE00F0BEFAF43400081EF0040FF5
-:101714000CBFEFF30880EFF30980FFF7EFBF7047CA
-:1017240008B50120FEF7A0FD08B900200FE0002055
-:10173400FEF79AFD0028F8D00220FEF795FD002858
-:10174400F3D00320FEF790FD80F00100C0B200F05A
-:10175400010008BD1FB504461048FEF7C7FE01A9E5
-:101764000C22204600F068FB01A8FEF7BFFE2046CD
-:10177400FEF76AFFFEF786FD094B20F0040018709F
-:101784001C46FEF77FFD237800F0FB00834201D066
-:1017940000F0F0FA0A2000F044FBF2E7EA34000813
-:1017A4005101012030B585B0FFF774F94FF0805036
-:1017B400012100F001FF022000F0D2FD012807D131
-:1017C400022000F0D7FDA548FEF790FE00F0D9FAFC
-:1017D40000214FF0805000F0EFFEFEF7ABFDA04873
-:1017E400FEF784FE9F48FEF781FE9F48FEF77EFECB
-:1017F4009E48FEF77BFE9E48FEF778FE9848FEF76B
-:1018040075FEFFF7E1FB9B48FEF770FEFFF7D0FC87
-:101814009948FEF76BFE00F0FBF99848FEF766FE68
-:1018240000F022FA00210C2201A801F05CF800F07B
-:1018340017FA01A90C2200F0FFFA01A8FEF756FEE0
-:101844008748FEF753FE8648FEF750FE4FF480406B
-:1018540000F0D4F990B18A48FEF748FE4FF4804076
-:1018640000F0C0F9082000F0BDF9102000F0BAF92A
-:10187400202000F0B7F9402000F0B4F9FFF7E0FCB5
-:1018840038B18048FEF732FE7F48FEF72FFEFFF79F
-:1018940005FDFFF73DF8FEF703FDFEF79BFFFEF79E
-:1018A400B7FEFEF791FC08B1784803E0FEF7D4FCDC
-:1018B40010B17748FFF74EFF00F0C2F9802000F026
-:1018C4009DF918B1802000F08DF949E04FF4003003
-:1018D40000F094F920B14FF4003000F083F959E19D
-:1018E400FFF71EFF68B16B48FEF700FE41F2883433
-:1018F400FFF716FF78B1012000F093FA013CF7D10D
-:1019040048E1654B0CCB013301D0013203D163486C
-:10191400FEF7ECFD3EE1FFF7A1FD18B3FFF79EFDD6
-:1019240010B15F48FEF7E2FD4FF4007000F066F975
-:1019340010B15C48FEF7DAFD4FF4007000F052F984
-:10194400102000F05BF9D0B15748FEF7CFFD082016
-:1019540000F048F9102000F045F9FFF77BFEF8B9D4
-:101964005248A7E74FF4007000F048F90028D5D199
-:10197400082000F037F9102000F034F90EE00820B8
-:1019840000F03CF920B14A48FEF7B0FD102003E016
-:101994004848FEF7ABFD082000F018F9FFF714FEE5
-:1019A4004FF4005000F02AF904464FF4805000F040
-:1019B40025F9400040EA8400C4B24FF4006000F00E
-:1019C4001DF92043C0B20728C3B20DD14FF4006003
-:1019D40000F008F94FF4805000F004F94FF400507F
-:1019E40000F000F9344865E70133DBB2023B4FF401
-:1019F4000060052B11D8DFE803F00C1003100C1065
-:101A040000F0F0F84FF4805000F0ECF84FF4005080
-:101A140003E000F0E7F84FF4805000F0D7F84FF4FB
-:101A2400002000F0EBF8002851D04FF4002000F023
-:101A3400D9F82248FEF75AFD0024FFF7F3FB0028EB
-:101A440040D0042C03D11E48FEF750FD00244FF46F
-:101A5400FA7000F0E6F90134EFE700BFFF34000844
-:101A6400403700080C3500081D3500082E350008E5
-:101A74003F350008503500085B350008673500081D
-:101A8400703500089D350008CE350008014550FE2C
-:101A9400024550FEED3500080040000828360008D5
-:101AA4003B3600085336000873360008034550FEE1
-:101AB4009B360008C1360008044550FEE73600088E
-:101AC400FB3600083548FEF711FDFFF7DFFBFFF793
-:101AD400AFFCFEF7E7FF324B32485C681D68FEF747
-:101AE400EDFC2046FEF709FD2F48FEF7E7FC002237
-:101AF400930003F1604303F5614301324FF0FF317A
-:101B0400082AC3F88010C3F88011F1D1274B284A62
-:101B1400196B0A401A635A6B22F0C0025A639A6B1B
-:101B240022F003029A63196C224A0A401A64596C1F
-:101B3400214A0A405A6400F0B5FC2048012100F013
-:101B440053FD1E48002100F04FFDF120012100F05B
-:101B540057FDF120002100F053FD0120014600F063
-:101B64005BFD0120002100F057FD1548012100F024
-:101B74005FFD1348002100F05BFD1248012100F0D5
-:101B840063FD1048002100F05FFD63B64FF0FF3E97
-:101B9400AD4620470C48FEF7A9FCDEE616370008E0
-:101BA4000040000825370008393700080038024093
-:101BB40000EF9FFF003619E8CC86E8FE0010E02213
-:101BC400FFC9FEF6337F77044137000810B5044699
-:101BD400002000F071FD40EA04010020BDE810403F
-:101BE40000F05ABD10B50446002000F065FD20EA5F
-:101BF40004010020BDE8104000F04EBD10B50446BD
-:101C0400002000F059FD204214BF0120002010BD27
-:101C140008B501214FF0805000F0CEFC012000F007
-:101C24008DFB4FF08050002100F0C6FC0120FFF72F
-:101C3400E5FF20B90121BDE8084000F02DBD08BD35
-:101C440008B50648FEF73AFC002000F035FDFEF723
-:101C540054FCBDE80840FEF7C1BB00BF6037000874
-:101C6400022000F029BD000008B5FFF7F9FF044980
-:101C7400884204D00220BDE8084000F00DBD08BD34
-:101C84008BB8185800BEFDE71FB504460C2201A806
-:101C9400FEF7C4FE01AB03CB20601868A0602046A9
-:101CA400616004B010BD0068A0F10C0358425841B3
-:101CB4007047000080B50646174610480D461C467E
-:101CC400FEF7FCFB3846FEF7F9FB0D48FEF7F6FB82
-:101CD4003046FEF7F3FB0B48FEF7F0FB2846FEF711
-:101CE4000CFC2CB10848FEF7E9FB2046FEF7E6FBA6
-:101CF4000648FEF7FBFBFFF7C5FF00BF6C37000883
-:101D04001A350008753700081B35000840370008ED
-:101D14001FB506AA52F8044B039200921A462346B2
-:101D2400FFF7C8FF0CB41FB506AA52F8043B039290
-:101D34000092014AFFF7BEFF7737000807B500237A
-:101D440000937246014BFFF7E3FF00BF7E370008A4
-:101D5400BFF34F8F0549064BCA6802F4E062134390
-:101D6400CB60BFF34F8F00BFFDE700BF00ED00E085
-:101D74000400FA0508B5FEF7D3FC00F085FCFFF774
-:101D8400E7FF08B5FFF7E4FFF0B50646002401209D
-:101D94002546034694421DD011F804C000F1010EFB
-:101DA400BCF1000F03D17355774605460DE00133AE
-:101DB400DBB2FF2B774606F800C007D102F1FF3CE7
-:101DC400644506D07355871C754601230134384693
-:101DD400E0E770467355F0BD30B5C9B1C0430A445D
-:101DE400914213D011F8013B0A4D83EA000404F038
-:101DF4000F0455F8244084EA101080EA131303F00A
-:101E04000F0355F8233083EA1010E9E7C04330BDCF
-:101E1400084630BD34310008062358430138FDD14B
-:101E2400704710B504462CB14FF47A70FFF7F4FFF5
-:101E3400013CF8E710BD00000A2A10B504DC114883
-:101E4400BDE81040FEF752BB0C46302304F8023BB9
-:101E540078234B701C220F2393400340D340092B5B
-:101E640001D8303302E00F2B02D85733DBB200E045
-:101E74002023043A04F8013B131DECD100238B7298
-:101E840010BD00BFCA3700081949D1F8883043F49F
-:101E94007003C1F88830174B1A68002042F0010221
-:101EA4001A6098601A6822F0847222F480321A60F0
-:101EB400114A5A601A6822F480221A60D8601A6C97
-:101EC4000E4842F080521A64026842F440420260B2
-:101ED4009A689A609A689A609A6842F480529A6002
-:101EE4004FF4C062C3F800244FF000638B60704766
-:101EF40000ED00E000380240103000240070004083
-:101F0400C278037810B512B3164AD1684278C9432F
-:101F1400C1F30221C1F10404E4B2A240D4B20F22FD
-:101F24000A4181780A40224303F1604303F5614387
-:101F34001201D2B283F8002303780122590903F075
-:101F44001F0302FA03F3084A42F8213010BD5A096C
-:101F5400012103F01F03994002F12003024A42F8D1
-:101F6400231010BD00ED00E000E100E0044B9A688E
-:101F740009B1104301E022EA00009860704700BFF5
-:101F8400002004E0044B1A69002ABFBF034A5A60C8
-:101F940002F188325A607047003C024023016745D1
-:101FA400024A136943F0004313617047003C024046
-:101FB400014BD860704700BF003C02400E4BDA680A
-:101FC400D20310D4DA68D1060FD4DA68D2050ED45D
-:101FD400DA6812F0E00F0CD1DB6813F0020F14BFC3
-:101FE400082009207047012070470620704702200E
-:101FF40070470720704700BF003C024007B5092323
-:102004008DF80730FFF7DAFF8DF807009DF80730E9
-:10201400012BF7D09DF8070003B05DF804FB000026
-:1020240070B5064641B1012908D002290CBF4FF40E
-:1020340000754FF4407503E00D4601E04FF48075E0
-:10204400FFF7DCFF09281ED10F4C236923F44073EA
-:102054002361216929432161236923F0F803236162
-:10206400236943F002031E432661236943F480334A
-:102074002361FFF7C3FF236923F00203236123696C
-:1020840023F0F803236170BD003C024070B505469F
-:102094000E46FFF7B3FF092811D1094C236923F435
-:1020A4004073236123692361236943F0010323619E
-:1020B4002E70FFF7A3FF236923F00103236170BD92
-:1020C400003C0240F0B50E6800220123934003EA6D
-:1020D400060E9E452AD1550003230468AB40DB431A
-:1020E4001C4004600C79076804FA05FC013C4CEAC6
-:1020F4000707012C076011D884684F791C4084605D
-:102104008468AF4027438760446824EA0E0444602F
-:102114008C7947689440A4B23C434460C46823402B
-:10212400C360CB79C468AB402343C3600132102A37
-:10213400CBD1F0BD4FF6FF730360002303714371ED
-:102144008371C37170470369194214BF01200020D1
-:1021540070470AB1018370474183704701F0070358
-:10216400C90800EB810010B59B00046A0F21994057
-:1021740024EA01010162016A9A401143016210BD1F
-:1021840008B5134B984207D14FF40010012100F019
-:102194004FFA4FF4001014E00E4B984207D14FF45D
-:1021A4008000012100F044FA4FF4800009E00A4B5A
-:1021B40098420BD14FF40000012100F039FA4FF49A
-:1021C40000000021BDE8084000F032BA08BD00BF9D
-:1021D4000054004000580040005C00407FB58688F1
-:1021E40026F03F060446360468460D46360C00F0D9
-:1021F40075F9029A2C48B2FBF0F081B20E43A68026
-:1022040023882A4E23F001031B041B0C23802B6814
-:10221400B3420AD85B000131B2FBF3F39BB2032B48
-:1022240089B298BF0423218423E0EE884BF6FF7122
-:102234008E421BBF19214B4303EB4303B2FBF3F361
-:1022440015BF9BB2B2FBF3F343F480439BB2C3F3D9
-:102254000B020AB943F001034FF4967101FB00F23B
-:102264004FF47A7192FBF1F2013292B243F40043DB
-:102274002284A38323886989AA889BB243F001033B
-:102284002380238823F4816323F002031B040A437D
-:102294001B0C13439BB223802A89AB8913439BB243
-:1022A400238104B070BD00BF40420F00A08601002E
-:1022B40041F288330360002383804BF6FF7203816D
-:1022C40043814FF48043C28083817047038819B1EE
-:1022D4009BB243F0010303E023F001031B041B0C36
-:1022E40003807047038819B19BB243F4806303E011
-:1022F40023F480631B041B0C03807047838A9AB207
-:10230400038B10B542EA034321F07F4404EA03003F
-:10231400431A5842584110BD014B1860704700BF22
-:1023240000300040014B5860704700BF003000404F
-:10233400014B9860704700BF00300040014B1860AB
-:10234400704700BF20000E4210B9034B196070475C
-:10235400024B1960704700BFA0000E429C000E4261
-:10236400034B5B68184214BF01200020704700BF74
-:1023740000700040024A136843EA8000106070470E
-:10238400007000400023036043608360C360036106
-:10239400436183617047002343608360C3600360CB
-:1023A400036143618361C361036243628362C36205
-:1023B400704700000E4903680A6810B544691C435D
-:1023C40083691C4322F07F4323F030034268234394
-:1023D40043EA02630B60C36882684C681A43054B86
-:1023E40023401343026943EA02434B6010BD00BF1C
-:1023F400001000A0FEF7E0FF90E80C001A43836889
-:102404000D491A43C3681A4303691A4383691A437B
-:10241400C3691A43036A1A43436A1A43836A1A4311
-:10242400C36A10B51A434C69044B234013434269F1
-:1024340043EA82434B6110BD001000A0000080906D
-:10244400044B1A6810B142F0010201E022F00102CB
-:102454001A607047001000A0024B9A68920658BF99
-:1024640098617047001000A0024B9A68920658BF0A
-:1024740018617047001000A0014B1878704700BF26
-:10248400201000A0034B9B68184214BF01200020B9
-:10249400704700BF001000A0014BD860704700BF18
-:1024A400001000A00B4B1A68002142F001021A60D0
-:1024B40099601A6822F0A85222F410221A60064A7F
-:1024C4005A601A6822F480221A60D960C3F88C100A
-:1024D400704700BF00380240103000242C4B9A682B
-:1024E40002F00C0210B50C2A38D8DFE802F03737B6
-:1024F400373707373737093737371E00254B2EE074
-:102504005968234A5B6811F4800F03F03F03516854
-:1025140014BF204A204AB2FBF3F31D4A5268C1F3A8
-:1025240088114B43C2F3014213E05968184A5B68AF
-:1025340011F4800F03F03F03516814BF154A164A83
-:10254400B2FBF3F3124A5268C1F388114B43C2F34E
-:10255400027201325200B3FBF2F300E00E4B0C4A5C
-:10256400036093680D49C3F30313CC5C0368E34031
-:1025740043609468C4F382240C5D23FA04F48460F9
-:102584009268C2F342328A5CD340C36010BD00BF7C
-:102594000038024000127A000024F4001E000020DB
-:1025A400044B9A6B09B1104301E022EA00009863DE
-:1025B400704700BF00380240044B1A6C09B1104345
-:1025C40001E022EA00001864704700BF00380240AE
-:1025D400044B5A6C09B1104301E022EA000058642C
-:1025E400704700BF00380240044B1A6909B1104318
-:1025F40001E022EA00001861704700BF0038024081
-:10260400044B5A6909B1104301E022EA0000586101
-:10261400704700BF00380240044B9A6909B1104367
-:1026240001E022EA00009861704700BF00380240D0
-:10263400044B1A6A09B1104301E022EA000018624F
-:10264400704700BF00380240044B5A6A09B1104376
-:1026540001E022EA00005862704700BF00380240DF
-:102664004209012A074B01D11B6803E0022A0CBF6F
-:102674001B6F5B6F00F01F0023FA00F000F00100F5
-:10268400704700BF00380240024A536F43F0807322
-:10269400536770470038024082B000230193054B12
-:1026A4000193019B03EB80000190019B196002B030
-:1026B400704700BF5028004082B000230193054BAF
-:1026C4000193019B03EB80000190019B186802B009
-:1026D400704700BF5028004008B5254B984207D1E9
-:1026E4004FF480500121FFF7AFFF4FF4805039E0E1
-:1026F400204B984207D14FF480400121FFF798FF07
-:102704004FF4804009E01C4B98420BD14FF4004039
-:102714000121FFF78DFF4FF400400021BDE8084080
-:10272400FFF786BF154B984207D14FF400500121A3
-:10273400FFF78AFF4FF4005014E0114B984207D181
-:102744004FF480100121FFF77FFF4FF4801009E060
-:102754000C4B98420BD14FF400100121FFF774FF8A
-:102764004FF400100021BDE80840FFF76DBF08BD1D
-:102774000030014000380040003C0040003401407B
-:10278400005001400054014003884A8810B503F406
-:1027940041540B8813438A881343CA8813430A8914
-:1027A40013434A8913438A891343CA89134323432E
-:1027B4009BB20380838B23F400631B041B0C838371
-:1027C4000B8A038210BD038819B19BB243F0400306
-:1027D40003E023F040031B041B0C0380704781813A
-:1027E40070470389194214BF01200020704700007C
-:1027F4007FB5038ACA889BB223F4405313430382F0
-:1028040083890E469BB223F4B053098923F00C024A
-:10281400B3880B4371890B439BB213438381838A2F
-:10282400B2899BB223F440731343838204466846FF
-:10283400FFF754FE1A4B9C4203D003F580639C427D
-:1028440001D1039D00E0029DA38931681BB2002BD6
-:102854004FF0190202FB05F2B4BF4D008D00B2FB2C
-:10286400F5F5A2896426B5FBF6F00001010912B260
-:10287400002A06FB1153ADBF1A01D900323132329E
-:10288400B5BFB1FBF6F2B2FBF6F302F0070203F0B8
-:102894000F03B4BF1043184380B2208104B070BD4D
-:1028A40000100140838919B19BB243F4005303E043
-:1028B40023F400531B041B0C83817047C1F30801EC
-:1028C400818070470388194214BF0120002070479B
-:1028D40010B5431E0A44914204D011F8014B03F889
-:1028E400014FF8E710BD02440346934202D003F8B7
-:1028F400011BFAE770470000E131000800080240BC
-:1029040000200000020D0000E6310008000C024027
-:102914000400000003020200E9310008001C024028
-:102924000100000007000200F0310008001C024012
-:102934000200000007010200000000000000000087
-:1029440001424F4F544C4F41444552000000000097
-:10295400002A2A000000000000000000000000001F
-:1029640000006000000300180000000000000000E8
-:102974006000000300180000000000000000600078
-:1029840000030018000000000000000060000003C5
-:1029940000180000000000000000600000030018A0
-:1029A40000000000E003001F60F800C30718C00720
-:1029B4000000F80FC07F60FE03F31F18F01F000033
-:1029C4000C1860C06003061B301818300000063075
-:1029D4003080E1010C0F60180C60000003601800E7
-:1029E400E3001807C01806C0008001400C00620014
-:1029F400100380180380008001C00C0066003003BF
-:102A040080190380018001C0FCFF67003003801936
-:102A1400FFFF018001C0FCFF630030038019FFFF4A
-:102A2400008001C00C0060003003801903000080A6
-:102A340001C00C00600030038019030000800140D5
-:102A44000C006200100380180380008003601800EB
-:102A5400C3001806C01806C000800730308081010A
-:102A64000C0C60180C6000800D1860C00003061880
-:102A7400303818300080F90FC07F00FE03F01F705B
-:102A8400F01F0080E103001F00F800C00760C007CA
-:102A94000080010000000000000000000000008031
-:102AA40001000000000000000000000000800100A0
-:102AB4000000000000000000000000800100000091
-:102AC4000000000000000000008001000000000081
-:102AD40000000000000000000C0006000000006080
-:102AE4000030000018000300000000C000180000BF
-:102AF4003080010000000080010C000060C0000074
-:102B04000000000003060000C06000000000000098
-:102B14000603000080310000000000008C0100006A
-:102B2400001B000000000000D8000000000E0000A0
-:102B34000000000070000000000E00000000000013
-:102B440070000000001B000000000000D80000001E
-:102B540080310000000000008C010000C060000013
-:102B6400000000000603000060C000000000000038
-:102B7400030600003080010000000080010C00000A
-:102B840018000300000000C0001800000C0006003C
-:102B940000000060003000000000000000000000A1
-:102BA4000000000000000000000000000000000021
-:102BB4000000000000000000000000000000000011
-:102BC4000000000000000000000000000000000001
-:102BD40000000000000000000000000000000000F1
-:102BE40000000000000000000000000000000000E1
-:102BF400000000000000000000000080FFFF010052
-:102C040000000000000000FEFFFF7F000000000045
-:102C14000000E07F0000FE07000000000000FE014D
-:102C24000000807F0000000000801F00000000F80A
-:102C34000100000000F00100000000800F0000000F
-:102C4400007C0000000000003E000000000F0000B7
-:102C540000000000F00000008003000000000000FD
-:102C6400C0010000E00000000000000000070000B8
-:102C74007000000000000000000E000018000000BA
-:102C840000000000001800000C000000000000001C
-:102C9400003000000600000000000000006000009A
-:102CA400030000000000000000C0008001000000DC
-:102CB40000000000008001C00000000000000000CF
-:102CC4000000036000000000000000000000063067
-:102CD400000000000000000000000C1000000000D4
-:102CE400000000000000087C00FE00FF01C701C7CF
-:102CF40001C701C701C701C701C701C701C701C790
-:102D040001C701C701FF01FE007C0038003C003E02
-:102D1400003E0038003800380038003800380038E9
-:102D2400003800380038003800FE00FE00FE007C49
-:102D340000FE00FF01C701C701C001C001E000F0AF
-:102D44000078003C001E000E000F000700FF01FF8A
-:102D540001FF017C00FE00FF01C701C701C001C0E3
-:102D640001F8007800F800C001C001C001C701C724
-:102D740001FF01FE007C00E000E000F000F000F83C
-:102D840000F800F800FC00EC00EE00E600FF01FF94
-:102D940001FF01E000E000E000E000FF00FF00FFB1
-:102DA400000700070007007F00FF00FF01C701C004
-:102DB40001C001C701C701C701FF01FE007C007CFF
-:102DC40000FE00FF01C701C701070007007700FFED
-:102DD40000FF01C701C701C701C701C701FF01FE09
-:102DE400007C00FF01FF01FF01E000E000700070C3
-:102DF40000700038003800380038001C001C001C2B
-:102E0400001C001C001C007C00FE00FF01C701C761
-:102E140001C701C701FE007C00FE00C701C701C74E
-:102E240001C701C701FF01FE007C007C00FE00FF1A
-:102E340001C701C701C701C701C701FF01FE01DCCA
-:102E440001C001C001C701C701FF01FE007C0000F1
-:102E5400000000000000007C00FE00FF01C701C765
-:102E640001F001FC01CE01C701C701E701FF01DF49
-:102E740001CE010700070007000700E700F701FF84
-:102E840001CF01C701C701C701C701C701C701CFEE
-:102E940001FF01F701E70000000000000000007CD2
-:102EA40000FE00FF01C701C7010700070007000774
-:102EB40000C701C701FF01FE007C00C001C001C0C2
-:102EC40001C001CE01DF01FF01E701C701C701C74E
-:102ED40001C701C701C701E701FF01DF01CE0100FE
-:102EE400000000000000007C00FE00FF01C701C7D5
-:102EF40001C701FF01FF010700C701C701FF01FE70
-:102F0400007C00E000F000F8003800FE00FE00FE47
-:102F140000380038003800380038003800380038ED
-:102F2400003800380038000000068301000000006B
-:102F340000000000000000068301000000000C00F7
-:102F44000000000000068301000000000C000000E7
-:102F540000D878369B79C0E3D90C8C67DB3C1BF82E
-:102F6400FD7EBFFDE0F7FB1FC6EFFB7E1F98CD661D
-:102F7400B3CD60369B19C66C18660398FD66B3FD25
-:102F840060309B19C66F18660398FD66B3FD603008
-:102F94009B19C36F186603980D66B30D60369B19B1
-:102FA400C360186603F8FD7EBFFDECF79B19C36F81
-:102FB400187E03D878369B79CCE399998167183CBD
-:102FC4000318000000000000008001000000001849
-:102FD40000000000000000000000000000180000D5
-:102FE4000000000000000000000000FFFFFFFFFFE2
-:102FF400FFFFFFFFFFFFFF010000000000000000D3
-:1030040000008001000000000000000000008001BA
-:10301400000000000000000000008001000000002B
-:10302400000000000000800100000000000000001B
-:10303400000080010000000000000000000080FF8C
-:10304400FFFFFFFFFFFFFFFFFFFFFF000004024041
-:103054004000000006000A000004024004000000D2
-:1030640002000900000802400002000009000900F3
-:1030740000080240000400000A00090000080240A1
-:1030840000010000080009000000024002000000E6
-:1030940001000900005C0040000002400001000043
-:1030A40008000400000402400001000008000900B8
-:1030B40000008000801A060000400000484900001B
-:1030C400000000000000000001000300820007006F
-:1030D4008400070001000300020003004000030015
-:1030E400800007008400070000000008004000087A
-:1030F4000080000800C00008000001080000020869
-:1031040000000408000006080000080800000A087F
-:1031140000000C0800000E08000008001000180051
-:1031240020002800300038004000480050005800BB
-:10313400000000006410B71DC8206E3BAC30D926D7
-:103144009041DC76F4516B6B5861B24D3C71055083
-:103154002083B8ED44930FF0E8A3D6D68CB361CBAB
-:10316400B0C2649BD4D2D38678E20AA01CF2BDBD5F
-:10317400537475636B20627574746F6E2072656727
-:10318400697374657220697320696E76616C696411
-:103194002C20636C656172696E672E0042757474CD
-:1031A4006F6E2069642000697320737475636B21EA
-:1031B40000427574746F6E20776173207075736844
-:1031C4006564206F6E20626F6F742E204275747474
-:1031D4006F6E20636F756E7465723A20004261638E
-:1031E4006B0055700053656C65637400446F776EB3
-:1031F400002E2E2F7372632F647269766572732F9B
-:103204006932632E630049324320646576696365DD
-:10321400204944206F7574206F6620626F756E6458
-:103224007320256420286D61783A20256429006F75
-:103234006E002E2E2F7372632F647269766572731B
-:103244002F706D69632F617333373031622E6300E1
-:103254004661696C656420746F20737461727420B4
-:10326400504D494320313230487A2050574D002088
-:103274006973206F757473696465207379737465F9
-:103284006D20666C617368006661696C65642074A6
-:103294006F20657261736520736563746F722000BB
-:1032A4006661696C656420746F2077726974652047
-:1032B400616464726573732000496E76616C69643D
-:1032C400206669726D7761726520646573637269E3
-:1032D4007074696F6E2100436865636B73756D6DFF
-:1032E400696E67206669726D7761726520757064B6
-:1032F4006174650043616C63756C6174656420631B
-:103304006865636B73756D3A2000496E76616C690C
-:1033140064206669726D7761726520435243206947
-:103324006E2053504920666C617368210065726198
-:1033340073655F6F6C645F6669726D776172650057
-:1033440077726974655F6E65775F6669726D7761C0
-:10335400726500576527726520646561640043687F
-:1033640065636B73756D6D696E6720002062797497
-:1033740065730D0A00436865636B73756D202D20BA
-:1033840077616E746564200020676F7420004F7548
-:103394007220696E7465726E616C20666C6173680C
-:1033A40020636F6E74656E74732061726520626150
-:1033B400642028636865636B73756D206661696C4E
-:1033C40065642921205468697320697320726561DA
-:1033D4006C6C792062616421004F75722070726593
-:1033E40076696F7573206669726D77617265207591
-:1033F4007064617465206661696C65642C20616227
-:103404006F7274696E67207570646174652E004E06
-:103414006577206669726D776172652069732061D2
-:103424007661696C61626C6521004C6F6164696EE0
-:1034340067207265636F76657279206669726D774D
-:10344400617265004661696C656420746F206C6FFD
-:103454006164207265636F76657279206669726D46
-:10346400776172652C20737472696B65206F6E6569
-:103474002E2054727920616761696E2E004661695D
-:103484006C656420746F206C6F6164207265636F77
-:1034940076657279206669726D776172652C207326
-:1034A4007472696B652074776F2E20547279206171
-:1034B4006761696E2E004661696C656420746F20D3
-:1034C4006C6F6164207265636F76657279206669DA
-:1034D400726D776172652C20737472696B652074E8
-:1034E400687265652E205341442057415443480077
-:1034F40048415244204641554C5400657869742033
-:103504007374616E64627900205F5F5F20205F20C6
-:10351400205F20205F202020002F205F5F3E3C5F43
-:103524003E7C207C7C207C5F5F005C5F5F205C7C59
-:10353400207C7C207C7C202F202F003C5F5F5F2F31
-:103544007C5F7C7C5F7C7C5F5C5F5C0069326320B9
-:10355400696E6974656400706D696320696E69746D
-:10356400656400626F6F7420626974004C617374E7
-:10357400206669726D7761726520626F6F7420775F
-:10358400617320737461626C653B20636C65617266
-:1035940020737472696B657300504D494320776FD3
-:1035A4006B652066726F6D207374616E646279203E
-:1035B40064756520746F2063686172676572206446
-:1035C4006973636F6E6E6563740050757474696EAD
-:1035D4006720504D4943206261636B20696E746FAC
-:1035E400207374616E64627900486F6C6420646F48
-:1035F400776E205550202B204241434B202B2053E3
-:10360400454C45435420666F7220352073656373BF
-:103614002E20746F20666F7263652D626F6F742045
-:10362400505246004669726D776172652069732055
-:10363400657261736564005761746368646F6720C1
-:1036440063617573656420612072657365740053EA
-:103654006F667477617265206661696C7572652046
-:1036640063617573656420612072657365740046D7
-:1036740061696C656420746F207374617274206670
-:1036840069726D776172652C20737472696B652041
-:1036940074687265652E004661696C656420746F98
-:1036A400207374617274206669726D776172652C1F
-:1036B40020737472696B652074776F2E004661699C
-:1036C4006C656420746F207374617274206669720F
-:1036D4006D776172652C20737472696B65206F6EEF
-:1036E400652E0053687574646F776E20726571750A
-:1036F40065737465642E0052656D6F76652063682A
-:10370400617267657220746F2073687574646F7773
-:103714006E005368757474696E6720646F776E2EDB
-:1037240000426F6F74696E67206669726D776172AB
-:1037340065204020002E2E2E0D0A0D0A00466F72C1
-:1037440063652D626F6F74696E67207265636F764F
-:10375400657279206D6F64652E2E2E00426F6F7432
-:1037640020626974733A20004153534552543A20FD
-:10377400003A004153534552540041535345525467
-:103784004E002A2A2A20575446200053544D3332DF
-:103794000053544D333220706572697068657261EC
-:1037A4006C206C69627261727920747269707065E0
-:1037B4006420616E206173736572740043524F41DB
-:1037C4004B204F4F4D0069746F61206275666665CA
-:0C37D4007220746F6F20736D616C6C00CC
-:1037E000FFFFFFFF008400000202000000C0040190
-:1037F00000000000000000021000000007000000B0
-:103800000000010203040102030406070809000086
-:04000005080001846A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_snowy_bb@1478015115.hex b/bin/boot/nowatchdog_boot_snowy_bb@1478015115.hex
deleted file mode 100644
index 57d3da92da..0000000000
--- a/bin/boot/nowatchdog_boot_snowy_bb@1478015115.hex
+++ /dev/null
@@ -1,869 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008A51A0008B8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0DBFF01F093FC70471F
-:1001E400E83500080000002014000020140000205E
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040001FC002401902546E0B200F049FC01AA5B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F07DFF02A800F00A
-:100234002DFE0120002102F0D5FB00201AE001333D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F061FF02A800F011FE0120214602F016
-:10027400B9FB28460BB030BD082E0008342E000808
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0A1F9003018BF9B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F09AF9A1
-:1002C40020460E21052208AE02F094F905222046AC
-:1002D4000C2102F08FF94FF4005346F81C3D002521
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F02FF94FF427
-:10030400804320463146019302F028F94FF480538C
-:100314002046314601934FF4007802F01FF920463D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340015F94FF480632046314601938DF8085037
-:100344008DF80B5002F00AF94FF4807320463146C1
-:1003540001938DF808708DF80B5002F0FFF84FF4FC
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F0F4F839464FF4001002F0D7FAA4F56D
-:100384004444164B164E1E60204602F04BFB03A855
-:1003940002F0BFFB4FF4827339463046ADF80E309D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F086FB2046394602F0ADFB28
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F087FE012000F08B
-:1003F40045FB022001F081FE0120BDE8084000F029
-:100404002BBB000010B504460548022102F09EFBF8
-:100414000028F9D021460248BDE8104002F094BB00
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0DAF8012001F05FFE25484FF4E4
-:100444000041002202F0D1F84FF4807100222148CB
-:1004540002F0CBF8012001F050FE4FF400411D489A
-:10046400012202F0C2F8012001F047FE19484FF4BE
-:10047400007102F0B4F818B11748184A6A210AE06A
-:1004840014484FF4004102F0AAF808B1254404E0EE
-:100494001148134A6B2101F0A3FDAC4204D014F8B7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F09BF808240020FFF7A4FF013CFAD1C6
-:1004C4004FF40071034802F08AF8003018BF01208D
-:1004D40038BD00BF001802404D2E0008572E0008FA
-:1004E400722E000810B504460B4802F02AFB0A4895
-:1004F400022102F02BFB0028F9D00748214602F024
-:1005040023FB0548012102F021FB0028F9D0024811
-:1005140002F017FBC0B210BD0054014010B54FF4F7
-:10052400807104460022054802F05FF8642001F05F
-:10053400DFFD2046BDE81040FFF764BF001802400D
-:1005440008B50748802102F001FB0028F9D10548CD
-:100554004FF480710122BDE8084002F046B800BFA4
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0B4FDF1E7012010BD00BFEF
-:100594008F2E000810B5224C638822884FF6FF7115
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F009F84FF40041002215480D
-:1005E40002F003F8012001F088FD12484FF40041A5
-:1005F400012201F0FAFF40F2E9340E484FF4007191
-:1006040001F0EDFF0028D9D1013C04D10A4800F0E3
-:100614003DFC204610BD642001F06AFDEDE700BFFB
-:1006240000000F60B22E000804000F60DE2E0008E8
-:10063400FA2E000800180240102F000810B50446D6
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0A2FF642001F022FD0020FFF7A2
-:1006B40019FF4FF48071012204461A4801F095FF96
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF2C2F0008BD
-:100724005B2F000800180240843500086A2F000877
-:10073400852F00088F2F000808B55D235843094B07
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F054BAF5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0D1FE3A4804210122B5
-:1007C40001F013FF00240223029435488DF8083009
-:1007D400072103230C228DF80930019401F00AFF4C
-:1007E40080232F480193294601F0B8FE022C04D03F
-:1007F4002C48A1B20C2201F0FDFE0134102CF5D1DD
-:100804004FF6FB7327480193294601F0A7FE022601
-:100814003146013624480C22B6B201F0EBFE102E0C
-:10082400F6D14FF6FC7329461F48019301F096FE5A
-:10083400042100221B481E4D01F0D7FE0A2001F0BE
-:1008440057FC01220421174801F0CFFE1E2001F0BD
-:100854004FFC0120014602F051F80FCD03AC0FC448
-:1008640095E8070084E80700402200210AA802F066
-:10087400EEF902230B9308230C934FF48053129345
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400EBFD0020012101F051FE1AB070BD00BF34
-:1008A40000040240000C024000100240642C0008C6
-:1008B4006C2C00080D4B98221A80A3F68A231B88FF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F076FBF7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0C9FB11E05AB2012A0CDCFF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0CAFD1A480621042201F0FF
-:1009D40011FE04220921174801F00CFE154800F00D
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0ABFD0C4800F072FA042000F03E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0BEFD20465D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400ACFD2046BDE8384000F02ABA00140240FC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F093FD0446284600F018FADF
-:100AC400B4FA84F0400938BD882C000838B50024F5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F01BFF04F140076568284600F021
-:100B0400DFF9684601F062FD02238DF80530A37B0E
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F01AFD284600F0E1F9BC42DB
-:100B3400E3D14FF48040314601F0F8FE03B0F0BD3C
-:100B4400882C000808B5054B1B781BB904483221D2
-:100B540001F052FABDE8084001F0C6BB1A000020BB
-:100B6400C22F0008124B1B7870B505460C461BB902
-:100B74001048382101F040FA032906D98E0831467D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F09ABBBDE8704001F0AABBFB
-:100BB4001A000020C22F0008024B1A780AB9012239
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F010FA01214FF4805059707D
-:100BE40001F080FEBDE8084001F072BB1A0000204D
-:100BF400C22F000808B5074B1A781AB906485121C4
-:100C040001F0FAF9002159704FF48050BDE8084012
-:100C140001F068BE1A000020C22F000870B50C460F
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0C7FF002884
-:100CA400F9D00648214601F0BDFF0448402101F077
-:100CB400BDFF0028F9D010BD1C00002000480040F2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F087FF31464A460020A1
-:100D340001F0BEF907F1080304F5927443F8040DB9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64007FF904465520FFF791FF6E466C44A64276
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020D02C000824000020B3
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0AEFD20460A21072201F026
-:100DC40019FC06AE072220460B2101F013FC4FF458
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0B3FB4FF40063204631460093B5
-:100E04008DF8048001F0AAFBADF80C50ADF80E503B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F096FE284639468B
-:100E340001F0ECFE204600F05BF8054B1F7006B095
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4003AF901A8FFF7CEFF05B05DF804FB000086
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F0F6FA5D
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0B5F842
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BDF02C000849
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0BFFA2046D8
-:100FE40031462A4601F006FB2046FFF781FF03B095
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0BCFB00287BD0CF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BDF02C000808
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0DCFB684601F096
-:10116400F3FA0F4A236A009393424FF48063ADF875
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F075FA2859012101F03D
-:10119400E9FA04B070BD00BF30010020F02C000853
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0CAF92046B1B22A4601F061
-:1011D4000CFA2046FFF78CFE02B070BD10B5094C26
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BDF02C00081C23104A434370B515
-:1012140005460F4CD058D61801F0FEF9342305FBCF
-:1012240003440021E06901F075FB337923B92846B2
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400F02C00082DE9F347504C9A4694F83830A6
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0BEFE494B1844DF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F05BFA2AE03046FFF79DFF30462A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0D1FEDBE719688B8823F4EB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A400C82F0008F02C000880841E00017D03680B
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F0F2FE17
-:1014840073788DF8043001A800F0ECFE54F8040CD5
-:1014940001F0C2F8454504F11C0406F1340601D0FC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020182D0008300100201F
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F090FD042807D90522009250
-:1014E4000D480E4A40F2351100F07AFD0C4A1344BF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020C82F0008CE2F000893
-:10152400F02C0008104A08B592F838301BB90F485F
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F05AFD0A4B18441C2390F8880003FB52
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD30010020C82F000815
-:10157400F02C000837B50D4614460093069B0193E2
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F027F90DB99A
-:10161400029805E0012D01D1039801E000F0F6FCE9
-:10162400B4EB500F0ED8B0FBF4F000F070FD0028BE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0DAFC01200138C00080B205B030BDE2
-:10165400FA2F0008B0F1006F10B504460BD20C4805
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:101694007230000800300008802D00082DE9F8435E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F01AFE2C464C451FDCF32000F02AFEB5
-:10170400154B002133F8140000F05CFE09280BD0BF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F00FFE0DE02FB1C5F10100204420
-:1017340031464246B8470134DDE700F003FE01209C
-:10174400BDE8F8830020BDE8F88300BF1B30000823
-:101754002F30000832300008B02D00083630000861
-:10176400843500082DE9F0470646234814460D4603
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400CBFDF32000F0DEFD4FEAD41805EB04097D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F03DFE09280DD01248FFF74AFB3B
-:1017C4003046FFF771FB1048FFF760FB00F0BAFDED
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0AAFD52
-:1017F4000120BDE8F08700BF4E3000082F300008FC
-:1018040032300008623000088435000808B545F21B
-:10181400555000F0CDFF042000F0D0FF40F6FF70DB
-:1018240000F0D2FF002000F0C3FF4FF480500121EC
-:10183400BDE8084000F06CBD08B57D2001F0BEF89D
-:10184400003018BF012008BD4900FEF775BF4B08E2
-:1018540003EB5000FEF770BF70B586B00546FFF786
-:10186400ABF901210020FEF767FF042000F01EFB06
-:1018740003A8294600F066FB03A800F072FB08B930
-:1018840028480BE02848FFF701FB05F10C000499F8
-:10189400FFF7D9F9059B984204D02448FFF7F6FADC
-:1018A40001203DE0049C2248FFF7F0FA2146214A3A
-:1018B40021480023FFF7F2FE049E2048FFF7E6FAD2
-:1018C400002405F1C0411E4B009432460C311A48E5
-:1018D400FFF748FF1B48FFF7BDFA0498FFF7E4FA47
-:1018E4001948FFF7B7FA04991348FFF797F9054623
-:1018F4001648FFF7AFFA0598FFF7D6FA1448FFF732
-:10190400A9FA2846FFF7D0FA1248FFF7BFFA059B59
-:101914009D4204D01048FFF7B9FA022000E02046A7
-:1019240006B070BD7B30000899300008B63000085E
-:10193400D93000084D18000800400008EC300008B9
-:1019440053180008FF3000080D3100081631000854
-:1019540029310008843500082F31000808B5022019
-:1019640000F0BCFAD8B3042000F0B8FA70B11C48F7
-:10197400FFF78CFA042000F0A5FA022000F0A2FA86
-:101984004FF40040BDE8084000F09CBA1548FFF74A
-:101994007DFA082000F096FA102000F093FA202037
-:1019A40000F090FA402000F08DFA4FF48010FFF719
-:1019B40053FF022807D1082000F078FA102000F025
-:1019C40075FA00F045FB042000F07CFA022000F0D8
-:1019D40079FA4FF40040BDE8084000F067BA08BD4A
-:1019E4007A310008B031000810B52548FFF74EFAE7
-:1019F4004FF40010FFF730FF10B102283AD809E085
-:101A0400202000F05FFA402000F05CFA802000F013
-:101A14004DFA2FE0082000F049FA102000F046FAB1
-:101A2400202000F05BFA20B91648FFF72FFA202097
-:101A340007E0402000F052FA58B91348FFF726FA9D
-:101A4400402000F033FA4FF4007000F02FFA00F059
-:101A5400FFFA0E48FFF71AFA082000F033FA1020B4
-:101A640000F030FA202000F02DFA402000F02AFA8D
-:101A7400002400E00124042000F024FA204610BDD4
-:101A8400CB310008E53100081E3200085732000847
-:101A940008B50248FFF7FAF900BEFEE791320008E4
-:101AA4001EF0040F0CBFEFF30880EFF30980FFF77B
-:101AB400EFBF70471FB504461048FFF7E7F901A9C7
-:101AC4000C22204600F02FFB01A8FFF7DFF9204687
-:101AD400FEF74AFEFEF7FAFF094B20F004001870E7
-:101AE4001C46FEF7F3FF237800F0FB00834201D08D
-:101AF40000F0AEFA0A2000F000FBF2E7873200089B
-:101B0400690100207FB54FF08050012100F002FFF1
-:101B1400022000F065FE012807D1022000F06AFED1
-:101B2400BB48FFF7B3F900F098FA00214FF080505A
-:101B340000F0F0FEFFF734F9B648FFF7A7F9B6480E
-:101B4400FFF7A4F9B548FFF7A1F9B548FFF79EF9E7
-:101B5400B448FFF79BF9B448FFF798F9B348FFF787
-:101B640095F9B348FFF792F9B248FFF78FF9B248F5
-:101B7400FFF78CF9FFF760FCFEF710FF00F0B8F9EF
-:101B840000F0CEF900210C2201A801F060F800F069
-:101B9400C3F901A90C2200F0C6FA01A8FFF776F9EF
-:101BA4009C48FFF773F99B48FFF770F94FF48040A6
-:101BB40000F094F990B1A148FFF768F94FF4804020
-:101BC40000F080F9082000F07DF9102000F07AF987
-:101BD400202000F077F9402000F074F9FEF7D8FDDA
-:101BE400FEF782FFFEF74EFDFEF706FB08B19448B0
-:101BF40003E0FEF745FB10B19248FFF75BFF00F0EE
-:101C04008AF9802000F06AF918B1802000F05AF9AE
-:101C140056E04FF4003000F061F9044620B14FF46F
-:101C2400003000F04FF94DE00120FEF739FFB0B16C
-:101C34002046FEF735FF90B18348FFF727F941F2BC
-:101C440088340120FEF72CFF98B10020FEF728FF0E
-:101C540078B1012000F051FA013CF2D132E07B4B23
-:101C64000CCB013301D0013203D17948FFF70EF9CF
-:101C740028E0FFF7E1FD48B3FFF7DEFD10B175483A
-:101C8400FFF704F94FF4007000F028F910B172481E
-:101C9400FFF7FCF84FF4007000F014F9102000F086
-:101CA4001DF9002800F0EE806C48FFF7EFF80820DB
-:101CB40000F008F9102000F005F9FFF795FE98B937
-:101CC40067489AE76748FFF7E1F8F6E74FF40070D2
-:101CD40000F004F90028CFD1082000F0F3F8102018
-:101CE40000F0F0F8FFF73AFE4FF4005000F0F6F879
-:101CF40004464FF4805000F0F1F8400040EA8400BC
-:101D0400C4B24FF4006000F0E9F82043C0B20728E1
-:101D1400C3B20DD14FF4006000F0D4F84FF48050FA
-:101D240000F0D0F84FF4005000F0CCF84E4864E7CF
-:101D34000133DBB2023B4FF40060052B11D8DFE81E
-:101D440003F00C1003100C1000F0BCF84FF480509A
-:101D540000F0B8F84FF4005003E000F0B3F84FF48B
-:101D6400805000F0A3F8FFF751FD384B3F485D6801
-:101D74001E68FFF76FF82846FFF796F83C48FFF710
-:101D840069F80022930003F1604303F561430132D3
-:101D94004FF0FF31082AC3F88010C3F88011F1D145
-:101DA400344B4FF4801200241A635C639C631C64FC
-:101DB4005C6400F02FFD3048012100F0C3FD214692
-:101DC4002D4800F0BFFDF120012100F0C7FD2146A0
-:101DD400F12000F0C3FD0120014600F0CBFD2146B7
-:101DE400012000F0C7FD2548012100F0CFFD214668
-:101DF400224800F0CBFD2248012100F0D3FD204809
-:101E0400214600F0CFFD63B64FF0FF3EB5462847AC
-:101E14009C32000884350008A9320008C03200084A
-:101E2400D932000807330008363300086633000847
-:101E340097330008C9330008FB3300082C3400082A
-:101E4400014550FE024550FE593400080040000888
-:101E54008B3400089E340008B6340008D6340008D9
-:101E6400034550FE4A350008044550FE6935000814
-:101E74007D350008003802400010E022FFC9FEF65C
-:101E8400337F7704082000F029F820B10548FEF7D5
-:101E9400FDFF102003E00448FEF7F8FF082000F0DF
-:101EA40005F81FE7FE3400082435000810B5044681
-:101EB400002000F0A7FD40EA04010020BDE8104026
-:101EC40000F090BD10B50446002000F09BFD20EA10
-:101ED40004010020BDE8104000F084BD10B50446A4
-:101EE400002000F08FFD204214BF0120002010BD0F
-:101EF40008B54FF08050012100F00CFD012000F0E6
-:101F040069FC0120FFF7EAFF20B90121BDE8084080
-:101F140000F068BD08BD7047022000F073BD0000EA
-:101F240008B5FFF7F9FF054B1968884204D0022071
-:101F3400BDE8084000F056BD08BD00BF840100089C
-:101F440000BEFDE71FB504460C2201A8FEF71CFCE9
-:101F540001AB03CB20601868A0602046616004B028
-:101F640010BD0068A0F10C035842584170470000AE
-:101F740080B50646174610480D461C46FEF76AFF14
-:101F84003846FEF767FF0D48FEF764FF3046FEF75C
-:101F940061FF0B48FEF75EFF2846FEF785FF2CB174
-:101FA4000848FEF757FF2046FEF754FF0648FEF7A1
-:101FB4006DFFFFF7C5FF00BF853500088E350008AB
-:101FC400913500088F350008843500081FB506AA2E
-:101FD40052F8044B039200921A462346FFF7C8FFB7
-:101FE4000CB41FB506AA52F8043B03920092014AAE
-:101FF400FFF7BEFF9335000807B500230093724630
-:10200400014BFFF7E3FF00BF9A350008744608B59B
-:102014000548FEF71FFF2046FEF746FF0348FEF77C
-:1020240035FFFFF78DFF00BFA23500088435000897
-:10203400BFF34F8F0449054BCA6802F4E0621343AF
-:10204400CB60BFF34F8FFEE700ED00E00400FA051C
-:1020540008B5FEF791FBFFF7EBFF08B5FFF7E8FFC4
-:10206400F0B50646002401202546034694421DD0BF
-:1020740011F804C000F1010EBCF1000F03D1735537
-:10208400774605460DE00133DBB2FF2B774606F8B1
-:1020940000C007D102F1FF3C644506D07355871C8C
-:1020A4007546012301343846E0E770467355F0BDA8
-:1020B40030B5C9B1C0430A44914213D011F8013B71
-:1020C4000A4D83EA000404F00F0455F8244084EA1E
-:1020D400101080EA131303F00F0355F8233083EA3A
-:1020E4001010E9E7C04330BD084630BDC82D0008D4
-:1020F400162358430138FDD1704710B504462CB15E
-:102104004FF47A70FFF7F4FF013CF8E710BD10B507
-:10211400B0FA80F400F027F801280CBFC4F11F00C6
-:10212400C4F1200010BD0A2A10B51BDD0C46302373
-:1021340004F8023B78234B701C220F239340034086
-:10214400D340092B01D8303302E00F2B02D8573388
-:10215400DBB200E02023043A04F8013B131DECD168
-:1021640000238B7210BD00F0AA33A0EB530000F0E3
-:10217400CC3300F0333000EB930000EB101000F090
-:102184000F3000EB102000EB104000F03F007047D0
-:102194002D4AD2F8883043F47003C2F888302B4BB0
-:1021A4001A68002142F001021A6099601A6822F04C
-:1021B400847222F480321A60254A5A601A6822F422
-:1021C40080221A60D9601A6C224942F080521A6443
-:1021D4000A6842F440420A609A689A609A689A606F
-:1021E4009A6842F480529A601B4A5A601A6842F014
-:1021F40080721A601968154A8901FBD5174B40F2A1
-:1022040003611960936823F003039360936843F0B8
-:10221400020393600D4B9A6802F00C02082AF9D16C
-:102224009A6822F400029A600D4AC3F884201A685E
-:1022340042F080621A60054B1B681B01FBD5024B00
-:102244004FF000629A60704700ED00E000380240F1
-:1022540010300024007000401040010F003C024088
-:1022640000300050C278037810B512B3164AD16812
-:102274004278C943C1F30221C1F10404E4B2A2408B
-:10228400D4B20F220A4181780A40224303F1604309
-:1022940003F561431201D2B283F8002303780122CB
-:1022A400590903F01F0302FA03F3084A42F82130E4
-:1022B40010BD5A09012103F01F03994002F12003C4
-:1022C400024A42F8231010BD00ED00E000E100E0F6
-:1022D400014B01229A60704700300240014B1860A4
-:1022E400186870470030024000EB81018842044BBB
-:1022F40003D050F8042B1A60F8E71868704700BF41
-:1023040000300240014B1868704700BF00300240A3
-:10231400044B9A6809B1104301E022EA0000986076
-:10232400704700BF002004E0044B1A69002ABFBFB5
-:10233400034A5A6002F188325A607047003C0240F6
-:1023440023016745024A136943F000431361704750
-:10235400003C0240014BD860704700BF003C024083
-:102364000E4BDA68D20310D4DA68D1060FD4DA68D7
-:10237400D2050ED4DA6812F0EF0F0CD1DB6813F03B
-:10238400020F14BF0820092070470120704706205F
-:102394007047022070470720704700BF003C02408E
-:1023A40007B509238DF80730FFF7DAFF8DF807002A
-:1023B4009DF80730012BF7D09DF8070003B05DF8B6
-:1023C40004FB000070B5064641B1012908D002297A
-:1023D4000CBF4FF400754FF4407503E00D4601E067
-:1023E4004FF48075FFF7DCFF09281ED10F4C2369D9
-:1023F40023F440732361216929432161236923F074
-:10240400F8032361236943F002031E432661236911
-:1024140043F480332361FFF7C3FF236923F00203EE
-:102424002361236923F0F803236170BD003C02405B
-:1024340070B505460E46FFF7B3FF092811D1094CC4
-:10244400236923F44073236123692361236943F0DF
-:10245400010323612E70FFF7A3FF236923F0010317
-:10246400236170BD003C024070B543688668856A8C
-:102474000468416B46EA0302C3681A4303691A43BA
-:1024840043691A4383691A43C3691A43036A1A43A3
-:10249400436A1343C26A2B431A43036B1343A200D8
-:1024A40002F120420B43082E136002BF136843F06D
-:1024B40040031360B1F5801F816B12D18CB14FF0D2
-:1024C40020435C681E6846F480161E601E6846F44D
-:1024D40080761E600E6924F47004013E44EA0654BA
-:1024E4005C608C690B6823434C6843EA04138C6872
-:1024F40043EA0423CC6843EA04430C69496943EA88
-:10250400045343EA0163B5F5804F536010D1C16BA6
-:1025140088690B680343486843EA0013886843EA00
-:1025240000230869496943EA005343EA016301E06F
-:102534006FF07043C2F8043170BD0000800000F1F8
-:10254400204019B1036843F0010302E00268024B22
-:1025540013400360704700BFFEFF0F00F0B50E6824
-:1025640000220123934003EA060E9E452AD155001A
-:1025740003230468AB40DB431C4004600C79076808
-:1025840004FA05FC013C4CEA0707012C076011D84A
-:1025940084684F791C4084608468AF402743876017
-:1025A400446824EA0E0444608C7947689440A4B2D9
-:1025B4003C434460C4682340C360CB79C468AB40E7
-:1025C4002343C3600132102ACBD1F0BD4FF6FF7311
-:1025D40003600023037143718371C37170470369FE
-:1025E400194214BF0120002070470AB101837047CB
-:1025F4004183704701F00703C90800EB810010B55F
-:102604009B00046A0F21994024EA01010162016AD6
-:102614009A401143016210BD08B5134B984207D18B
-:102624004FF40010012100F0B1F94FF4001014E050
-:102634000E4B984207D14FF48000012100F0A6F917
-:102644004FF4800009E00A4B98420BD14FF400008C
-:10265400012100F09BF94FF400000021BDE808407F
-:1026640000F094B908BD00BF005400400058004079
-:10267400005C00407FB5868826F03F060446360499
-:1026840068460D46360C00F0E9F8029A2C48B2FB75
-:10269400F0F081B20E43A68023882A4E23F0010372
-:1026A4001B041B0C23802B68B3420AD85B00013146
-:1026B400B2FBF3F39BB2032B89B298BF04232184AA
-:1026C40023E0EE884BF6FF718E421BBF19214B436A
-:1026D40003EB4303B2FBF3F315BF9BB2B2FBF3F37B
-:1026E40043F480439BB2C3F30B020AB943F00103E2
-:1026F4004FF4967101FB00F24FF47A7192FBF1F200
-:10270400013292B243F400432284A383238869896B
-:10271400AA889BB243F001032380238823F48163B6
-:1027240023F002031B040A431B0C13439BB22380B4
-:102734002A89AB8913439BB2238104B070BD00BFC7
-:1027440040420F00A086010041F288330360002359
-:1027540083804BF6FF72038143814FF48043C28030
-:1027640083817047038819B19BB243F0010303E0EE
-:1027740023F001031B041B0C03807047038819B169
-:102784009BB243F4806303E023F480631B041B0CBB
-:1027940003807047838A9AB2038B10B542EA0343DD
-:1027A40021F07F4404EA0300431A5842584110BD03
-:1027B400014B1860704700BF00300040014B586067
-:1027C400704700BF00300040014B9860704700BF65
-:1027D40000300040014B1860704700BF20000E42DB
-:1027E400034B5B68184214BF01200020704700BFF0
-:1027F40000700040064BB0F5402F15BF1A685A68A8
-:1028040042EA800042F4402214BF18605A607047C4
-:10281400007000400E4B1A68002142F001021A6059
-:1028240099601A6822F0A85222F410221A60094A08
-:102834005A60094AC3F8842002F18062C3F88820F0
-:102844001A6822F480221A60D960C3F88C10704789
-:102854000038024010300024003000201D4A9368E4
-:1028640003F00C03042B10B503D0082B03D01A4B30
-:1028740018E01A4B16E05168536811F4800F03F006
-:102884003F03516814BF154A134AB2FBF3F3114ACC
-:102894005268C2F30142C1F3881101324B43520022
-:1028A400B3FBF2F30B4A036093680D49C3F30313BC
-:1028B400CC5C0368E34043609468C4F382240C5DF9
-:1028C40023FA04F484609268C2F342328A5CD340EF
-:1028D400C36010BD003802400024F40040787D013C
-:1028E40001000020044B1A6B09B1104301E022EAF5
-:1028F40000001863704700BF00380240044B9A6B15
-:1029040009B1104301E022EA00009863704700BF58
-:1029140000380240044B1A6C09B1104301E022EA6A
-:1029240000001864704700BF00380240044B5A6C22
-:1029340009B1104301E022EA00005864704700BF67
-:1029440000380240044B1A6909B1104301E022EA3D
-:1029540000001861704700BF00380240044B5A69F8
-:1029640009B1104301E022EA00005861704700BF3A
-:1029740000380240044B9A6909B1104301E022EA8D
-:1029840000009861704700BF00380240044B1A6A87
-:1029940009B1104301E022EA00001862704700BF49
-:1029A40000380240044B5A6A09B1104301E022EA9C
-:1029B40000005862704700BF003802404209012AF3
-:1029C400074B01D11B6803E0022A0CBF1B6F5B6F2E
-:1029D40000F01F0023FA00F000F00100704700BF70
-:1029E4000038024082B000230193054B0193019B00
-:1029F40003EB80000190019B196002B0704700BF97
-:102A04005028004082B000230193054B0193019BA1
-:102A140003EB80000190019B186802B0704700BF6F
-:102A24005028004008B5254B984207D14FF48050F8
-:102A34000121FFF7B7FF4FF4805039E0204B984253
-:102A440007D14FF480400121FFF7A0FF4FF48040ED
-:102A540009E01C4B98420BD14FF400400121FFF7D1
-:102A640095FF4FF400400021BDE80840FFF78EBFFA
-:102A7400154B984207D14FF400500121FFF792FF04
-:102A84004FF4005014E0114B984207D14FF48010DA
-:102A94000121FFF787FF4FF4801009E00C4B9842A7
-:102AA4000BD14FF400100121FFF77CFF4FF400100D
-:102AB4000021BDE80840FFF775BF08BD00300140A4
-:102AC40000380040003C0040003401400050014008
-:102AD4000054014003884A8810B503F441540B881C
-:102AE40013438A881343CA8813430A8913434A89C0
-:102AF40013438A891343CA89134323439BB2038034
-:102B0400838B23F400631B041B0C83830B8A0382D3
-:102B140010BD0023038043808380C38003814381ED
-:102B24008381C381072303827047038819B19BB251
-:102B340043F0400303E023F040031B041B0C038019
-:102B44007047808980B27047818170470389194238
-:102B540014BF0120002070477FB5038ACA889BB246
-:102B640023F440531343038283890E469BB223F418
-:102B7400B053098923F00C02B3880B4371890B43CA
-:102B84009BB213438381838AB2899BB223F440733B
-:102B94001343838204466846FFF760FE1A4B9C4247
-:102BA40003D003F580639C4201D1039D00E0029DA4
-:102BB400A38931681BB2002B4FF0190202FB05F206
-:102BC400B4BF4D008D00B2FBF5F5A2896426B5FBB8
-:102BD400F6F00001010912B2002A06FB1153ADBF41
-:102BE4001A01D90032313232B5BFB1FBF6F2B2FB71
-:102BF400F6F302F0070203F00F03B4BF10431843C7
-:102C040080B2208104B070BD00100140838919B1E5
-:102C14009BB243F4005303E023F400531B041B0C46
-:102C240083817047C1F3080181807047038819428A
-:102C340014BF01200020704710B5431E0A4491427E
-:102C440004D011F8014B03F8014FF8E710BD02441A
-:102C54000346934202D003F8011BFAE770470000D1
-:102C64000400000001030000010000000100000056
-:102C740003000000010000000F0000000F0000002E
-:102C840000000000AE2F00080018024010000000F1
-:102C940006040000B32F00080018024008000000DA
-:102CA40006030000B62F00080018024002000000CE
-:102CB40006010000BD2F00080018024004000000B7
-:102CC40006020000000000000000000001424F4F17
-:102CD400544C4F414445520000000000002A2A0091
-:102CE400000000000000000000000000005400404C
-:102CF40000040240400000000600040000040240FA
-:102D0400000200000900040000002000801A0600F0
-:102D1400004000001F200000000000000000000030
-:102D240000580040001402400200000001000400AA
-:102D340000140240010000000000040000004000F4
-:102D4400801A0600FFBF00002122000000000000DE
-:102D54000116000801000300820007008400070038
-:102D6400010003000200030040000300800007008C
-:102D740084000700000101000000000000000008BA
-:102D8400004000080080000800C00008000001089E
-:102D940000000208000004080000060800000808FB
-:102DA40000000A0800000C0800000E0800000800DB
-:102DB40010001800200028003000380040004800AF
-:102DC40050005800000000006410B71DC8206E3B7E
-:102DD400AC30D9269041DC76F4516B6B5861B24D1E
-:102DE4003C7105502083B8ED44930FF0E8A3D6D688
-:102DF4008CB361CBB0C2649BD4D2D38678E20AA0F0
-:102E04001CF2BDBD537475636B20627574746F6E70
-:102E140020726567697374657220697320696E76C0
-:102E2400616C69642C20636C656172696E672E0045
-:102E3400427574746F6E206973207075736865646D
-:102E440020617420626F6F740069636534306C7044
-:102E54002E630043444F4E45206E6F74206C6F7791
-:102E640020647572696E67207265736574004352DD
-:102E740045534554206E6F742068696768206475F3
-:102E840072696E6720726573657400446973706C4F
-:102E9400617920627573792D776169742074696D25
-:102EA400656F757420657870697265642100436F7D
-:102EB4006E6669677572696E672046504741206681
-:102EC400726F6D2062697473747265616D20696ECE
-:102ED40020666C6173682E2E2E004E6F204650477C
-:102EE400412062697473747265616D20696E206635
-:102EF4006C6173682E0046616C6C696E6720626158
-:102F0400636B20746F204E56434D2E00465047414C
-:102F14002043444F4E452074696D656F7574206578
-:102F240078706972656421004650474120636F6E72
-:102F340066696775726174696F6E206661696C6534
-:102F4400642E204973207468697320612062696764
-:102F5400626F6172643F0046504741207665727328
-:102F6400696F6E3A2000446973706C617920696EF0
-:102F7400697469616C697A6564206166746572203C
-:102F84000020726574726965732E00446973706CF5
-:102F9400617920696E697469616C697A6174696FB9
-:102FA4006E206661696C65642E004261636B005536
-:102FB400700053656C65637400446F776E006372D0
-:102FC400632E63006932632E6300493243206465D3
-:102FD40076696365204944206F7574206F662062AA
-:102FE4006F756E647320256420286D61783A2025FE
-:102FF4006429006F6E007370692E6300206973206A
-:103004006F7574736964652073797374656D206674
-:103014006C6173680D0A0073797374656D5F666C17
-:103024006173685F657261736528002C2000290D47
-:103034000A006661696C656420746F20657261734F
-:103044006520736563746F72200073797374656DA2
-:103054005F666C6173685F77726974652800666186
-:10306400696C656420746F2077726974652061648B
-:1030740064726573732000496E76616C69642066BE
-:1030840069726D77617265206465736372697074C7
-:10309400696F6E2100436865636B73756D6D696E4E
-:1030A40067206669726D77617265207570646174FA
-:1030B4006500496E76616C6964206669726D77613A
-:1030C40072652043524320696E2053504920666C38
-:1030D400617368210065726173655F6F6C645F661C
-:1030E40069726D776172650077726974655F6E6588
-:1030F400775F6669726D7761726500436865636BBB
-:1031040073756D6D696E6720002062797465730D47
-:103114000A00436865636B73756D202D2077616EBB
-:10312400746564200020676F7420004F75722069F5
-:103134006E7465726E616C20666C61736820636F77
-:103144006E74656E747320617265206261642028F8
-:10315400636865636B73756D206661696C6564296A
-:10316400212054686973206973207265616C6C79DD
-:103174002062616421004F75722070726576696FF8
-:103184007573206669726D7761726520757064610C
-:103194007465206661696C65642C2061626F727469
-:1031A400696E67207570646174652E004E657720C2
-:1031B4006669726D776172652069732061766169F1
-:1031C4006C61626C6521004C6F6164696E6720728A
-:1031D40065636F76657279206669726D7761726571
-:1031E400004661696C656420746F206C6F616420B3
-:1031F4007265636F76657279206669726D77617244
-:10320400652C20737472696B65206F6E652E205473
-:10321400727920616761696E2E004661696C65642C
-:1032240020746F206C6F6164207265636F766572C1
-:1032340079206669726D776172652C207374726986
-:103244006B652074776F2E205472792061676169F1
-:103254006E2E004661696C656420746F206C6F612A
-:1032640064207265636F76657279206669726D7722
-:103274006172652C20737472696B65207468726561
-:10328400652E20534144205741544348004841523D
-:1032940044204641554C5400657869742073746128
-:1032A4006E64627900205F5F5F5F20202020202011
-:1032B4002020202020202020205F5F002F5C202061
-:1032C4005F605C20202020202020202020202F2729
-:1032D4005F5F605C005C205C2C5C4C5C5F5C20206D
-:1032E40020205F5F5F202F5C205C2F5C205C20200F
-:1032F4005F5F20205F5F20205F5F20205F5F2020D2
-:103304005F5F00205C2F5F5C5F5F205C20202F27C5
-:10331400205F20605C205C205C205C205C2F5C20B3
-:103324005C2F5C205C2F5C205C2F5C205C2F5C207D
-:103334005C002020202F5C205C4C5C205C2F5C20F7
-:103344005C2F5C205C205C205C5F5C205C205C204B
-:103354005C5F2F205C5F2F205C205C205C5F5C2026
-:103364005C002020205C20605C5F5F5F5F5C205C11
-:103374005F5C205C5F5C205C5F5F5F5F2F5C205C58
-:103384005F5F5F785F5F5F2F275C2F605F5F5F5FCA
-:10339400205C00202020205C2F5F5F5F5F5F2F5C3C
-:1033A4002F5F2F5C2F5F2F5C2F5F5F5F2F20205CD0
-:1033B4002F5F5F2F2F5F5F2F202020602F5F5F5FC5
-:1033C4002F3E205C002020202020202020202020B0
-:1033D40020202020202020202020202020202020E9
-:1033E40020202020202020202020202020202020D9
-:1033F4002F5C5F5F5F2F00202020202020202020D2
-:1034040020202020202020202020202020202020B8
-:1034140020202020202020202020202020202020A8
-:1034240020205C2F5F5F2F004C61737420666972EB
-:103434006D7761726520626F6F742077617320739A
-:103444007461626C653B20636C6561722073747295
-:10345400696B657300486F6C6420646F776E2055E8
-:1034640050202B204241434B20666F72203520733D
-:103474006563732E20746F20666F7263652D626FAF
-:103484006F7420505246004669726D7761726520F0
-:10349400697320657261736564005761746368645D
-:1034A4006F6720636175736564206120726573655D
-:1034B4007400536F667477617265206661696C7518
-:1034C400726520636175736564206120726573653C
-:1034D40074004661696C656420746F207374617252
-:1034E40074206669726D776172652C2073747269D9
-:1034F4006B652074687265652E004661696C65644D
-:1035040020746F207374617274206669726D7761C0
-:1035140072652C20737472696B652074776F2E004A
-:103524004661696C656420746F20737461727420E1
-:103534006669726D776172652C20737472696B654C
-:10354400206F6E652E00466F7263652D626F6F7417
-:10355400696E67207265636F76657279206D6F643A
-:10356400652E2E2E00426F6F74696E672066697235
-:103574006D77617265204020002E2E2E0D0A0D0AF3
-:10358400004153534552543A20002020003A004150
-:103594005353455254004153534552544E002A2A22
-:1035A4002A20575446200053544D33320053544D6F
-:1035B4003332207065726970686572616C206C6961
-:1035C4006272617279207472697070656420616ED0
-:1035D400206173736572740043524F414B204F4F07
-:0435E4004D00000096
-:1035E800FF000000000102030401020304060708AB
-:0435F80009000000C6
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_snowy_dvt@1478015115.hex b/bin/boot/nowatchdog_boot_snowy_dvt@1478015115.hex
deleted file mode 100644
index becfde4b52..0000000000
--- a/bin/boot/nowatchdog_boot_snowy_dvt@1478015115.hex
+++ /dev/null
@@ -1,869 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008A51A0008B8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0DBFF01F093FC70471F
-:1001E400E83500080000002014000020140000205E
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040001FC002401902546E0B200F049FC01AA5B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F07DFF02A800F00A
-:100234002DFE0120002102F0D5FB00201AE001333D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F061FF02A800F011FE0120214602F016
-:10027400B9FB28460BB030BD082E0008342E000808
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0A1F9003018BF9B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F09AF9A1
-:1002C40020460E21052208AE02F094F905222046AC
-:1002D4000C2102F08FF94FF4005346F81C3D002521
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F02FF94FF427
-:10030400804320463146019302F028F94FF480538C
-:100314002046314601934FF4007802F01FF920463D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340015F94FF480632046314601938DF8085037
-:100344008DF80B5002F00AF94FF4807320463146C1
-:1003540001938DF808708DF80B5002F0FFF84FF4FC
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F0F4F839464FF4001002F0D7FAA4F56D
-:100384004444164B164E1E60204602F04BFB03A855
-:1003940002F0BFFB4FF4827339463046ADF80E309D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F086FB2046394602F0ADFB28
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F087FE012000F08B
-:1003F40045FB022001F081FE0120BDE8084000F029
-:100404002BBB000010B504460548022102F09EFBF8
-:100414000028F9D021460248BDE8104002F094BB00
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0DAF8012001F05FFE25484FF4E4
-:100444000041002202F0D1F84FF4807100222148CB
-:1004540002F0CBF8012001F050FE4FF400411D489A
-:10046400012202F0C2F8012001F047FE19484FF4BE
-:10047400007102F0B4F818B11748184A6A210AE06A
-:1004840014484FF4004102F0AAF808B1254404E0EE
-:100494001148134A6B2101F0A3FDAC4204D014F8B7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F09BF808240020FFF7A4FF013CFAD1C6
-:1004C4004FF40071034802F08AF8003018BF01208D
-:1004D40038BD00BF001802404D2E0008572E0008FA
-:1004E400722E000810B504460B4802F02AFB0A4895
-:1004F400022102F02BFB0028F9D00748214602F024
-:1005040023FB0548012102F021FB0028F9D0024811
-:1005140002F017FBC0B210BD0054014010B54FF4F7
-:10052400807104460022054802F05FF8642001F05F
-:10053400DFFD2046BDE81040FFF764BF001802400D
-:1005440008B50748802102F001FB0028F9D10548CD
-:100554004FF480710122BDE8084002F046B800BFA4
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0B4FDF1E7012010BD00BFEF
-:100594008F2E000810B5224C638822884FF6FF7115
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F009F84FF40041002215480D
-:1005E40002F003F8012001F088FD12484FF40041A5
-:1005F400012201F0FAFF40F2E9340E484FF4007191
-:1006040001F0EDFF0028D9D1013C04D10A4800F0E3
-:100614003DFC204610BD642001F06AFDEDE700BFFB
-:1006240000000F60B22E000804000F60DE2E0008E8
-:10063400FA2E000800180240102F000810B50446D6
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0A2FF642001F022FD0020FFF7A2
-:1006B40019FF4FF48071012204461A4801F095FF96
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF2C2F0008BD
-:100724005B2F000800180240843500086A2F000877
-:10073400852F00088F2F000808B55D235843094B07
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F054BAF5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0D1FE3A4804210122B5
-:1007C40001F013FF00240223029435488DF8083009
-:1007D400072103230C228DF80930019401F00AFF4C
-:1007E40080232F480193294601F0B8FE022C04D03F
-:1007F4002C48A1B20C2201F0FDFE0134102CF5D1DD
-:100804004FF6FB7327480193294601F0A7FE022601
-:100814003146013624480C22B6B201F0EBFE102E0C
-:10082400F6D14FF6FC7329461F48019301F096FE5A
-:10083400042100221B481E4D01F0D7FE0A2001F0BE
-:1008440057FC01220421174801F0CFFE1E2001F0BD
-:100854004FFC0120014602F051F80FCD03AC0FC448
-:1008640095E8070084E80700402200210AA802F066
-:10087400EEF902230B9308230C934FF48053129345
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400EBFD0020012101F051FE1AB070BD00BF34
-:1008A40000040240000C024000100240642C0008C6
-:1008B4006C2C00080D4B98221A80A3F68A231B88FF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F076FBF7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0C9FB11E05AB2012A0CDCFF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0CAFD1A480621042201F0FF
-:1009D40011FE04220921174801F00CFE154800F00D
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0ABFD0C4800F072FA042000F03E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0BEFD20465D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400ACFD2046BDE8384000F02ABA00140240FC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F093FD0446284600F018FADF
-:100AC400B4FA84F0400938BD882C000838B50024F5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F01BFF04F140076568284600F021
-:100B0400DFF9684601F062FD02238DF80530A37B0E
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F01AFD284600F0E1F9BC42DB
-:100B3400E3D14FF48040314601F0F8FE03B0F0BD3C
-:100B4400882C000808B5054B1B781BB904483221D2
-:100B540001F052FABDE8084001F0C6BB1A000020BB
-:100B6400C22F0008124B1B7870B505460C461BB902
-:100B74001048382101F040FA032906D98E0831467D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F09ABBBDE8704001F0AABBFB
-:100BB4001A000020C22F0008024B1A780AB9012239
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F010FA01214FF4805059707D
-:100BE40001F080FEBDE8084001F072BB1A0000204D
-:100BF400C22F000808B5074B1A781AB906485121C4
-:100C040001F0FAF9002159704FF48050BDE8084012
-:100C140001F068BE1A000020C22F000870B50C460F
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0C7FF002884
-:100CA400F9D00648214601F0BDFF0448402101F077
-:100CB400BDFF0028F9D010BD1C00002000480040F2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F087FF31464A460020A1
-:100D340001F0BEF907F1080304F5927443F8040DB9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64007FF904465520FFF791FF6E466C44A64276
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020D02C000824000020B3
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0AEFD20460A21072201F026
-:100DC40019FC06AE072220460B2101F013FC4FF458
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0B3FB4FF40063204631460093B5
-:100E04008DF8048001F0AAFBADF80C50ADF80E503B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F096FE284639468B
-:100E340001F0ECFE204600F05BF8054B1F7006B095
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4003AF901A8FFF7CEFF05B05DF804FB000086
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F0F6FA5D
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0B5F842
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BDF02C000849
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0BFFA2046D8
-:100FE40031462A4601F006FB2046FFF781FF03B095
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0BCFB00287BD0CF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BDF02C000808
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0DCFB684601F096
-:10116400F3FA0F4A236A009393424FF48063ADF875
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F075FA2859012101F03D
-:10119400E9FA04B070BD00BF30010020F02C000853
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0CAF92046B1B22A4601F061
-:1011D4000CFA2046FFF78CFE02B070BD10B5094C26
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BDF02C00081C23104A434370B515
-:1012140005460F4CD058D61801F0FEF9342305FBCF
-:1012240003440021E06901F075FB337923B92846B2
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400F02C00082DE9F347504C9A4694F83830A6
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0BEFE494B1844DF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F05BFA2AE03046FFF79DFF30462A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0D1FEDBE719688B8823F4EB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A400C82F0008F02C000880841E00017D03680B
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F0F2FE17
-:1014840073788DF8043001A800F0ECFE54F8040CD5
-:1014940001F0C2F8454504F11C0406F1340601D0FC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020182D0008300100201F
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F090FD042807D90522009250
-:1014E4000D480E4A40F2351100F07AFD0C4A1344BF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020C82F0008CE2F000893
-:10152400F02C0008104A08B592F838301BB90F485F
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F05AFD0A4B18441C2390F8880003FB52
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD30010020C82F000815
-:10157400F02C000837B50D4614460093069B0193E2
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F027F90DB99A
-:10161400029805E0012D01D1039801E000F0F6FCE9
-:10162400B4EB500F0ED8B0FBF4F000F070FD0028BE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0DAFC01200138C00080B205B030BDE2
-:10165400FA2F0008B0F1006F10B504460BD20C4805
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:101694007230000800300008802D00082DE9F8435E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F01AFE2C464C451FDCF32000F02AFEB5
-:10170400154B002133F8140000F05CFE09280BD0BF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F00FFE0DE02FB1C5F10100204420
-:1017340031464246B8470134DDE700F003FE01209C
-:10174400BDE8F8830020BDE8F88300BF1B30000823
-:101754002F30000832300008B02D00083630000861
-:10176400843500082DE9F0470646234814460D4603
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400CBFDF32000F0DEFD4FEAD41805EB04097D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F03DFE09280DD01248FFF74AFB3B
-:1017C4003046FFF771FB1048FFF760FB00F0BAFDED
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0AAFD52
-:1017F4000120BDE8F08700BF4E3000082F300008FC
-:1018040032300008623000088435000808B545F21B
-:10181400555000F0CDFF042000F0D0FF40F6FF70DB
-:1018240000F0D2FF002000F0C3FF4FF480500121EC
-:10183400BDE8084000F06CBD08B57D2001F0BEF89D
-:10184400003018BF012008BD4900FEF775BF4B08E2
-:1018540003EB5000FEF770BF70B586B00546FFF786
-:10186400ABF901210020FEF767FF042000F01EFB06
-:1018740003A8294600F066FB03A800F072FB08B930
-:1018840028480BE02848FFF701FB05F10C000499F8
-:10189400FFF7D9F9059B984204D02448FFF7F6FADC
-:1018A40001203DE0049C2248FFF7F0FA2146214A3A
-:1018B40021480023FFF7F2FE049E2048FFF7E6FAD2
-:1018C400002405F1C0411E4B009432460C311A48E5
-:1018D400FFF748FF1B48FFF7BDFA0498FFF7E4FA47
-:1018E4001948FFF7B7FA04991348FFF797F9054623
-:1018F4001648FFF7AFFA0598FFF7D6FA1448FFF732
-:10190400A9FA2846FFF7D0FA1248FFF7BFFA059B59
-:101914009D4204D01048FFF7B9FA022000E02046A7
-:1019240006B070BD7B30000899300008B63000085E
-:10193400D93000084D18000800400008EC300008B9
-:1019440053180008FF3000080D3100081631000854
-:1019540029310008843500082F31000808B5022019
-:1019640000F0BCFAD8B3042000F0B8FA70B11C48F7
-:10197400FFF78CFA042000F0A5FA022000F0A2FA86
-:101984004FF40040BDE8084000F09CBA1548FFF74A
-:101994007DFA082000F096FA102000F093FA202037
-:1019A40000F090FA402000F08DFA4FF48010FFF719
-:1019B40053FF022807D1082000F078FA102000F025
-:1019C40075FA00F045FB042000F07CFA022000F0D8
-:1019D40079FA4FF40040BDE8084000F067BA08BD4A
-:1019E4007A310008B031000810B52548FFF74EFAE7
-:1019F4004FF40010FFF730FF10B102283AD809E085
-:101A0400202000F05FFA402000F05CFA802000F013
-:101A14004DFA2FE0082000F049FA102000F046FAB1
-:101A2400202000F05BFA20B91648FFF72FFA202097
-:101A340007E0402000F052FA58B91348FFF726FA9D
-:101A4400402000F033FA4FF4007000F02FFA00F059
-:101A5400FFFA0E48FFF71AFA082000F033FA1020B4
-:101A640000F030FA202000F02DFA402000F02AFA8D
-:101A7400002400E00124042000F024FA204610BDD4
-:101A8400CB310008E53100081E3200085732000847
-:101A940008B50248FFF7FAF900BEFEE791320008E4
-:101AA4001EF0040F0CBFEFF30880EFF30980FFF77B
-:101AB400EFBF70471FB504461048FFF7E7F901A9C7
-:101AC4000C22204600F02FFB01A8FFF7DFF9204687
-:101AD400FEF74AFEFEF7FAFF094B20F004001870E7
-:101AE4001C46FEF7F3FF237800F0FB00834201D08D
-:101AF40000F0AEFA0A2000F000FBF2E7873200089B
-:101B0400690100207FB54FF08050012100F002FFF1
-:101B1400022000F065FE012807D1022000F06AFED1
-:101B2400BB48FFF7B3F900F098FA00214FF080505A
-:101B340000F0F0FEFFF734F9B648FFF7A7F9B6480E
-:101B4400FFF7A4F9B548FFF7A1F9B548FFF79EF9E7
-:101B5400B448FFF79BF9B448FFF798F9B348FFF787
-:101B640095F9B348FFF792F9B248FFF78FF9B248F5
-:101B7400FFF78CF9FFF760FCFEF710FF00F0B8F9EF
-:101B840000F0CEF900210C2201A801F060F800F069
-:101B9400C3F901A90C2200F0C6FA01A8FFF776F9EF
-:101BA4009C48FFF773F99B48FFF770F94FF48040A6
-:101BB40000F094F990B1A148FFF768F94FF4804020
-:101BC40000F080F9082000F07DF9102000F07AF987
-:101BD400202000F077F9402000F074F9FEF7D8FDDA
-:101BE400FEF782FFFEF74EFDFEF706FB08B19448B0
-:101BF40003E0FEF745FB10B19248FFF75BFF00F0EE
-:101C04008AF9802000F06AF918B1802000F05AF9AE
-:101C140056E04FF4003000F061F9044620B14FF46F
-:101C2400003000F04FF94DE00120FEF739FFB0B16C
-:101C34002046FEF735FF90B18348FFF727F941F2BC
-:101C440088340120FEF72CFF98B10020FEF728FF0E
-:101C540078B1012000F051FA013CF2D132E07B4B23
-:101C64000CCB013301D0013203D17948FFF70EF9CF
-:101C740028E0FFF7E1FD48B3FFF7DEFD10B175483A
-:101C8400FFF704F94FF4007000F028F910B172481E
-:101C9400FFF7FCF84FF4007000F014F9102000F086
-:101CA4001DF9002800F0EE806C48FFF7EFF80820DB
-:101CB40000F008F9102000F005F9FFF795FE98B937
-:101CC40067489AE76748FFF7E1F8F6E74FF40070D2
-:101CD40000F004F90028CFD1082000F0F3F8102018
-:101CE40000F0F0F8FFF73AFE4FF4005000F0F6F879
-:101CF40004464FF4805000F0F1F8400040EA8400BC
-:101D0400C4B24FF4006000F0E9F82043C0B20728E1
-:101D1400C3B20DD14FF4006000F0D4F84FF48050FA
-:101D240000F0D0F84FF4005000F0CCF84E4864E7CF
-:101D34000133DBB2023B4FF40060052B11D8DFE81E
-:101D440003F00C1003100C1000F0BCF84FF480509A
-:101D540000F0B8F84FF4005003E000F0B3F84FF48B
-:101D6400805000F0A3F8FFF751FD384B3F485D6801
-:101D74001E68FFF76FF82846FFF796F83C48FFF710
-:101D840069F80022930003F1604303F561430132D3
-:101D94004FF0FF31082AC3F88010C3F88011F1D145
-:101DA400344B4FF4801200241A635C639C631C64FC
-:101DB4005C6400F02FFD3048012100F0C3FD214692
-:101DC4002D4800F0BFFDF120012100F0C7FD2146A0
-:101DD400F12000F0C3FD0120014600F0CBFD2146B7
-:101DE400012000F0C7FD2548012100F0CFFD214668
-:101DF400224800F0CBFD2248012100F0D3FD204809
-:101E0400214600F0CFFD63B64FF0FF3EB5462847AC
-:101E14009C32000884350008A9320008C03200084A
-:101E2400D932000807330008363300086633000847
-:101E340097330008C9330008FB3300082C3400082A
-:101E4400014550FE024550FE593400080040000888
-:101E54008B3400089E340008B6340008D6340008D9
-:101E6400034550FE4A350008044550FE6935000814
-:101E74007D350008003802400010E022FFC9FEF65C
-:101E8400337F7704082000F029F820B10548FEF7D5
-:101E9400FDFF102003E00448FEF7F8FF082000F0DF
-:101EA40005F81FE7FE3400082435000810B5044681
-:101EB400002000F0A7FD40EA04010020BDE8104026
-:101EC40000F090BD10B50446002000F09BFD20EA10
-:101ED40004010020BDE8104000F084BD10B50446A4
-:101EE400002000F08FFD204214BF0120002010BD0F
-:101EF40008B54FF08050012100F00CFD012000F0E6
-:101F040069FC0120FFF7EAFF20B90121BDE8084080
-:101F140000F068BD08BD7047022000F073BD0000EA
-:101F240008B5FFF7F9FF054B1968884204D0022071
-:101F3400BDE8084000F056BD08BD00BF840100089C
-:101F440000BEFDE71FB504460C2201A8FEF71CFCE9
-:101F540001AB03CB20601868A0602046616004B028
-:101F640010BD0068A0F10C035842584170470000AE
-:101F740080B50646174610480D461C46FEF76AFF14
-:101F84003846FEF767FF0D48FEF764FF3046FEF75C
-:101F940061FF0B48FEF75EFF2846FEF785FF2CB174
-:101FA4000848FEF757FF2046FEF754FF0648FEF7A1
-:101FB4006DFFFFF7C5FF00BF853500088E350008AB
-:101FC400913500088F350008843500081FB506AA2E
-:101FD40052F8044B039200921A462346FFF7C8FFB7
-:101FE4000CB41FB506AA52F8043B03920092014AAE
-:101FF400FFF7BEFF9335000807B500230093724630
-:10200400014BFFF7E3FF00BF9A350008744608B59B
-:102014000548FEF71FFF2046FEF746FF0348FEF77C
-:1020240035FFFFF78DFF00BFA23500088435000897
-:10203400BFF34F8F0449054BCA6802F4E0621343AF
-:10204400CB60BFF34F8FFEE700ED00E00400FA051C
-:1020540008B5FEF791FBFFF7EBFF08B5FFF7E8FFC4
-:10206400F0B50646002401202546034694421DD0BF
-:1020740011F804C000F1010EBCF1000F03D1735537
-:10208400774605460DE00133DBB2FF2B774606F8B1
-:1020940000C007D102F1FF3C644506D07355871C8C
-:1020A4007546012301343846E0E770467355F0BDA8
-:1020B40030B5C9B1C0430A44914213D011F8013B71
-:1020C4000A4D83EA000404F00F0455F8244084EA1E
-:1020D400101080EA131303F00F0355F8233083EA3A
-:1020E4001010E9E7C04330BD084630BDC82D0008D4
-:1020F400162358430138FDD1704710B504462CB15E
-:102104004FF47A70FFF7F4FF013CF8E710BD10B507
-:10211400B0FA80F400F027F801280CBFC4F11F00C6
-:10212400C4F1200010BD0A2A10B51BDD0C46302373
-:1021340004F8023B78234B701C220F239340034086
-:10214400D340092B01D8303302E00F2B02D8573388
-:10215400DBB200E02023043A04F8013B131DECD168
-:1021640000238B7210BD00F0AA33A0EB530000F0E3
-:10217400CC3300F0333000EB930000EB101000F090
-:102184000F3000EB102000EB104000F03F007047D0
-:102194002D4AD2F8883043F47003C2F888302B4BB0
-:1021A4001A68002142F001021A6099601A6822F04C
-:1021B400847222F480321A60254A5A601A6822F422
-:1021C40080221A60D9601A6C224942F080521A6443
-:1021D4000A6842F440420A609A689A609A689A606F
-:1021E4009A6842F480529A601B4A5A601A6842F014
-:1021F40080721A601968154A8901FBD5174B40F2A1
-:1022040003611960936823F003039360936843F0B8
-:10221400020393600D4B9A6802F00C02082AF9D16C
-:102224009A6822F400029A600D4AC3F884201A685E
-:1022340042F080621A60054B1B681B01FBD5024B00
-:102244004FF000629A60704700ED00E000380240F1
-:1022540010300024007000401040010F003C024088
-:1022640000300050C278037810B512B3164AD16812
-:102274004278C943C1F30221C1F10404E4B2A2408B
-:10228400D4B20F220A4181780A40224303F1604309
-:1022940003F561431201D2B283F8002303780122CB
-:1022A400590903F01F0302FA03F3084A42F82130E4
-:1022B40010BD5A09012103F01F03994002F12003C4
-:1022C400024A42F8231010BD00ED00E000E100E0F6
-:1022D400014B01229A60704700300240014B1860A4
-:1022E400186870470030024000EB81018842044BBB
-:1022F40003D050F8042B1A60F8E71868704700BF41
-:1023040000300240014B1868704700BF00300240A3
-:10231400044B9A6809B1104301E022EA0000986076
-:10232400704700BF002004E0044B1A69002ABFBFB5
-:10233400034A5A6002F188325A607047003C0240F6
-:1023440023016745024A136943F000431361704750
-:10235400003C0240014BD860704700BF003C024083
-:102364000E4BDA68D20310D4DA68D1060FD4DA68D7
-:10237400D2050ED4DA6812F0EF0F0CD1DB6813F03B
-:10238400020F14BF0820092070470120704706205F
-:102394007047022070470720704700BF003C02408E
-:1023A40007B509238DF80730FFF7DAFF8DF807002A
-:1023B4009DF80730012BF7D09DF8070003B05DF8B6
-:1023C40004FB000070B5064641B1012908D002297A
-:1023D4000CBF4FF400754FF4407503E00D4601E067
-:1023E4004FF48075FFF7DCFF09281ED10F4C2369D9
-:1023F40023F440732361216929432161236923F074
-:10240400F8032361236943F002031E432661236911
-:1024140043F480332361FFF7C3FF236923F00203EE
-:102424002361236923F0F803236170BD003C02405B
-:1024340070B505460E46FFF7B3FF092811D1094CC4
-:10244400236923F44073236123692361236943F0DF
-:10245400010323612E70FFF7A3FF236923F0010317
-:10246400236170BD003C024070B543688668856A8C
-:102474000468416B46EA0302C3681A4303691A43BA
-:1024840043691A4383691A43C3691A43036A1A43A3
-:10249400436A1343C26A2B431A43036B1343A200D8
-:1024A40002F120420B43082E136002BF136843F06D
-:1024B40040031360B1F5801F816B12D18CB14FF0D2
-:1024C40020435C681E6846F480161E601E6846F44D
-:1024D40080761E600E6924F47004013E44EA0654BA
-:1024E4005C608C690B6823434C6843EA04138C6872
-:1024F40043EA0423CC6843EA04430C69496943EA88
-:10250400045343EA0163B5F5804F536010D1C16BA6
-:1025140088690B680343486843EA0013886843EA00
-:1025240000230869496943EA005343EA016301E06F
-:102534006FF07043C2F8043170BD0000800000F1F8
-:10254400204019B1036843F0010302E00268024B22
-:1025540013400360704700BFFEFF0F00F0B50E6824
-:1025640000220123934003EA060E9E452AD155001A
-:1025740003230468AB40DB431C4004600C79076808
-:1025840004FA05FC013C4CEA0707012C076011D84A
-:1025940084684F791C4084608468AF402743876017
-:1025A400446824EA0E0444608C7947689440A4B2D9
-:1025B4003C434460C4682340C360CB79C468AB40E7
-:1025C4002343C3600132102ACBD1F0BD4FF6FF7311
-:1025D40003600023037143718371C37170470369FE
-:1025E400194214BF0120002070470AB101837047CB
-:1025F4004183704701F00703C90800EB810010B55F
-:102604009B00046A0F21994024EA01010162016AD6
-:102614009A401143016210BD08B5134B984207D18B
-:102624004FF40010012100F0B1F94FF4001014E050
-:102634000E4B984207D14FF48000012100F0A6F917
-:102644004FF4800009E00A4B98420BD14FF400008C
-:10265400012100F09BF94FF400000021BDE808407F
-:1026640000F094B908BD00BF005400400058004079
-:10267400005C00407FB5868826F03F060446360499
-:1026840068460D46360C00F0E9F8029A2C48B2FB75
-:10269400F0F081B20E43A68023882A4E23F0010372
-:1026A4001B041B0C23802B68B3420AD85B00013146
-:1026B400B2FBF3F39BB2032B89B298BF04232184AA
-:1026C40023E0EE884BF6FF718E421BBF19214B436A
-:1026D40003EB4303B2FBF3F315BF9BB2B2FBF3F37B
-:1026E40043F480439BB2C3F30B020AB943F00103E2
-:1026F4004FF4967101FB00F24FF47A7192FBF1F200
-:10270400013292B243F400432284A383238869896B
-:10271400AA889BB243F001032380238823F48163B6
-:1027240023F002031B040A431B0C13439BB22380B4
-:102734002A89AB8913439BB2238104B070BD00BFC7
-:1027440040420F00A086010041F288330360002359
-:1027540083804BF6FF72038143814FF48043C28030
-:1027640083817047038819B19BB243F0010303E0EE
-:1027740023F001031B041B0C03807047038819B169
-:102784009BB243F4806303E023F480631B041B0CBB
-:1027940003807047838A9AB2038B10B542EA0343DD
-:1027A40021F07F4404EA0300431A5842584110BD03
-:1027B400014B1860704700BF00300040014B586067
-:1027C400704700BF00300040014B9860704700BF65
-:1027D40000300040014B1860704700BF20000E42DB
-:1027E400034B5B68184214BF01200020704700BFF0
-:1027F40000700040064BB0F5402F15BF1A685A68A8
-:1028040042EA800042F4402214BF18605A607047C4
-:10281400007000400E4B1A68002142F001021A6059
-:1028240099601A6822F0A85222F410221A60094A08
-:102834005A60094AC3F8842002F18062C3F88820F0
-:102844001A6822F480221A60D960C3F88C10704789
-:102854000038024010300024003000201D4A9368E4
-:1028640003F00C03042B10B503D0082B03D01A4B30
-:1028740018E01A4B16E05168536811F4800F03F006
-:102884003F03516814BF154A134AB2FBF3F3114ACC
-:102894005268C2F30142C1F3881101324B43520022
-:1028A400B3FBF2F30B4A036093680D49C3F30313BC
-:1028B400CC5C0368E34043609468C4F382240C5DF9
-:1028C40023FA04F484609268C2F342328A5CD340EF
-:1028D400C36010BD003802400024F40040787D013C
-:1028E40001000020044B1A6B09B1104301E022EAF5
-:1028F40000001863704700BF00380240044B9A6B15
-:1029040009B1104301E022EA00009863704700BF58
-:1029140000380240044B1A6C09B1104301E022EA6A
-:1029240000001864704700BF00380240044B5A6C22
-:1029340009B1104301E022EA00005864704700BF67
-:1029440000380240044B1A6909B1104301E022EA3D
-:1029540000001861704700BF00380240044B5A69F8
-:1029640009B1104301E022EA00005861704700BF3A
-:1029740000380240044B9A6909B1104301E022EA8D
-:1029840000009861704700BF00380240044B1A6A87
-:1029940009B1104301E022EA00001862704700BF49
-:1029A40000380240044B5A6A09B1104301E022EA9C
-:1029B40000005862704700BF003802404209012AF3
-:1029C400074B01D11B6803E0022A0CBF1B6F5B6F2E
-:1029D40000F01F0023FA00F000F00100704700BF70
-:1029E4000038024082B000230193054B0193019B00
-:1029F40003EB80000190019B196002B0704700BF97
-:102A04005028004082B000230193054B0193019BA1
-:102A140003EB80000190019B186802B0704700BF6F
-:102A24005028004008B5254B984207D14FF48050F8
-:102A34000121FFF7B7FF4FF4805039E0204B984253
-:102A440007D14FF480400121FFF7A0FF4FF48040ED
-:102A540009E01C4B98420BD14FF400400121FFF7D1
-:102A640095FF4FF400400021BDE80840FFF78EBFFA
-:102A7400154B984207D14FF400500121FFF792FF04
-:102A84004FF4005014E0114B984207D14FF48010DA
-:102A94000121FFF787FF4FF4801009E00C4B9842A7
-:102AA4000BD14FF400100121FFF77CFF4FF400100D
-:102AB4000021BDE80840FFF775BF08BD00300140A4
-:102AC40000380040003C0040003401400050014008
-:102AD4000054014003884A8810B503F441540B881C
-:102AE40013438A881343CA8813430A8913434A89C0
-:102AF40013438A891343CA89134323439BB2038034
-:102B0400838B23F400631B041B0C83830B8A0382D3
-:102B140010BD0023038043808380C38003814381ED
-:102B24008381C381072303827047038819B19BB251
-:102B340043F0400303E023F040031B041B0C038019
-:102B44007047808980B27047818170470389194238
-:102B540014BF0120002070477FB5038ACA889BB246
-:102B640023F440531343038283890E469BB223F418
-:102B7400B053098923F00C02B3880B4371890B43CA
-:102B84009BB213438381838AB2899BB223F440733B
-:102B94001343838204466846FFF760FE1A4B9C4247
-:102BA40003D003F580639C4201D1039D00E0029DA4
-:102BB400A38931681BB2002B4FF0190202FB05F206
-:102BC400B4BF4D008D00B2FBF5F5A2896426B5FBB8
-:102BD400F6F00001010912B2002A06FB1153ADBF41
-:102BE4001A01D90032313232B5BFB1FBF6F2B2FB71
-:102BF400F6F302F0070203F00F03B4BF10431843C7
-:102C040080B2208104B070BD00100140838919B1E5
-:102C14009BB243F4005303E023F400531B041B0C46
-:102C240083817047C1F3080181807047038819428A
-:102C340014BF01200020704710B5431E0A4491427E
-:102C440004D011F8014B03F8014FF8E710BD02441A
-:102C54000346934202D003F8011BFAE770470000D1
-:102C64000400000001030000010000000100000056
-:102C740003000000010000000F0000000F0000002E
-:102C840000000000AE2F00080018024010000000F1
-:102C940006040000B32F00080018024008000000DA
-:102CA40006030100B62F00080018024002000000CD
-:102CB40006010100BD2F00080018024004000000B6
-:102CC40006020100000000000000000001424F4F16
-:102CD400544C4F414445520000000000002A2A0091
-:102CE400000000000000000000000000005400404C
-:102CF40000040240400000000600040000040240FA
-:102D0400000200000900040000002000801A0600F0
-:102D1400004000001F200000000000000000000030
-:102D240000580040001402400200000001000400AA
-:102D340000140240010000000000040000004000F4
-:102D4400801A0600FFBF00002122000000000000DE
-:102D54000116000801000300820007008400070038
-:102D6400010003000200030040000300800007008C
-:102D740084000700000001000000000000000008BB
-:102D8400004000080080000800C00008000001089E
-:102D940000000208000004080000060800000808FB
-:102DA40000000A0800000C0800000E0800000800DB
-:102DB40010001800200028003000380040004800AF
-:102DC40050005800000000006410B71DC8206E3B7E
-:102DD400AC30D9269041DC76F4516B6B5861B24D1E
-:102DE4003C7105502083B8ED44930FF0E8A3D6D688
-:102DF4008CB361CBB0C2649BD4D2D38678E20AA0F0
-:102E04001CF2BDBD537475636B20627574746F6E70
-:102E140020726567697374657220697320696E76C0
-:102E2400616C69642C20636C656172696E672E0045
-:102E3400427574746F6E206973207075736865646D
-:102E440020617420626F6F740069636534306C7044
-:102E54002E630043444F4E45206E6F74206C6F7791
-:102E640020647572696E67207265736574004352DD
-:102E740045534554206E6F742068696768206475F3
-:102E840072696E6720726573657400446973706C4F
-:102E9400617920627573792D776169742074696D25
-:102EA400656F757420657870697265642100436F7D
-:102EB4006E6669677572696E672046504741206681
-:102EC400726F6D2062697473747265616D20696ECE
-:102ED40020666C6173682E2E2E004E6F204650477C
-:102EE400412062697473747265616D20696E206635
-:102EF4006C6173682E0046616C6C696E6720626158
-:102F0400636B20746F204E56434D2E00465047414C
-:102F14002043444F4E452074696D656F7574206578
-:102F240078706972656421004650474120636F6E72
-:102F340066696775726174696F6E206661696C6534
-:102F4400642E204973207468697320612062696764
-:102F5400626F6172643F0046504741207665727328
-:102F6400696F6E3A2000446973706C617920696EF0
-:102F7400697469616C697A6564206166746572203C
-:102F84000020726574726965732E00446973706CF5
-:102F9400617920696E697469616C697A6174696FB9
-:102FA4006E206661696C65642E004261636B005536
-:102FB400700053656C65637400446F776E006372D0
-:102FC400632E63006932632E6300493243206465D3
-:102FD40076696365204944206F7574206F662062AA
-:102FE4006F756E647320256420286D61783A2025FE
-:102FF4006429006F6E007370692E6300206973206A
-:103004006F7574736964652073797374656D206674
-:103014006C6173680D0A0073797374656D5F666C17
-:103024006173685F657261736528002C2000290D47
-:103034000A006661696C656420746F20657261734F
-:103044006520736563746F72200073797374656DA2
-:103054005F666C6173685F77726974652800666186
-:10306400696C656420746F2077726974652061648B
-:1030740064726573732000496E76616C69642066BE
-:1030840069726D77617265206465736372697074C7
-:10309400696F6E2100436865636B73756D6D696E4E
-:1030A40067206669726D77617265207570646174FA
-:1030B4006500496E76616C6964206669726D77613A
-:1030C40072652043524320696E2053504920666C38
-:1030D400617368210065726173655F6F6C645F661C
-:1030E40069726D776172650077726974655F6E6588
-:1030F400775F6669726D7761726500436865636BBB
-:1031040073756D6D696E6720002062797465730D47
-:103114000A00436865636B73756D202D2077616EBB
-:10312400746564200020676F7420004F75722069F5
-:103134006E7465726E616C20666C61736820636F77
-:103144006E74656E747320617265206261642028F8
-:10315400636865636B73756D206661696C6564296A
-:10316400212054686973206973207265616C6C79DD
-:103174002062616421004F75722070726576696FF8
-:103184007573206669726D7761726520757064610C
-:103194007465206661696C65642C2061626F727469
-:1031A400696E67207570646174652E004E657720C2
-:1031B4006669726D776172652069732061766169F1
-:1031C4006C61626C6521004C6F6164696E6720728A
-:1031D40065636F76657279206669726D7761726571
-:1031E400004661696C656420746F206C6F616420B3
-:1031F4007265636F76657279206669726D77617244
-:10320400652C20737472696B65206F6E652E205473
-:10321400727920616761696E2E004661696C65642C
-:1032240020746F206C6F6164207265636F766572C1
-:1032340079206669726D776172652C207374726986
-:103244006B652074776F2E205472792061676169F1
-:103254006E2E004661696C656420746F206C6F612A
-:1032640064207265636F76657279206669726D7722
-:103274006172652C20737472696B65207468726561
-:10328400652E20534144205741544348004841523D
-:1032940044204641554C5400657869742073746128
-:1032A4006E64627900205F5F5F5F20202020202011
-:1032B4002020202020202020205F5F002F5C202061
-:1032C4005F605C20202020202020202020202F2729
-:1032D4005F5F605C005C205C2C5C4C5C5F5C20206D
-:1032E40020205F5F5F202F5C205C2F5C205C20200F
-:1032F4005F5F20205F5F20205F5F20205F5F2020D2
-:103304005F5F00205C2F5F5C5F5F205C20202F27C5
-:10331400205F20605C205C205C205C205C2F5C20B3
-:103324005C2F5C205C2F5C205C2F5C205C2F5C207D
-:103334005C002020202F5C205C4C5C205C2F5C20F7
-:103344005C2F5C205C205C205C5F5C205C205C204B
-:103354005C5F2F205C5F2F205C205C205C5F5C2026
-:103364005C002020205C20605C5F5F5F5F5C205C11
-:103374005F5C205C5F5C205C5F5F5F5F2F5C205C58
-:103384005F5F5F785F5F5F2F275C2F605F5F5F5FCA
-:10339400205C00202020205C2F5F5F5F5F5F2F5C3C
-:1033A4002F5F2F5C2F5F2F5C2F5F5F5F2F20205CD0
-:1033B4002F5F5F2F2F5F5F2F202020602F5F5F5FC5
-:1033C4002F3E205C002020202020202020202020B0
-:1033D40020202020202020202020202020202020E9
-:1033E40020202020202020202020202020202020D9
-:1033F4002F5C5F5F5F2F00202020202020202020D2
-:1034040020202020202020202020202020202020B8
-:1034140020202020202020202020202020202020A8
-:1034240020205C2F5F5F2F004C61737420666972EB
-:103434006D7761726520626F6F742077617320739A
-:103444007461626C653B20636C6561722073747295
-:10345400696B657300486F6C6420646F776E2055E8
-:1034640050202B204241434B20666F72203520733D
-:103474006563732E20746F20666F7263652D626FAF
-:103484006F7420505246004669726D7761726520F0
-:10349400697320657261736564005761746368645D
-:1034A4006F6720636175736564206120726573655D
-:1034B4007400536F667477617265206661696C7518
-:1034C400726520636175736564206120726573653C
-:1034D40074004661696C656420746F207374617252
-:1034E40074206669726D776172652C2073747269D9
-:1034F4006B652074687265652E004661696C65644D
-:1035040020746F207374617274206669726D7761C0
-:1035140072652C20737472696B652074776F2E004A
-:103524004661696C656420746F20737461727420E1
-:103534006669726D776172652C20737472696B654C
-:10354400206F6E652E00466F7263652D626F6F7417
-:10355400696E67207265636F76657279206D6F643A
-:10356400652E2E2E00426F6F74696E672066697235
-:103574006D77617265204020002E2E2E0D0A0D0AF3
-:10358400004153534552543A20002020003A004150
-:103594005353455254004153534552544E002A2A22
-:1035A4002A20575446200053544D33320053544D6F
-:1035B4003332207065726970686572616C206C6961
-:1035C4006272617279207472697070656420616ED0
-:1035D400206173736572740043524F414B204F4F07
-:0435E4004D00000096
-:1035E800FF000000000102030401020304060708AB
-:0435F80009000000C6
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_snowy_evt2@1478015115.hex b/bin/boot/nowatchdog_boot_snowy_evt2@1478015115.hex
deleted file mode 100644
index becfde4b52..0000000000
--- a/bin/boot/nowatchdog_boot_snowy_evt2@1478015115.hex
+++ /dev/null
@@ -1,869 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008A51A0008B8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0DBFF01F093FC70471F
-:1001E400E83500080000002014000020140000205E
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040001FC002401902546E0B200F049FC01AA5B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F07DFF02A800F00A
-:100234002DFE0120002102F0D5FB00201AE001333D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F061FF02A800F011FE0120214602F016
-:10027400B9FB28460BB030BD082E0008342E000808
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0A1F9003018BF9B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F09AF9A1
-:1002C40020460E21052208AE02F094F905222046AC
-:1002D4000C2102F08FF94FF4005346F81C3D002521
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F02FF94FF427
-:10030400804320463146019302F028F94FF480538C
-:100314002046314601934FF4007802F01FF920463D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340015F94FF480632046314601938DF8085037
-:100344008DF80B5002F00AF94FF4807320463146C1
-:1003540001938DF808708DF80B5002F0FFF84FF4FC
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F0F4F839464FF4001002F0D7FAA4F56D
-:100384004444164B164E1E60204602F04BFB03A855
-:1003940002F0BFFB4FF4827339463046ADF80E309D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F086FB2046394602F0ADFB28
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F087FE012000F08B
-:1003F40045FB022001F081FE0120BDE8084000F029
-:100404002BBB000010B504460548022102F09EFBF8
-:100414000028F9D021460248BDE8104002F094BB00
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0DAF8012001F05FFE25484FF4E4
-:100444000041002202F0D1F84FF4807100222148CB
-:1004540002F0CBF8012001F050FE4FF400411D489A
-:10046400012202F0C2F8012001F047FE19484FF4BE
-:10047400007102F0B4F818B11748184A6A210AE06A
-:1004840014484FF4004102F0AAF808B1254404E0EE
-:100494001148134A6B2101F0A3FDAC4204D014F8B7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F09BF808240020FFF7A4FF013CFAD1C6
-:1004C4004FF40071034802F08AF8003018BF01208D
-:1004D40038BD00BF001802404D2E0008572E0008FA
-:1004E400722E000810B504460B4802F02AFB0A4895
-:1004F400022102F02BFB0028F9D00748214602F024
-:1005040023FB0548012102F021FB0028F9D0024811
-:1005140002F017FBC0B210BD0054014010B54FF4F7
-:10052400807104460022054802F05FF8642001F05F
-:10053400DFFD2046BDE81040FFF764BF001802400D
-:1005440008B50748802102F001FB0028F9D10548CD
-:100554004FF480710122BDE8084002F046B800BFA4
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0B4FDF1E7012010BD00BFEF
-:100594008F2E000810B5224C638822884FF6FF7115
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F009F84FF40041002215480D
-:1005E40002F003F8012001F088FD12484FF40041A5
-:1005F400012201F0FAFF40F2E9340E484FF4007191
-:1006040001F0EDFF0028D9D1013C04D10A4800F0E3
-:100614003DFC204610BD642001F06AFDEDE700BFFB
-:1006240000000F60B22E000804000F60DE2E0008E8
-:10063400FA2E000800180240102F000810B50446D6
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0A2FF642001F022FD0020FFF7A2
-:1006B40019FF4FF48071012204461A4801F095FF96
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF2C2F0008BD
-:100724005B2F000800180240843500086A2F000877
-:10073400852F00088F2F000808B55D235843094B07
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F054BAF5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0D1FE3A4804210122B5
-:1007C40001F013FF00240223029435488DF8083009
-:1007D400072103230C228DF80930019401F00AFF4C
-:1007E40080232F480193294601F0B8FE022C04D03F
-:1007F4002C48A1B20C2201F0FDFE0134102CF5D1DD
-:100804004FF6FB7327480193294601F0A7FE022601
-:100814003146013624480C22B6B201F0EBFE102E0C
-:10082400F6D14FF6FC7329461F48019301F096FE5A
-:10083400042100221B481E4D01F0D7FE0A2001F0BE
-:1008440057FC01220421174801F0CFFE1E2001F0BD
-:100854004FFC0120014602F051F80FCD03AC0FC448
-:1008640095E8070084E80700402200210AA802F066
-:10087400EEF902230B9308230C934FF48053129345
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400EBFD0020012101F051FE1AB070BD00BF34
-:1008A40000040240000C024000100240642C0008C6
-:1008B4006C2C00080D4B98221A80A3F68A231B88FF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F076FBF7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0C9FB11E05AB2012A0CDCFF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0CAFD1A480621042201F0FF
-:1009D40011FE04220921174801F00CFE154800F00D
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0ABFD0C4800F072FA042000F03E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0BEFD20465D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400ACFD2046BDE8384000F02ABA00140240FC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F093FD0446284600F018FADF
-:100AC400B4FA84F0400938BD882C000838B50024F5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F01BFF04F140076568284600F021
-:100B0400DFF9684601F062FD02238DF80530A37B0E
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F01AFD284600F0E1F9BC42DB
-:100B3400E3D14FF48040314601F0F8FE03B0F0BD3C
-:100B4400882C000808B5054B1B781BB904483221D2
-:100B540001F052FABDE8084001F0C6BB1A000020BB
-:100B6400C22F0008124B1B7870B505460C461BB902
-:100B74001048382101F040FA032906D98E0831467D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F09ABBBDE8704001F0AABBFB
-:100BB4001A000020C22F0008024B1A780AB9012239
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F010FA01214FF4805059707D
-:100BE40001F080FEBDE8084001F072BB1A0000204D
-:100BF400C22F000808B5074B1A781AB906485121C4
-:100C040001F0FAF9002159704FF48050BDE8084012
-:100C140001F068BE1A000020C22F000870B50C460F
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0C7FF002884
-:100CA400F9D00648214601F0BDFF0448402101F077
-:100CB400BDFF0028F9D010BD1C00002000480040F2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F087FF31464A460020A1
-:100D340001F0BEF907F1080304F5927443F8040DB9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64007FF904465520FFF791FF6E466C44A64276
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020D02C000824000020B3
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0AEFD20460A21072201F026
-:100DC40019FC06AE072220460B2101F013FC4FF458
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0B3FB4FF40063204631460093B5
-:100E04008DF8048001F0AAFBADF80C50ADF80E503B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F096FE284639468B
-:100E340001F0ECFE204600F05BF8054B1F7006B095
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4003AF901A8FFF7CEFF05B05DF804FB000086
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F0F6FA5D
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0B5F842
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BDF02C000849
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0BFFA2046D8
-:100FE40031462A4601F006FB2046FFF781FF03B095
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0BCFB00287BD0CF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BDF02C000808
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0DCFB684601F096
-:10116400F3FA0F4A236A009393424FF48063ADF875
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F075FA2859012101F03D
-:10119400E9FA04B070BD00BF30010020F02C000853
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0CAF92046B1B22A4601F061
-:1011D4000CFA2046FFF78CFE02B070BD10B5094C26
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BDF02C00081C23104A434370B515
-:1012140005460F4CD058D61801F0FEF9342305FBCF
-:1012240003440021E06901F075FB337923B92846B2
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400F02C00082DE9F347504C9A4694F83830A6
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0BEFE494B1844DF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F05BFA2AE03046FFF79DFF30462A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0D1FEDBE719688B8823F4EB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A400C82F0008F02C000880841E00017D03680B
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F0F2FE17
-:1014840073788DF8043001A800F0ECFE54F8040CD5
-:1014940001F0C2F8454504F11C0406F1340601D0FC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020182D0008300100201F
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F090FD042807D90522009250
-:1014E4000D480E4A40F2351100F07AFD0C4A1344BF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020C82F0008CE2F000893
-:10152400F02C0008104A08B592F838301BB90F485F
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F05AFD0A4B18441C2390F8880003FB52
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD30010020C82F000815
-:10157400F02C000837B50D4614460093069B0193E2
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F027F90DB99A
-:10161400029805E0012D01D1039801E000F0F6FCE9
-:10162400B4EB500F0ED8B0FBF4F000F070FD0028BE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0DAFC01200138C00080B205B030BDE2
-:10165400FA2F0008B0F1006F10B504460BD20C4805
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:101694007230000800300008802D00082DE9F8435E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F01AFE2C464C451FDCF32000F02AFEB5
-:10170400154B002133F8140000F05CFE09280BD0BF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F00FFE0DE02FB1C5F10100204420
-:1017340031464246B8470134DDE700F003FE01209C
-:10174400BDE8F8830020BDE8F88300BF1B30000823
-:101754002F30000832300008B02D00083630000861
-:10176400843500082DE9F0470646234814460D4603
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400CBFDF32000F0DEFD4FEAD41805EB04097D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F03DFE09280DD01248FFF74AFB3B
-:1017C4003046FFF771FB1048FFF760FB00F0BAFDED
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0AAFD52
-:1017F4000120BDE8F08700BF4E3000082F300008FC
-:1018040032300008623000088435000808B545F21B
-:10181400555000F0CDFF042000F0D0FF40F6FF70DB
-:1018240000F0D2FF002000F0C3FF4FF480500121EC
-:10183400BDE8084000F06CBD08B57D2001F0BEF89D
-:10184400003018BF012008BD4900FEF775BF4B08E2
-:1018540003EB5000FEF770BF70B586B00546FFF786
-:10186400ABF901210020FEF767FF042000F01EFB06
-:1018740003A8294600F066FB03A800F072FB08B930
-:1018840028480BE02848FFF701FB05F10C000499F8
-:10189400FFF7D9F9059B984204D02448FFF7F6FADC
-:1018A40001203DE0049C2248FFF7F0FA2146214A3A
-:1018B40021480023FFF7F2FE049E2048FFF7E6FAD2
-:1018C400002405F1C0411E4B009432460C311A48E5
-:1018D400FFF748FF1B48FFF7BDFA0498FFF7E4FA47
-:1018E4001948FFF7B7FA04991348FFF797F9054623
-:1018F4001648FFF7AFFA0598FFF7D6FA1448FFF732
-:10190400A9FA2846FFF7D0FA1248FFF7BFFA059B59
-:101914009D4204D01048FFF7B9FA022000E02046A7
-:1019240006B070BD7B30000899300008B63000085E
-:10193400D93000084D18000800400008EC300008B9
-:1019440053180008FF3000080D3100081631000854
-:1019540029310008843500082F31000808B5022019
-:1019640000F0BCFAD8B3042000F0B8FA70B11C48F7
-:10197400FFF78CFA042000F0A5FA022000F0A2FA86
-:101984004FF40040BDE8084000F09CBA1548FFF74A
-:101994007DFA082000F096FA102000F093FA202037
-:1019A40000F090FA402000F08DFA4FF48010FFF719
-:1019B40053FF022807D1082000F078FA102000F025
-:1019C40075FA00F045FB042000F07CFA022000F0D8
-:1019D40079FA4FF40040BDE8084000F067BA08BD4A
-:1019E4007A310008B031000810B52548FFF74EFAE7
-:1019F4004FF40010FFF730FF10B102283AD809E085
-:101A0400202000F05FFA402000F05CFA802000F013
-:101A14004DFA2FE0082000F049FA102000F046FAB1
-:101A2400202000F05BFA20B91648FFF72FFA202097
-:101A340007E0402000F052FA58B91348FFF726FA9D
-:101A4400402000F033FA4FF4007000F02FFA00F059
-:101A5400FFFA0E48FFF71AFA082000F033FA1020B4
-:101A640000F030FA202000F02DFA402000F02AFA8D
-:101A7400002400E00124042000F024FA204610BDD4
-:101A8400CB310008E53100081E3200085732000847
-:101A940008B50248FFF7FAF900BEFEE791320008E4
-:101AA4001EF0040F0CBFEFF30880EFF30980FFF77B
-:101AB400EFBF70471FB504461048FFF7E7F901A9C7
-:101AC4000C22204600F02FFB01A8FFF7DFF9204687
-:101AD400FEF74AFEFEF7FAFF094B20F004001870E7
-:101AE4001C46FEF7F3FF237800F0FB00834201D08D
-:101AF40000F0AEFA0A2000F000FBF2E7873200089B
-:101B0400690100207FB54FF08050012100F002FFF1
-:101B1400022000F065FE012807D1022000F06AFED1
-:101B2400BB48FFF7B3F900F098FA00214FF080505A
-:101B340000F0F0FEFFF734F9B648FFF7A7F9B6480E
-:101B4400FFF7A4F9B548FFF7A1F9B548FFF79EF9E7
-:101B5400B448FFF79BF9B448FFF798F9B348FFF787
-:101B640095F9B348FFF792F9B248FFF78FF9B248F5
-:101B7400FFF78CF9FFF760FCFEF710FF00F0B8F9EF
-:101B840000F0CEF900210C2201A801F060F800F069
-:101B9400C3F901A90C2200F0C6FA01A8FFF776F9EF
-:101BA4009C48FFF773F99B48FFF770F94FF48040A6
-:101BB40000F094F990B1A148FFF768F94FF4804020
-:101BC40000F080F9082000F07DF9102000F07AF987
-:101BD400202000F077F9402000F074F9FEF7D8FDDA
-:101BE400FEF782FFFEF74EFDFEF706FB08B19448B0
-:101BF40003E0FEF745FB10B19248FFF75BFF00F0EE
-:101C04008AF9802000F06AF918B1802000F05AF9AE
-:101C140056E04FF4003000F061F9044620B14FF46F
-:101C2400003000F04FF94DE00120FEF739FFB0B16C
-:101C34002046FEF735FF90B18348FFF727F941F2BC
-:101C440088340120FEF72CFF98B10020FEF728FF0E
-:101C540078B1012000F051FA013CF2D132E07B4B23
-:101C64000CCB013301D0013203D17948FFF70EF9CF
-:101C740028E0FFF7E1FD48B3FFF7DEFD10B175483A
-:101C8400FFF704F94FF4007000F028F910B172481E
-:101C9400FFF7FCF84FF4007000F014F9102000F086
-:101CA4001DF9002800F0EE806C48FFF7EFF80820DB
-:101CB40000F008F9102000F005F9FFF795FE98B937
-:101CC40067489AE76748FFF7E1F8F6E74FF40070D2
-:101CD40000F004F90028CFD1082000F0F3F8102018
-:101CE40000F0F0F8FFF73AFE4FF4005000F0F6F879
-:101CF40004464FF4805000F0F1F8400040EA8400BC
-:101D0400C4B24FF4006000F0E9F82043C0B20728E1
-:101D1400C3B20DD14FF4006000F0D4F84FF48050FA
-:101D240000F0D0F84FF4005000F0CCF84E4864E7CF
-:101D34000133DBB2023B4FF40060052B11D8DFE81E
-:101D440003F00C1003100C1000F0BCF84FF480509A
-:101D540000F0B8F84FF4005003E000F0B3F84FF48B
-:101D6400805000F0A3F8FFF751FD384B3F485D6801
-:101D74001E68FFF76FF82846FFF796F83C48FFF710
-:101D840069F80022930003F1604303F561430132D3
-:101D94004FF0FF31082AC3F88010C3F88011F1D145
-:101DA400344B4FF4801200241A635C639C631C64FC
-:101DB4005C6400F02FFD3048012100F0C3FD214692
-:101DC4002D4800F0BFFDF120012100F0C7FD2146A0
-:101DD400F12000F0C3FD0120014600F0CBFD2146B7
-:101DE400012000F0C7FD2548012100F0CFFD214668
-:101DF400224800F0CBFD2248012100F0D3FD204809
-:101E0400214600F0CFFD63B64FF0FF3EB5462847AC
-:101E14009C32000884350008A9320008C03200084A
-:101E2400D932000807330008363300086633000847
-:101E340097330008C9330008FB3300082C3400082A
-:101E4400014550FE024550FE593400080040000888
-:101E54008B3400089E340008B6340008D6340008D9
-:101E6400034550FE4A350008044550FE6935000814
-:101E74007D350008003802400010E022FFC9FEF65C
-:101E8400337F7704082000F029F820B10548FEF7D5
-:101E9400FDFF102003E00448FEF7F8FF082000F0DF
-:101EA40005F81FE7FE3400082435000810B5044681
-:101EB400002000F0A7FD40EA04010020BDE8104026
-:101EC40000F090BD10B50446002000F09BFD20EA10
-:101ED40004010020BDE8104000F084BD10B50446A4
-:101EE400002000F08FFD204214BF0120002010BD0F
-:101EF40008B54FF08050012100F00CFD012000F0E6
-:101F040069FC0120FFF7EAFF20B90121BDE8084080
-:101F140000F068BD08BD7047022000F073BD0000EA
-:101F240008B5FFF7F9FF054B1968884204D0022071
-:101F3400BDE8084000F056BD08BD00BF840100089C
-:101F440000BEFDE71FB504460C2201A8FEF71CFCE9
-:101F540001AB03CB20601868A0602046616004B028
-:101F640010BD0068A0F10C035842584170470000AE
-:101F740080B50646174610480D461C46FEF76AFF14
-:101F84003846FEF767FF0D48FEF764FF3046FEF75C
-:101F940061FF0B48FEF75EFF2846FEF785FF2CB174
-:101FA4000848FEF757FF2046FEF754FF0648FEF7A1
-:101FB4006DFFFFF7C5FF00BF853500088E350008AB
-:101FC400913500088F350008843500081FB506AA2E
-:101FD40052F8044B039200921A462346FFF7C8FFB7
-:101FE4000CB41FB506AA52F8043B03920092014AAE
-:101FF400FFF7BEFF9335000807B500230093724630
-:10200400014BFFF7E3FF00BF9A350008744608B59B
-:102014000548FEF71FFF2046FEF746FF0348FEF77C
-:1020240035FFFFF78DFF00BFA23500088435000897
-:10203400BFF34F8F0449054BCA6802F4E0621343AF
-:10204400CB60BFF34F8FFEE700ED00E00400FA051C
-:1020540008B5FEF791FBFFF7EBFF08B5FFF7E8FFC4
-:10206400F0B50646002401202546034694421DD0BF
-:1020740011F804C000F1010EBCF1000F03D1735537
-:10208400774605460DE00133DBB2FF2B774606F8B1
-:1020940000C007D102F1FF3C644506D07355871C8C
-:1020A4007546012301343846E0E770467355F0BDA8
-:1020B40030B5C9B1C0430A44914213D011F8013B71
-:1020C4000A4D83EA000404F00F0455F8244084EA1E
-:1020D400101080EA131303F00F0355F8233083EA3A
-:1020E4001010E9E7C04330BD084630BDC82D0008D4
-:1020F400162358430138FDD1704710B504462CB15E
-:102104004FF47A70FFF7F4FF013CF8E710BD10B507
-:10211400B0FA80F400F027F801280CBFC4F11F00C6
-:10212400C4F1200010BD0A2A10B51BDD0C46302373
-:1021340004F8023B78234B701C220F239340034086
-:10214400D340092B01D8303302E00F2B02D8573388
-:10215400DBB200E02023043A04F8013B131DECD168
-:1021640000238B7210BD00F0AA33A0EB530000F0E3
-:10217400CC3300F0333000EB930000EB101000F090
-:102184000F3000EB102000EB104000F03F007047D0
-:102194002D4AD2F8883043F47003C2F888302B4BB0
-:1021A4001A68002142F001021A6099601A6822F04C
-:1021B400847222F480321A60254A5A601A6822F422
-:1021C40080221A60D9601A6C224942F080521A6443
-:1021D4000A6842F440420A609A689A609A689A606F
-:1021E4009A6842F480529A601B4A5A601A6842F014
-:1021F40080721A601968154A8901FBD5174B40F2A1
-:1022040003611960936823F003039360936843F0B8
-:10221400020393600D4B9A6802F00C02082AF9D16C
-:102224009A6822F400029A600D4AC3F884201A685E
-:1022340042F080621A60054B1B681B01FBD5024B00
-:102244004FF000629A60704700ED00E000380240F1
-:1022540010300024007000401040010F003C024088
-:1022640000300050C278037810B512B3164AD16812
-:102274004278C943C1F30221C1F10404E4B2A2408B
-:10228400D4B20F220A4181780A40224303F1604309
-:1022940003F561431201D2B283F8002303780122CB
-:1022A400590903F01F0302FA03F3084A42F82130E4
-:1022B40010BD5A09012103F01F03994002F12003C4
-:1022C400024A42F8231010BD00ED00E000E100E0F6
-:1022D400014B01229A60704700300240014B1860A4
-:1022E400186870470030024000EB81018842044BBB
-:1022F40003D050F8042B1A60F8E71868704700BF41
-:1023040000300240014B1868704700BF00300240A3
-:10231400044B9A6809B1104301E022EA0000986076
-:10232400704700BF002004E0044B1A69002ABFBFB5
-:10233400034A5A6002F188325A607047003C0240F6
-:1023440023016745024A136943F000431361704750
-:10235400003C0240014BD860704700BF003C024083
-:102364000E4BDA68D20310D4DA68D1060FD4DA68D7
-:10237400D2050ED4DA6812F0EF0F0CD1DB6813F03B
-:10238400020F14BF0820092070470120704706205F
-:102394007047022070470720704700BF003C02408E
-:1023A40007B509238DF80730FFF7DAFF8DF807002A
-:1023B4009DF80730012BF7D09DF8070003B05DF8B6
-:1023C40004FB000070B5064641B1012908D002297A
-:1023D4000CBF4FF400754FF4407503E00D4601E067
-:1023E4004FF48075FFF7DCFF09281ED10F4C2369D9
-:1023F40023F440732361216929432161236923F074
-:10240400F8032361236943F002031E432661236911
-:1024140043F480332361FFF7C3FF236923F00203EE
-:102424002361236923F0F803236170BD003C02405B
-:1024340070B505460E46FFF7B3FF092811D1094CC4
-:10244400236923F44073236123692361236943F0DF
-:10245400010323612E70FFF7A3FF236923F0010317
-:10246400236170BD003C024070B543688668856A8C
-:102474000468416B46EA0302C3681A4303691A43BA
-:1024840043691A4383691A43C3691A43036A1A43A3
-:10249400436A1343C26A2B431A43036B1343A200D8
-:1024A40002F120420B43082E136002BF136843F06D
-:1024B40040031360B1F5801F816B12D18CB14FF0D2
-:1024C40020435C681E6846F480161E601E6846F44D
-:1024D40080761E600E6924F47004013E44EA0654BA
-:1024E4005C608C690B6823434C6843EA04138C6872
-:1024F40043EA0423CC6843EA04430C69496943EA88
-:10250400045343EA0163B5F5804F536010D1C16BA6
-:1025140088690B680343486843EA0013886843EA00
-:1025240000230869496943EA005343EA016301E06F
-:102534006FF07043C2F8043170BD0000800000F1F8
-:10254400204019B1036843F0010302E00268024B22
-:1025540013400360704700BFFEFF0F00F0B50E6824
-:1025640000220123934003EA060E9E452AD155001A
-:1025740003230468AB40DB431C4004600C79076808
-:1025840004FA05FC013C4CEA0707012C076011D84A
-:1025940084684F791C4084608468AF402743876017
-:1025A400446824EA0E0444608C7947689440A4B2D9
-:1025B4003C434460C4682340C360CB79C468AB40E7
-:1025C4002343C3600132102ACBD1F0BD4FF6FF7311
-:1025D40003600023037143718371C37170470369FE
-:1025E400194214BF0120002070470AB101837047CB
-:1025F4004183704701F00703C90800EB810010B55F
-:102604009B00046A0F21994024EA01010162016AD6
-:102614009A401143016210BD08B5134B984207D18B
-:102624004FF40010012100F0B1F94FF4001014E050
-:102634000E4B984207D14FF48000012100F0A6F917
-:102644004FF4800009E00A4B98420BD14FF400008C
-:10265400012100F09BF94FF400000021BDE808407F
-:1026640000F094B908BD00BF005400400058004079
-:10267400005C00407FB5868826F03F060446360499
-:1026840068460D46360C00F0E9F8029A2C48B2FB75
-:10269400F0F081B20E43A68023882A4E23F0010372
-:1026A4001B041B0C23802B68B3420AD85B00013146
-:1026B400B2FBF3F39BB2032B89B298BF04232184AA
-:1026C40023E0EE884BF6FF718E421BBF19214B436A
-:1026D40003EB4303B2FBF3F315BF9BB2B2FBF3F37B
-:1026E40043F480439BB2C3F30B020AB943F00103E2
-:1026F4004FF4967101FB00F24FF47A7192FBF1F200
-:10270400013292B243F400432284A383238869896B
-:10271400AA889BB243F001032380238823F48163B6
-:1027240023F002031B040A431B0C13439BB22380B4
-:102734002A89AB8913439BB2238104B070BD00BFC7
-:1027440040420F00A086010041F288330360002359
-:1027540083804BF6FF72038143814FF48043C28030
-:1027640083817047038819B19BB243F0010303E0EE
-:1027740023F001031B041B0C03807047038819B169
-:102784009BB243F4806303E023F480631B041B0CBB
-:1027940003807047838A9AB2038B10B542EA0343DD
-:1027A40021F07F4404EA0300431A5842584110BD03
-:1027B400014B1860704700BF00300040014B586067
-:1027C400704700BF00300040014B9860704700BF65
-:1027D40000300040014B1860704700BF20000E42DB
-:1027E400034B5B68184214BF01200020704700BFF0
-:1027F40000700040064BB0F5402F15BF1A685A68A8
-:1028040042EA800042F4402214BF18605A607047C4
-:10281400007000400E4B1A68002142F001021A6059
-:1028240099601A6822F0A85222F410221A60094A08
-:102834005A60094AC3F8842002F18062C3F88820F0
-:102844001A6822F480221A60D960C3F88C10704789
-:102854000038024010300024003000201D4A9368E4
-:1028640003F00C03042B10B503D0082B03D01A4B30
-:1028740018E01A4B16E05168536811F4800F03F006
-:102884003F03516814BF154A134AB2FBF3F3114ACC
-:102894005268C2F30142C1F3881101324B43520022
-:1028A400B3FBF2F30B4A036093680D49C3F30313BC
-:1028B400CC5C0368E34043609468C4F382240C5DF9
-:1028C40023FA04F484609268C2F342328A5CD340EF
-:1028D400C36010BD003802400024F40040787D013C
-:1028E40001000020044B1A6B09B1104301E022EAF5
-:1028F40000001863704700BF00380240044B9A6B15
-:1029040009B1104301E022EA00009863704700BF58
-:1029140000380240044B1A6C09B1104301E022EA6A
-:1029240000001864704700BF00380240044B5A6C22
-:1029340009B1104301E022EA00005864704700BF67
-:1029440000380240044B1A6909B1104301E022EA3D
-:1029540000001861704700BF00380240044B5A69F8
-:1029640009B1104301E022EA00005861704700BF3A
-:1029740000380240044B9A6909B1104301E022EA8D
-:1029840000009861704700BF00380240044B1A6A87
-:1029940009B1104301E022EA00001862704700BF49
-:1029A40000380240044B5A6A09B1104301E022EA9C
-:1029B40000005862704700BF003802404209012AF3
-:1029C400074B01D11B6803E0022A0CBF1B6F5B6F2E
-:1029D40000F01F0023FA00F000F00100704700BF70
-:1029E4000038024082B000230193054B0193019B00
-:1029F40003EB80000190019B196002B0704700BF97
-:102A04005028004082B000230193054B0193019BA1
-:102A140003EB80000190019B186802B0704700BF6F
-:102A24005028004008B5254B984207D14FF48050F8
-:102A34000121FFF7B7FF4FF4805039E0204B984253
-:102A440007D14FF480400121FFF7A0FF4FF48040ED
-:102A540009E01C4B98420BD14FF400400121FFF7D1
-:102A640095FF4FF400400021BDE80840FFF78EBFFA
-:102A7400154B984207D14FF400500121FFF792FF04
-:102A84004FF4005014E0114B984207D14FF48010DA
-:102A94000121FFF787FF4FF4801009E00C4B9842A7
-:102AA4000BD14FF400100121FFF77CFF4FF400100D
-:102AB4000021BDE80840FFF775BF08BD00300140A4
-:102AC40000380040003C0040003401400050014008
-:102AD4000054014003884A8810B503F441540B881C
-:102AE40013438A881343CA8813430A8913434A89C0
-:102AF40013438A891343CA89134323439BB2038034
-:102B0400838B23F400631B041B0C83830B8A0382D3
-:102B140010BD0023038043808380C38003814381ED
-:102B24008381C381072303827047038819B19BB251
-:102B340043F0400303E023F040031B041B0C038019
-:102B44007047808980B27047818170470389194238
-:102B540014BF0120002070477FB5038ACA889BB246
-:102B640023F440531343038283890E469BB223F418
-:102B7400B053098923F00C02B3880B4371890B43CA
-:102B84009BB213438381838AB2899BB223F440733B
-:102B94001343838204466846FFF760FE1A4B9C4247
-:102BA40003D003F580639C4201D1039D00E0029DA4
-:102BB400A38931681BB2002B4FF0190202FB05F206
-:102BC400B4BF4D008D00B2FBF5F5A2896426B5FBB8
-:102BD400F6F00001010912B2002A06FB1153ADBF41
-:102BE4001A01D90032313232B5BFB1FBF6F2B2FB71
-:102BF400F6F302F0070203F00F03B4BF10431843C7
-:102C040080B2208104B070BD00100140838919B1E5
-:102C14009BB243F4005303E023F400531B041B0C46
-:102C240083817047C1F3080181807047038819428A
-:102C340014BF01200020704710B5431E0A4491427E
-:102C440004D011F8014B03F8014FF8E710BD02441A
-:102C54000346934202D003F8011BFAE770470000D1
-:102C64000400000001030000010000000100000056
-:102C740003000000010000000F0000000F0000002E
-:102C840000000000AE2F00080018024010000000F1
-:102C940006040000B32F00080018024008000000DA
-:102CA40006030100B62F00080018024002000000CD
-:102CB40006010100BD2F00080018024004000000B6
-:102CC40006020100000000000000000001424F4F16
-:102CD400544C4F414445520000000000002A2A0091
-:102CE400000000000000000000000000005400404C
-:102CF40000040240400000000600040000040240FA
-:102D0400000200000900040000002000801A0600F0
-:102D1400004000001F200000000000000000000030
-:102D240000580040001402400200000001000400AA
-:102D340000140240010000000000040000004000F4
-:102D4400801A0600FFBF00002122000000000000DE
-:102D54000116000801000300820007008400070038
-:102D6400010003000200030040000300800007008C
-:102D740084000700000001000000000000000008BB
-:102D8400004000080080000800C00008000001089E
-:102D940000000208000004080000060800000808FB
-:102DA40000000A0800000C0800000E0800000800DB
-:102DB40010001800200028003000380040004800AF
-:102DC40050005800000000006410B71DC8206E3B7E
-:102DD400AC30D9269041DC76F4516B6B5861B24D1E
-:102DE4003C7105502083B8ED44930FF0E8A3D6D688
-:102DF4008CB361CBB0C2649BD4D2D38678E20AA0F0
-:102E04001CF2BDBD537475636B20627574746F6E70
-:102E140020726567697374657220697320696E76C0
-:102E2400616C69642C20636C656172696E672E0045
-:102E3400427574746F6E206973207075736865646D
-:102E440020617420626F6F740069636534306C7044
-:102E54002E630043444F4E45206E6F74206C6F7791
-:102E640020647572696E67207265736574004352DD
-:102E740045534554206E6F742068696768206475F3
-:102E840072696E6720726573657400446973706C4F
-:102E9400617920627573792D776169742074696D25
-:102EA400656F757420657870697265642100436F7D
-:102EB4006E6669677572696E672046504741206681
-:102EC400726F6D2062697473747265616D20696ECE
-:102ED40020666C6173682E2E2E004E6F204650477C
-:102EE400412062697473747265616D20696E206635
-:102EF4006C6173682E0046616C6C696E6720626158
-:102F0400636B20746F204E56434D2E00465047414C
-:102F14002043444F4E452074696D656F7574206578
-:102F240078706972656421004650474120636F6E72
-:102F340066696775726174696F6E206661696C6534
-:102F4400642E204973207468697320612062696764
-:102F5400626F6172643F0046504741207665727328
-:102F6400696F6E3A2000446973706C617920696EF0
-:102F7400697469616C697A6564206166746572203C
-:102F84000020726574726965732E00446973706CF5
-:102F9400617920696E697469616C697A6174696FB9
-:102FA4006E206661696C65642E004261636B005536
-:102FB400700053656C65637400446F776E006372D0
-:102FC400632E63006932632E6300493243206465D3
-:102FD40076696365204944206F7574206F662062AA
-:102FE4006F756E647320256420286D61783A2025FE
-:102FF4006429006F6E007370692E6300206973206A
-:103004006F7574736964652073797374656D206674
-:103014006C6173680D0A0073797374656D5F666C17
-:103024006173685F657261736528002C2000290D47
-:103034000A006661696C656420746F20657261734F
-:103044006520736563746F72200073797374656DA2
-:103054005F666C6173685F77726974652800666186
-:10306400696C656420746F2077726974652061648B
-:1030740064726573732000496E76616C69642066BE
-:1030840069726D77617265206465736372697074C7
-:10309400696F6E2100436865636B73756D6D696E4E
-:1030A40067206669726D77617265207570646174FA
-:1030B4006500496E76616C6964206669726D77613A
-:1030C40072652043524320696E2053504920666C38
-:1030D400617368210065726173655F6F6C645F661C
-:1030E40069726D776172650077726974655F6E6588
-:1030F400775F6669726D7761726500436865636BBB
-:1031040073756D6D696E6720002062797465730D47
-:103114000A00436865636B73756D202D2077616EBB
-:10312400746564200020676F7420004F75722069F5
-:103134006E7465726E616C20666C61736820636F77
-:103144006E74656E747320617265206261642028F8
-:10315400636865636B73756D206661696C6564296A
-:10316400212054686973206973207265616C6C79DD
-:103174002062616421004F75722070726576696FF8
-:103184007573206669726D7761726520757064610C
-:103194007465206661696C65642C2061626F727469
-:1031A400696E67207570646174652E004E657720C2
-:1031B4006669726D776172652069732061766169F1
-:1031C4006C61626C6521004C6F6164696E6720728A
-:1031D40065636F76657279206669726D7761726571
-:1031E400004661696C656420746F206C6F616420B3
-:1031F4007265636F76657279206669726D77617244
-:10320400652C20737472696B65206F6E652E205473
-:10321400727920616761696E2E004661696C65642C
-:1032240020746F206C6F6164207265636F766572C1
-:1032340079206669726D776172652C207374726986
-:103244006B652074776F2E205472792061676169F1
-:103254006E2E004661696C656420746F206C6F612A
-:1032640064207265636F76657279206669726D7722
-:103274006172652C20737472696B65207468726561
-:10328400652E20534144205741544348004841523D
-:1032940044204641554C5400657869742073746128
-:1032A4006E64627900205F5F5F5F20202020202011
-:1032B4002020202020202020205F5F002F5C202061
-:1032C4005F605C20202020202020202020202F2729
-:1032D4005F5F605C005C205C2C5C4C5C5F5C20206D
-:1032E40020205F5F5F202F5C205C2F5C205C20200F
-:1032F4005F5F20205F5F20205F5F20205F5F2020D2
-:103304005F5F00205C2F5F5C5F5F205C20202F27C5
-:10331400205F20605C205C205C205C205C2F5C20B3
-:103324005C2F5C205C2F5C205C2F5C205C2F5C207D
-:103334005C002020202F5C205C4C5C205C2F5C20F7
-:103344005C2F5C205C205C205C5F5C205C205C204B
-:103354005C5F2F205C5F2F205C205C205C5F5C2026
-:103364005C002020205C20605C5F5F5F5F5C205C11
-:103374005F5C205C5F5C205C5F5F5F5F2F5C205C58
-:103384005F5F5F785F5F5F2F275C2F605F5F5F5FCA
-:10339400205C00202020205C2F5F5F5F5F5F2F5C3C
-:1033A4002F5F2F5C2F5F2F5C2F5F5F5F2F20205CD0
-:1033B4002F5F5F2F2F5F5F2F202020602F5F5F5FC5
-:1033C4002F3E205C002020202020202020202020B0
-:1033D40020202020202020202020202020202020E9
-:1033E40020202020202020202020202020202020D9
-:1033F4002F5C5F5F5F2F00202020202020202020D2
-:1034040020202020202020202020202020202020B8
-:1034140020202020202020202020202020202020A8
-:1034240020205C2F5F5F2F004C61737420666972EB
-:103434006D7761726520626F6F742077617320739A
-:103444007461626C653B20636C6561722073747295
-:10345400696B657300486F6C6420646F776E2055E8
-:1034640050202B204241434B20666F72203520733D
-:103474006563732E20746F20666F7263652D626FAF
-:103484006F7420505246004669726D7761726520F0
-:10349400697320657261736564005761746368645D
-:1034A4006F6720636175736564206120726573655D
-:1034B4007400536F667477617265206661696C7518
-:1034C400726520636175736564206120726573653C
-:1034D40074004661696C656420746F207374617252
-:1034E40074206669726D776172652C2073747269D9
-:1034F4006B652074687265652E004661696C65644D
-:1035040020746F207374617274206669726D7761C0
-:1035140072652C20737472696B652074776F2E004A
-:103524004661696C656420746F20737461727420E1
-:103534006669726D776172652C20737472696B654C
-:10354400206F6E652E00466F7263652D626F6F7417
-:10355400696E67207265636F76657279206D6F643A
-:10356400652E2E2E00426F6F74696E672066697235
-:103574006D77617265204020002E2E2E0D0A0D0AF3
-:10358400004153534552543A20002020003A004150
-:103594005353455254004153534552544E002A2A22
-:1035A4002A20575446200053544D33320053544D6F
-:1035B4003332207065726970686572616C206C6961
-:1035C4006272617279207472697070656420616ED0
-:1035D400206173736572740043524F414B204F4F07
-:0435E4004D00000096
-:1035E800FF000000000102030401020304060708AB
-:0435F80009000000C6
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_spalding@1478015115.hex b/bin/boot/nowatchdog_boot_spalding@1478015115.hex
deleted file mode 100644
index becfde4b52..0000000000
--- a/bin/boot/nowatchdog_boot_spalding@1478015115.hex
+++ /dev/null
@@ -1,869 +0,0 @@
-:020000040800F2
-:1000000070210020B5010008F9010008A51A0008B8
-:10001000F9010008F9010008F901000800000000DA
-:10002000000000000000000000000000F9010008CE
-:10003000F901000800000000F9010008F9010008BA
-:10004000F9010008F9010008F9010008F9010008A8
-:10005000F9010008F9010008F9010008F901000898
-:10006000F9010008F9010008F9010008F901000888
-:10007000F9010008F9010008F9010008F901000878
-:10008000F9010008F9010008F9010008F901000868
-:10009000F9010008F9010008F9010008F901000858
-:1000A000F9010008F9010008F9010008F901000848
-:1000B000F9010008F9010008F9010008D11500084C
-:1000C000DD150008E9150008F5150008F90100081C
-:1000D000F9010008F9010008F9010008F901000818
-:1000E000F9010008F9010008F9010008F901000808
-:1000F000F9010008F9010008F9010008F9010008F8
-:10010000F9010008F9010008F9010008F9010008E7
-:10011000F9010008F9010008F9010008F9010008D7
-:10012000F9010008F9010008F9010008F9010008C7
-:10013000F9010008F9010008F9010008F9010008B7
-:10014000F9010008F9010008F9010008F9010008A7
-:10015000F9010008F9010008F9010008F901000897
-:10016000F9010008F9010008F9010008F901000887
-:10017000F9010008F9010008F9010008F901000877
-:04018000F901000879
-:100184008BB8185876342E332D616C706861322D1B
-:1001940033342D6738663564383732000000000088
-:0F01A40000000000386635643837320000000173
-:1001B400002103E00A4B5B584350043109480A4BC1
-:1001C40042189A42F6D3094A02E0002342F8043B5B
-:1001D400074B9A42F9D301F0DBFF01F093FC70471F
-:1001E400E83500080000002014000020140000205E
-:1001F4006C010020FEE7000030B501208BB002F056
-:1002040001FC002401902546E0B200F049FC01AA5B
-:1002140008B9105519E0135D042B10DD164800F0E1
-:1002240035FE02A92022019801F07DFF02A800F00A
-:100234002DFE0120002102F0D5FB00201AE001333D
-:10024400DBB2052B135528BF01250134042CDBD167
-:10025400019C54B1094800F019FE204602A920224D
-:1002640001F061FF02A800F011FE0120214602F016
-:10027400B9FB28460BB030BD082E0008342E000808
-:1002840008B500F017FB80F00100C0B208BD000003
-:1002940008B54FF48061034802F0A1F9003018BF9B
-:1002A400012008BD001802402DE9F0434A4C89B0F2
-:1002B400204600F005FE20460D21052202F09AF9A1
-:1002C40020460E21052208AE02F094F905222046AC
-:1002D4000C2102F08FF94FF4005346F81C3D002521
-:1002E40001274FF00209204631468DF80A508DF857
-:1002F4000B508DF808908DF8097002F02FF94FF427
-:10030400804320463146019302F028F94FF480538C
-:100314002046314601934FF4007802F01FF920463D
-:1003240031468DF808508DF80B70CDF8048002F03A
-:1003340015F94FF480632046314601938DF8085037
-:100344008DF80B5002F00AF94FF4807320463146C1
-:1003540001938DF808708DF80B5002F0FFF84FF4FC
-:1003640000432046314601938DF80A708DF80B50F6
-:1003740002F0F4F839464FF4001002F0D7FAA4F56D
-:100384004444164B164E1E60204602F04BFB03A855
-:1003940002F0BFFB4FF4827339463046ADF80E309D
-:1003A400ADF80C50ADF81050ADF81290ADF81470D3
-:1003B400ADF8168001F024F903A9ADF81800204621
-:1003C400ADF81A5002F086FB2046394602F0ADFB28
-:1003D40009B0BDE8F08300BF0018024014000020FB
-:1003E4000024F40008B5022001F087FE012000F08B
-:1003F40045FB022001F081FE0120BDE8084000F029
-:100404002BBB000010B504460548022102F09EFBF8
-:100414000028F9D021460248BDE8104002F094BB00
-:100424000054014038B5012204460D4629484FF4D2
-:10043400807102F0DAF8012001F05FFE25484FF4E4
-:100444000041002202F0D1F84FF4807100222148CB
-:1004540002F0CBF8012001F050FE4FF400411D489A
-:10046400012202F0C2F8012001F047FE19484FF4BE
-:10047400007102F0B4F818B11748184A6A210AE06A
-:1004840014484FF4004102F0AAF808B1254404E0EE
-:100494001148134A6B2101F0A3FDAC4204D014F8B7
-:1004A400010BFFF7AFFFF8E70A484FF48071012210
-:1004B40002F09BF808240020FFF7A4FF013CFAD1C6
-:1004C4004FF40071034802F08AF8003018BF01208D
-:1004D40038BD00BF001802404D2E0008572E0008FA
-:1004E400722E000810B504460B4802F02AFB0A4895
-:1004F400022102F02BFB0028F9D00748214602F024
-:1005040023FB0548012102F021FB0028F9D0024811
-:1005140002F017FBC0B210BD0054014010B54FF4F7
-:10052400807104460022054802F05FF8642001F05F
-:10053400DFFD2046BDE81040FFF764BF001802400D
-:1005440008B50748802102F001FB0028F9D10548CD
-:100554004FF480710122BDE8084002F046B800BFA4
-:10056400005401400018024010B540F2F514FFF7A2
-:100574008FFE50B1013C04D1054800F087FC2046B1
-:1005840010BD642001F0B4FDF1E7012010BD00BFEF
-:100594008F2E000810B5224C638822884FF6FF7115
-:1005A400DB438A429BB20BD09A4209D11D4800F02A
-:1005B4006DFC1D482188FFF735FF20B1012010BDD7
-:1005C4001A4800F063FC1A4800F060FC19484FF424
-:1005D4008071012202F009F84FF40041002215480D
-:1005E40002F003F8012001F088FD12484FF40041A5
-:1005F400012201F0FAFF40F2E9340E484FF4007191
-:1006040001F0EDFF0028D9D1013C04D10A4800F0E3
-:100614003DFC204610BD642001F06AFDEDE700BFFB
-:1006240000000F60B22E000804000F60DE2E0008E8
-:10063400FA2E000800180240102F000810B50446D6
-:100644000420FFF76BFF2046FFF7DCFEBDE81040F7
-:10065400FFF776BF10B504460120FFF75FFFE0B255
-:10066400FFF7D0FEC4F30720FFF7CCFEC4F3074026
-:10067400FFF7C8FE200EFFF7C5FEBDE81040FFF7E8
-:100684005FBF000010B5FFF70FFEFFF783FF08B947
-:10069400224830E0224800F0DDFB4FF48071002254
-:1006A400204801F0A2FF642001F022FD0020FFF7A2
-:1006B40019FF4FF48071012204461A4801F095FF96
-:1006C400204600F0F1FB184800F0E0FBFFF78AFE3B
-:1006D40000240120FFF7B2FFFFF746FF78B10320A3
-:1006E400FFF71CFFFFF72CFF104800F0B3FB204678
-:1006F40000F0DAFB0E48BDE8104000F0C7BB01343F
-:10070400FFF748FF152CE4D10A4800F0BFFB022094
-:10071400FFF704FFBDE81040FFF712BF2C2F0008BD
-:100724005B2F000800180240843500086A2F000877
-:10073400852F00088F2F000808B55D235843094B07
-:100744004A1C00EB52001A78B0FBF1F0C0B28242AE
-:1007540007D01870FFF77EFF0220BDE80840FFF7BE
-:100764006DBF08BD0000002008B5FFF773FF03202C
-:10077400BDE80840FFF762BF08B50220FFF7CEFED0
-:10078400BDE80840FFF7DCBE01F1C04102F054BAF5
-:1007940070B543489AB000F093FB424800F090FBD8
-:1007A400414800F08DFB414B93E8030001AD85E81F
-:1007B40003003C48294601F0D1FE3A4804210122B5
-:1007C40001F013FF00240223029435488DF8083009
-:1007D400072103230C228DF80930019401F00AFF4C
-:1007E40080232F480193294601F0B8FE022C04D03F
-:1007F4002C48A1B20C2201F0FDFE0134102CF5D1DD
-:100804004FF6FB7327480193294601F0A7FE022601
-:100814003146013624480C22B6B201F0EBFE102E0C
-:10082400F6D14FF6FC7329461F48019301F096FE5A
-:10083400042100221B481E4D01F0D7FE0A2001F0BE
-:1008440057FC01220421174801F0CFFE1E2001F0BD
-:100854004FFC0120014602F051F80FCD03AC0FC448
-:1008640095E8070084E80700402200210AA802F066
-:10087400EEF902230B9308230C934FF48053129345
-:100884004FF4005313930AA803AB18930D9601F089
-:10089400EBFD0020012101F051FE1AB070BD00BF34
-:1008A40000040240000C024000100240642C0008C6
-:1008B4006C2C00080D4B98221A80A3F68A231B88FF
-:1008C400DBB2512B0CD10A4B1B88DBB2522B07D164
-:1008D400084B1888C0B2A0F159035842584100E0AF
-:1008E4000020024BF0221A80704700BFAA0A006061
-:1008F400220000602400006002460B4604205021C0
-:1009040000F045BE02460B460420502100F054BEC0
-:10091400032873B50E4603D0042804D001F076FBF7
-:1009240014241C4D01E01C4D162420460DF1070132
-:10093400FFF7E2FF08B900202AE02B78AEB10BB133
-:10094400013323E09DF8071021F0060141F0020174
-:1009540020468DF80710FFF7D5FF0028EBD00124BF
-:1009640003202C7001F0C9FB11E05AB2012A0CDCFF
-:100974009DF80710204601F0F9018DF80710FFF7E4
-:10098400C1FF0028D7D02E7001E0013B2B7001205D
-:1009940002B070BD180000201900002073B525486E
-:1009A40000F08EFA02254FF410730024012621482A
-:1009B400009369468DF804508DF805508DF8066053
-:1009C4008DF8074001F0CAFD1A480621042201F0FF
-:1009D40011FE04220921174801F00CFE154800F00D
-:1009E40087FA154800F06CFA42F20C036946124883
-:1009F40000938DF805508DF804608DF806408DF84D
-:100A0400074001F0ABFD0C4800F072FA042000F03E
-:100A140057FD20466946FFF76FFF9DF80050B54229
-:100A240005D103202946FFF773FF284600E020463E
-:100A340002B070BD000402400014024010B5044628
-:100A4400042000F03DFD21460420FFF761FF04204F
-:100A5400BDE8104000F066BD38B5074C0546204699
-:100A640000F02EFA20462A46042101F0BEFD20465D
-:100A7400BDE8384000F03CBA0014024038B5074CD9
-:100A84000546204600F01CFA20462A46082101F0BB
-:100A9400ACFD2046BDE8384000F02ABA00140240FC
-:100AA40038B5094C04EB00146568284600F008FAD0
-:100AB4002189284601F093FD0446284600F018FADF
-:100AC400B4FA84F0400938BD882C000838B50024F5
-:100AD4002546E0B2FFF7E4FFA04001340543042CAF
-:100AE400EDB2F6D1284638BDF7B54FF48040012168
-:100AF400134C01F01BFF04F140076568284600F021
-:100B0400DFF9684601F062FD02238DF80530A37B0E
-:100B14008DF807302846A3680093694600268DF8AF
-:100B24000460103401F01AFD284600F0E1F9BC42DB
-:100B3400E3D14FF48040314601F0F8FE03B0F0BD3C
-:100B4400882C000808B5054B1B781BB904483221D2
-:100B540001F052FABDE8084001F0C6BB1A000020BB
-:100B6400C22F0008124B1B7870B505460C461BB902
-:100B74001048382101F040FA032906D98E0831467D
-:100B8400FFF7E0FFB6003544A41B6CB12B462C44A0
-:100B94000020A34204D013F8012B42EA0020F8E716
-:100BA400BDE8704001F09ABBBDE8704001F0AABBFB
-:100BB4001A000020C22F0008024B1A780AB9012239
-:100BC4001A7070471A00002008B5084B1A781AB931
-:100BD40007482B2101F010FA01214FF4805059707D
-:100BE40001F080FEBDE8084001F072BB1A0000204D
-:100BF400C22F000808B5074B1A781AB906485121C4
-:100C040001F0FAF9002159704FF48050BDE8084012
-:100C140001F068BE1A000020C22F000870B50C460F
-:100C24000546A608FFF7D0FF28463146FFF78AFF9E
-:100C340004F0030105EB8600FFF794FF0446FFF779
-:100C4400D9FF204670BD70B5A0B00D460646FFF72B
-:100C5400BBFF2C467119802CA1EB0401684608D90E
-:100C64008022FFF791FD68462021FFF76BFF803C4F
-:100C7400F0E72246FFF788FD21466846FFF772FF3A
-:100C84000446FFF7B7FF204620B070BD0A4B1B781F
-:100C940010B504467BB10948402101F0C7FF002884
-:100CA400F9D00648214601F0BDFF0448402101F077
-:100CB400BDFF0028F9D010BD1C00002000480040F2
-:100CC4002DE9F043334D83B06C6804F12E0323F017
-:100CD400070300AFADEB030D50238DF80030212343
-:100CE4008DF8013000238DF8023003238DF8033092
-:100CF40004F121035BBAADF80430274B04F1270853
-:100D04006E460DF1060203F11C0153F8040B42F880
-:100D1400040B8B42F9D11B78137004F1230922468A
-:100D240006F123001D4901F087FF31464A460020A1
-:100D340001F0BEF907F1080304F5927443F8040DB9
-:100D4400186846F80900FE23B4FBF3F34344073361
-:100D540023F00703ADEB030D31464246684601F02C
-:100D64007FF904465520FFF791FF6E466C44A64276
-:100D740007D016F8010B552808BF0020FFF786FF9F
-:100D8400F5E75520FFF782FF00230C376B60BD4663
-:100D9400BDE8F0831C000020D02C000824000020B3
-:100DA4002DE9F041274C86B0204600F089F84FF435
-:100DB4008020012101F0AEFD20460A21072201F026
-:100DC40019FC06AE072220460B2101F013FC4FF458
-:100DD400806346F8183D002501274FF0020820469D
-:100DE40031468DF806508DF807708DF804808DF823
-:100DF400058001F0B3FB4FF40063204631460093B5
-:100E04008DF8048001F0AAFBADF80C50ADF80E503B
-:100E1400ADF81050ADF814500B4D0C4B029328460E
-:100E24000C2302A9ADF8123001F096FE284639468B
-:100E340001F0ECFE204600F05BF8054B1F7006B095
-:100E4400BDE8F081000802400048004040420F0025
-:100E54001C00002038B50C4B1A781C469AB1451E6C
-:100E640015F8012F7AB163680749FF2B0BD80A2ABA
-:100E740002D1FFF725FFF3E70D2A1FBF581C5B18AB
-:100E840048601A72ECE738BD1C00002008B5054B19
-:100E94001B782BB1FFF7DEFFBDE80840FFF710BF5A
-:100EA40008BD00BF1C0000201FB50C2201A901F0E1
-:100EB4003AF901A8FFF7CEFF05B05DF804FB000086
-:100EC40000F13F4000F57E00C0F3872008280AD8CF
-:100ED400054A135C591C11542BB9044901230A6BAC
-:100EE400834013430B637047240100200038024001
-:100EF40000F13F4000F57E00C0F3872008280DD89C
-:100F0400074A135C53B1013BDBB2135433B90549AF
-:100F140001230A6B834022EA03030B63704700BF7B
-:100F2400240100200038024002460068838823F42C
-:100F3400E0631B041B0C838003889BB243F400739F
-:100F4400038008230020517513751076704737B558
-:100F540004460D46FFF7B4FF0023204669468DF88A
-:100F640004308DF805308DF80730009501F0F6FA5D
-:100F74002046FFF7BDFF03B030BD000010B50B4C99
-:100F8400342300FB0344236B7BB10A2001F0B5F842
-:100F94006068A168FFF7DBFF20696169FFF7D7FF8D
-:100FA400236B0120BDE81040184710BDF02C000849
-:100FB400F7B5044616460F461D46FFF781FF02218A
-:100FC40001238DF804108DF805108DF806302046A5
-:100FD400002369468DF80730009701F0BFFA2046D8
-:100FE40031462A4601F006FB2046FFF781FF03B095
-:100FF400F0BD0000027D082A10B5044607D102683E
-:10100400938823F4C0631B041B0C938084E0434B3C
-:10101400006803EB8203996E01F0BCFB00287BD0CF
-:10102400237D072B72D8DFE803F0040B1921323B30
-:101034005A6E237A226803F0FE03138201232DE003
-:101044002268A37A1382637A0BB1022326E0938881
-:101054009BB243F48063938006231FE022681388C5
-:101064009BB243F480731380032317E0237A22682E
-:1010740043F001031382E37A012B01BF138823F4A5
-:1010840080631B041B0C08BF1380042306E0226842
-:1010940093889BB243F480639380052323753BE0DC
-:1010A40023682269198A237BD154237BE27A013392
-:1010B400DBB2591C9142237307D12268138823F4AD
-:1010C40080631B041B0C138026E0934224D1226806
-:1010D400938823F480631B041B0C938013E0237B0D
-:1010E40021692268CB5C1382237BE17A0133DBB272
-:1010F4009942237310D1938823F480631B041B0C3F
-:1011040093800723CAE72046012101E020460021FD
-:10111400BDE81040FFF708BF002010BDF02C000808
-:101124007FB51D4D1C2303FB005306461B790BB9E9
-:10113400FFF724FF194C342306FB03446068A168BD
-:10114400A289A37BFFF734FF228BA37E2069616908
-:10115400FFF72EFFE069012101F0DCFB684601F096
-:10116400F3FA0F4A236A009393424FF48063ADF875
-:101174000A304FF01C0384BF626AADF8062003FBFB
-:1011840006F46946285901F075FA2859012101F03D
-:10119400E9FA04B070BD00BF30010020F02C000853
-:1011A400A086010073B504460E460025FFF788FEAD
-:1011B4000123204669468DF8043000968DF80550C9
-:1011C4008DF8075001F0CAF92046B1B22A4601F061
-:1011D4000CFA2046FFF78CFE02B070BD10B5094C26
-:1011E400342300FB0344236B5BB100209847606801
-:1011F400A168FFF7D7FF20696169BDE81040FFF7D8
-:10120400D1BF10BDF02C00081C23104A434370B515
-:1012140005460F4CD058D61801F0FEF9342305FBCF
-:1012240003440021E06901F075FB337923B92846B2
-:10123400BDE87040FFF7D2BF6068A168FFF787FE82
-:1012440020696169BDE87040FFF781BE300100206C
-:10125400F02C00082DE9F347504C9A4694F83830A6
-:10126400884691461BB94E4840F2951104E0042883
-:1012740004D94B484FF4CB7100F0BEFE494B1844DF
-:101284001C2590F88860754363191B790BB90020FD
-:1012940081E063591B8B9F0716D41C2070432718C9
-:1012A40000259DF828300B9A87F8089087F80AA043
-:1012B40087F80980FB723D733D753A61FD822058C1
-:1012C400012101F05BFA2AE03046FFF79DFF30462A
-:1012D400FFF726FF6159344B0A8B9007DDD5013B9C
-:1012E400FAD1D4E71C2303FB06431B7E23B1019BE5
-:1012F4005A1E0192002BF5D11C2303FB0643002246
-:101304001A76019903F1100239B3117908291AD117
-:1013140055791C2303FB06431B7D082B2BD01C2370
-:101324007343E018E1580A8892B242F480720A804A
-:10133400E25893889BB243F440739380012303766D
-:10134400194B0193D3E7D188B1F57A7F05D20131E6
-:10135400D180012000F0D1FEDBE719688B8823F4EB
-:10136400E0631B041B0C8B800B889BB243F400735B
-:101374000B80082313711C237343E1580A4B0A8B17
-:10138400920707D5013BFAD13046FFF73DFF3046BF
-:10139400FFF7C6FE284602B0BDE8F0873001002002
-:1013A400C82F0008F02C000880841E00017D03680B
-:1013B400082906D19A8822F480721204120C9A80A9
-:1013C40038E09A8A120541BF9A8A22F40062120414
-:1013D400120C48BF9A829A8AD20541BF9A8A22F493
-:1013E40080721204120C48BF9A829A8A52051ED542
-:1013F4009A8A22F480621204120C04299A820AD175
-:10140400032202759A8822F4E0621204120C9A8074
-:10141400002303760EE0012909D19A8822F4E062C0
-:1014240012040021120C01759A80017602E0002159
-:10143400FFF77ABD002070472DE9F3411D4C1E4E85
-:1014440000251E4F56F8283C44F8043C1C2202FB9D
-:1014540005720023237013760822227432788DF8E3
-:1014640004204FF001080C2201A82372E371E36009
-:101474008DF805208DF806308DF8078000F0F2FE17
-:1014840073788DF8043001A800F0ECFE54F8040CD5
-:1014940001F0C2F8454504F11C0406F1340601D0FC
-:1014A4004546CEE7284687F83850FFF797FE02B046
-:1014B400BDE8F08134010020182D0008300100201F
-:1014C40073B5144C94F838200346254622B91248C3
-:1014D40040F2331100F090FD042807D90522009250
-:1014E4000D480E4A40F2351100F07AFD0C4A1344BF
-:1014F40093F888401C2303FB04521E46127912B948
-:101504002046FFF70DFE06FB0454237901332371B3
-:1015140002B070BD30010020C82F0008CE2F000893
-:10152400F02C0008104A08B592F838301BB90F485F
-:1015340040F2451104E0042804D90C484FF4A37187
-:1015440000F05AFD0A4B18441C2390F8880003FB52
-:10155400002213793BB1013BDBB213711BB9BDE827
-:101564000840FFF751BE08BD30010020C82F000815
-:10157400F02C000837B50D4614460093069B0193E2
-:1015840001212A462346FFF765FE03B030BD07B5A7
-:1015940000930123FFF7EEFF03B05DF804FB37B5BA
-:1015A4000D4614460093069B019300212A462346C8
-:1015B400FFF750FE03B030BD1FB504AC04F8013D85
-:1015C40001230094FFF7EBFF04B010BD0148FFF7BF
-:1015D40011BD00BF300100200148FFF7E7BE00BF86
-:1015E400300100200148FFF705BD00BF4C01002079
-:1015F4000148FFF7DBBE00BF4C010020FFF71EBA15
-:1016040030B585B004460D46684601F027F90DB99A
-:10161400029805E0012D01D1039801E000F0F6FCE9
-:10162400B4EB500F0ED8B0FBF4F000F070FD0028BE
-:1016340002DC0748272103E0082804DD04482821A8
-:1016440000F0DAFC01200138C00080B205B030BDE2
-:10165400FA2F0008B0F1006F10B504460BD20C4805
-:10166400FFF7F8FB2046FFF71FFC0A48FFF7F2FBE1
-:101674004FF0FF3010BD084B002053F8042BA2425A
-:1016840002D81A68944202D301300B28F5D110BD58
-:101694007230000800300008802D00082DE9F8435E
-:1016A40006462A480C4617469846FFF7D3FB3046B1
-:1016B400FFF7FAFB2648FFF7CDFB2046FFF7F4FBC4
-:1016C4002448FFF7C7FBD4B33046FFF7C3FF0546F2
-:1016D400601E3044FFF7BEFF002D814632DB002838
-:1016E40030DB461B01361FB1002031464246B84765
-:1016F40000F01AFE2C464C451FDCF32000F02AFEB5
-:10170400154B002133F8140000F05CFE09280BD0BF
-:101714001248FFF79FFB2046FFF7C6FB1048FFF770
-:10172400B5FB00F00FFE0DE02FB1C5F10100204420
-:1017340031464246B8470134DDE700F003FE01209C
-:10174400BDE8F8830020BDE8F88300BF1B30000823
-:101754002F30000832300008B02D00083630000861
-:10176400843500082DE9F0470646234814460D4603
-:101774001F46FFF76FFB3046FFF796FB1F48FFF746
-:1017840069FB2046FFF790FB1D48FFF763FB00F061
-:10179400CBFDF32000F0DEFD4FEAD41805EB04097D
-:1017A4002C464C45C5EB040A20D0701B204414F889
-:1017B400011B00F03DFE09280DD01248FFF74AFB3B
-:1017C4003046FFF771FB1048FFF760FB00F0BAFDED
-:1017D4000020BDE8F087002FE3D01AF07F0FE0D19E
-:1017E4004FEADA104146089AB847DAE700F0AAFD52
-:1017F4000120BDE8F08700BF4E3000082F300008FC
-:1018040032300008623000088435000808B545F21B
-:10181400555000F0CDFF042000F0D0FF40F6FF70DB
-:1018240000F0D2FF002000F0C3FF4FF480500121EC
-:10183400BDE8084000F06CBD08B57D2001F0BEF89D
-:10184400003018BF012008BD4900FEF775BF4B08E2
-:1018540003EB5000FEF770BF70B586B00546FFF786
-:10186400ABF901210020FEF767FF042000F01EFB06
-:1018740003A8294600F066FB03A800F072FB08B930
-:1018840028480BE02848FFF701FB05F10C000499F8
-:10189400FFF7D9F9059B984204D02448FFF7F6FADC
-:1018A40001203DE0049C2248FFF7F0FA2146214A3A
-:1018B40021480023FFF7F2FE049E2048FFF7E6FAD2
-:1018C400002405F1C0411E4B009432460C311A48E5
-:1018D400FFF748FF1B48FFF7BDFA0498FFF7E4FA47
-:1018E4001948FFF7B7FA04991348FFF797F9054623
-:1018F4001648FFF7AFFA0598FFF7D6FA1448FFF732
-:10190400A9FA2846FFF7D0FA1248FFF7BFFA059B59
-:101914009D4204D01048FFF7B9FA022000E02046A7
-:1019240006B070BD7B30000899300008B63000085E
-:10193400D93000084D18000800400008EC300008B9
-:1019440053180008FF3000080D3100081631000854
-:1019540029310008843500082F31000808B5022019
-:1019640000F0BCFAD8B3042000F0B8FA70B11C48F7
-:10197400FFF78CFA042000F0A5FA022000F0A2FA86
-:101984004FF40040BDE8084000F09CBA1548FFF74A
-:101994007DFA082000F096FA102000F093FA202037
-:1019A40000F090FA402000F08DFA4FF48010FFF719
-:1019B40053FF022807D1082000F078FA102000F025
-:1019C40075FA00F045FB042000F07CFA022000F0D8
-:1019D40079FA4FF40040BDE8084000F067BA08BD4A
-:1019E4007A310008B031000810B52548FFF74EFAE7
-:1019F4004FF40010FFF730FF10B102283AD809E085
-:101A0400202000F05FFA402000F05CFA802000F013
-:101A14004DFA2FE0082000F049FA102000F046FAB1
-:101A2400202000F05BFA20B91648FFF72FFA202097
-:101A340007E0402000F052FA58B91348FFF726FA9D
-:101A4400402000F033FA4FF4007000F02FFA00F059
-:101A5400FFFA0E48FFF71AFA082000F033FA1020B4
-:101A640000F030FA202000F02DFA402000F02AFA8D
-:101A7400002400E00124042000F024FA204610BDD4
-:101A8400CB310008E53100081E3200085732000847
-:101A940008B50248FFF7FAF900BEFEE791320008E4
-:101AA4001EF0040F0CBFEFF30880EFF30980FFF77B
-:101AB400EFBF70471FB504461048FFF7E7F901A9C7
-:101AC4000C22204600F02FFB01A8FFF7DFF9204687
-:101AD400FEF74AFEFEF7FAFF094B20F004001870E7
-:101AE4001C46FEF7F3FF237800F0FB00834201D08D
-:101AF40000F0AEFA0A2000F000FBF2E7873200089B
-:101B0400690100207FB54FF08050012100F002FFF1
-:101B1400022000F065FE012807D1022000F06AFED1
-:101B2400BB48FFF7B3F900F098FA00214FF080505A
-:101B340000F0F0FEFFF734F9B648FFF7A7F9B6480E
-:101B4400FFF7A4F9B548FFF7A1F9B548FFF79EF9E7
-:101B5400B448FFF79BF9B448FFF798F9B348FFF787
-:101B640095F9B348FFF792F9B248FFF78FF9B248F5
-:101B7400FFF78CF9FFF760FCFEF710FF00F0B8F9EF
-:101B840000F0CEF900210C2201A801F060F800F069
-:101B9400C3F901A90C2200F0C6FA01A8FFF776F9EF
-:101BA4009C48FFF773F99B48FFF770F94FF48040A6
-:101BB40000F094F990B1A148FFF768F94FF4804020
-:101BC40000F080F9082000F07DF9102000F07AF987
-:101BD400202000F077F9402000F074F9FEF7D8FDDA
-:101BE400FEF782FFFEF74EFDFEF706FB08B19448B0
-:101BF40003E0FEF745FB10B19248FFF75BFF00F0EE
-:101C04008AF9802000F06AF918B1802000F05AF9AE
-:101C140056E04FF4003000F061F9044620B14FF46F
-:101C2400003000F04FF94DE00120FEF739FFB0B16C
-:101C34002046FEF735FF90B18348FFF727F941F2BC
-:101C440088340120FEF72CFF98B10020FEF728FF0E
-:101C540078B1012000F051FA013CF2D132E07B4B23
-:101C64000CCB013301D0013203D17948FFF70EF9CF
-:101C740028E0FFF7E1FD48B3FFF7DEFD10B175483A
-:101C8400FFF704F94FF4007000F028F910B172481E
-:101C9400FFF7FCF84FF4007000F014F9102000F086
-:101CA4001DF9002800F0EE806C48FFF7EFF80820DB
-:101CB40000F008F9102000F005F9FFF795FE98B937
-:101CC40067489AE76748FFF7E1F8F6E74FF40070D2
-:101CD40000F004F90028CFD1082000F0F3F8102018
-:101CE40000F0F0F8FFF73AFE4FF4005000F0F6F879
-:101CF40004464FF4805000F0F1F8400040EA8400BC
-:101D0400C4B24FF4006000F0E9F82043C0B20728E1
-:101D1400C3B20DD14FF4006000F0D4F84FF48050FA
-:101D240000F0D0F84FF4005000F0CCF84E4864E7CF
-:101D34000133DBB2023B4FF40060052B11D8DFE81E
-:101D440003F00C1003100C1000F0BCF84FF480509A
-:101D540000F0B8F84FF4005003E000F0B3F84FF48B
-:101D6400805000F0A3F8FFF751FD384B3F485D6801
-:101D74001E68FFF76FF82846FFF796F83C48FFF710
-:101D840069F80022930003F1604303F561430132D3
-:101D94004FF0FF31082AC3F88010C3F88011F1D145
-:101DA400344B4FF4801200241A635C639C631C64FC
-:101DB4005C6400F02FFD3048012100F0C3FD214692
-:101DC4002D4800F0BFFDF120012100F0C7FD2146A0
-:101DD400F12000F0C3FD0120014600F0CBFD2146B7
-:101DE400012000F0C7FD2548012100F0CFFD214668
-:101DF400224800F0CBFD2248012100F0D3FD204809
-:101E0400214600F0CFFD63B64FF0FF3EB5462847AC
-:101E14009C32000884350008A9320008C03200084A
-:101E2400D932000807330008363300086633000847
-:101E340097330008C9330008FB3300082C3400082A
-:101E4400014550FE024550FE593400080040000888
-:101E54008B3400089E340008B6340008D6340008D9
-:101E6400034550FE4A350008044550FE6935000814
-:101E74007D350008003802400010E022FFC9FEF65C
-:101E8400337F7704082000F029F820B10548FEF7D5
-:101E9400FDFF102003E00448FEF7F8FF082000F0DF
-:101EA40005F81FE7FE3400082435000810B5044681
-:101EB400002000F0A7FD40EA04010020BDE8104026
-:101EC40000F090BD10B50446002000F09BFD20EA10
-:101ED40004010020BDE8104000F084BD10B50446A4
-:101EE400002000F08FFD204214BF0120002010BD0F
-:101EF40008B54FF08050012100F00CFD012000F0E6
-:101F040069FC0120FFF7EAFF20B90121BDE8084080
-:101F140000F068BD08BD7047022000F073BD0000EA
-:101F240008B5FFF7F9FF054B1968884204D0022071
-:101F3400BDE8084000F056BD08BD00BF840100089C
-:101F440000BEFDE71FB504460C2201A8FEF71CFCE9
-:101F540001AB03CB20601868A0602046616004B028
-:101F640010BD0068A0F10C035842584170470000AE
-:101F740080B50646174610480D461C46FEF76AFF14
-:101F84003846FEF767FF0D48FEF764FF3046FEF75C
-:101F940061FF0B48FEF75EFF2846FEF785FF2CB174
-:101FA4000848FEF757FF2046FEF754FF0648FEF7A1
-:101FB4006DFFFFF7C5FF00BF853500088E350008AB
-:101FC400913500088F350008843500081FB506AA2E
-:101FD40052F8044B039200921A462346FFF7C8FFB7
-:101FE4000CB41FB506AA52F8043B03920092014AAE
-:101FF400FFF7BEFF9335000807B500230093724630
-:10200400014BFFF7E3FF00BF9A350008744608B59B
-:102014000548FEF71FFF2046FEF746FF0348FEF77C
-:1020240035FFFFF78DFF00BFA23500088435000897
-:10203400BFF34F8F0449054BCA6802F4E0621343AF
-:10204400CB60BFF34F8FFEE700ED00E00400FA051C
-:1020540008B5FEF791FBFFF7EBFF08B5FFF7E8FFC4
-:10206400F0B50646002401202546034694421DD0BF
-:1020740011F804C000F1010EBCF1000F03D1735537
-:10208400774605460DE00133DBB2FF2B774606F8B1
-:1020940000C007D102F1FF3C644506D07355871C8C
-:1020A4007546012301343846E0E770467355F0BDA8
-:1020B40030B5C9B1C0430A44914213D011F8013B71
-:1020C4000A4D83EA000404F00F0455F8244084EA1E
-:1020D400101080EA131303F00F0355F8233083EA3A
-:1020E4001010E9E7C04330BD084630BDC82D0008D4
-:1020F400162358430138FDD1704710B504462CB15E
-:102104004FF47A70FFF7F4FF013CF8E710BD10B507
-:10211400B0FA80F400F027F801280CBFC4F11F00C6
-:10212400C4F1200010BD0A2A10B51BDD0C46302373
-:1021340004F8023B78234B701C220F239340034086
-:10214400D340092B01D8303302E00F2B02D8573388
-:10215400DBB200E02023043A04F8013B131DECD168
-:1021640000238B7210BD00F0AA33A0EB530000F0E3
-:10217400CC3300F0333000EB930000EB101000F090
-:102184000F3000EB102000EB104000F03F007047D0
-:102194002D4AD2F8883043F47003C2F888302B4BB0
-:1021A4001A68002142F001021A6099601A6822F04C
-:1021B400847222F480321A60254A5A601A6822F422
-:1021C40080221A60D9601A6C224942F080521A6443
-:1021D4000A6842F440420A609A689A609A689A606F
-:1021E4009A6842F480529A601B4A5A601A6842F014
-:1021F40080721A601968154A8901FBD5174B40F2A1
-:1022040003611960936823F003039360936843F0B8
-:10221400020393600D4B9A6802F00C02082AF9D16C
-:102224009A6822F400029A600D4AC3F884201A685E
-:1022340042F080621A60054B1B681B01FBD5024B00
-:102244004FF000629A60704700ED00E000380240F1
-:1022540010300024007000401040010F003C024088
-:1022640000300050C278037810B512B3164AD16812
-:102274004278C943C1F30221C1F10404E4B2A2408B
-:10228400D4B20F220A4181780A40224303F1604309
-:1022940003F561431201D2B283F8002303780122CB
-:1022A400590903F01F0302FA03F3084A42F82130E4
-:1022B40010BD5A09012103F01F03994002F12003C4
-:1022C400024A42F8231010BD00ED00E000E100E0F6
-:1022D400014B01229A60704700300240014B1860A4
-:1022E400186870470030024000EB81018842044BBB
-:1022F40003D050F8042B1A60F8E71868704700BF41
-:1023040000300240014B1868704700BF00300240A3
-:10231400044B9A6809B1104301E022EA0000986076
-:10232400704700BF002004E0044B1A69002ABFBFB5
-:10233400034A5A6002F188325A607047003C0240F6
-:1023440023016745024A136943F000431361704750
-:10235400003C0240014BD860704700BF003C024083
-:102364000E4BDA68D20310D4DA68D1060FD4DA68D7
-:10237400D2050ED4DA6812F0EF0F0CD1DB6813F03B
-:10238400020F14BF0820092070470120704706205F
-:102394007047022070470720704700BF003C02408E
-:1023A40007B509238DF80730FFF7DAFF8DF807002A
-:1023B4009DF80730012BF7D09DF8070003B05DF8B6
-:1023C40004FB000070B5064641B1012908D002297A
-:1023D4000CBF4FF400754FF4407503E00D4601E067
-:1023E4004FF48075FFF7DCFF09281ED10F4C2369D9
-:1023F40023F440732361216929432161236923F074
-:10240400F8032361236943F002031E432661236911
-:1024140043F480332361FFF7C3FF236923F00203EE
-:102424002361236923F0F803236170BD003C02405B
-:1024340070B505460E46FFF7B3FF092811D1094CC4
-:10244400236923F44073236123692361236943F0DF
-:10245400010323612E70FFF7A3FF236923F0010317
-:10246400236170BD003C024070B543688668856A8C
-:102474000468416B46EA0302C3681A4303691A43BA
-:1024840043691A4383691A43C3691A43036A1A43A3
-:10249400436A1343C26A2B431A43036B1343A200D8
-:1024A40002F120420B43082E136002BF136843F06D
-:1024B40040031360B1F5801F816B12D18CB14FF0D2
-:1024C40020435C681E6846F480161E601E6846F44D
-:1024D40080761E600E6924F47004013E44EA0654BA
-:1024E4005C608C690B6823434C6843EA04138C6872
-:1024F40043EA0423CC6843EA04430C69496943EA88
-:10250400045343EA0163B5F5804F536010D1C16BA6
-:1025140088690B680343486843EA0013886843EA00
-:1025240000230869496943EA005343EA016301E06F
-:102534006FF07043C2F8043170BD0000800000F1F8
-:10254400204019B1036843F0010302E00268024B22
-:1025540013400360704700BFFEFF0F00F0B50E6824
-:1025640000220123934003EA060E9E452AD155001A
-:1025740003230468AB40DB431C4004600C79076808
-:1025840004FA05FC013C4CEA0707012C076011D84A
-:1025940084684F791C4084608468AF402743876017
-:1025A400446824EA0E0444608C7947689440A4B2D9
-:1025B4003C434460C4682340C360CB79C468AB40E7
-:1025C4002343C3600132102ACBD1F0BD4FF6FF7311
-:1025D40003600023037143718371C37170470369FE
-:1025E400194214BF0120002070470AB101837047CB
-:1025F4004183704701F00703C90800EB810010B55F
-:102604009B00046A0F21994024EA01010162016AD6
-:102614009A401143016210BD08B5134B984207D18B
-:102624004FF40010012100F0B1F94FF4001014E050
-:102634000E4B984207D14FF48000012100F0A6F917
-:102644004FF4800009E00A4B98420BD14FF400008C
-:10265400012100F09BF94FF400000021BDE808407F
-:1026640000F094B908BD00BF005400400058004079
-:10267400005C00407FB5868826F03F060446360499
-:1026840068460D46360C00F0E9F8029A2C48B2FB75
-:10269400F0F081B20E43A68023882A4E23F0010372
-:1026A4001B041B0C23802B68B3420AD85B00013146
-:1026B400B2FBF3F39BB2032B89B298BF04232184AA
-:1026C40023E0EE884BF6FF718E421BBF19214B436A
-:1026D40003EB4303B2FBF3F315BF9BB2B2FBF3F37B
-:1026E40043F480439BB2C3F30B020AB943F00103E2
-:1026F4004FF4967101FB00F24FF47A7192FBF1F200
-:10270400013292B243F400432284A383238869896B
-:10271400AA889BB243F001032380238823F48163B6
-:1027240023F002031B040A431B0C13439BB22380B4
-:102734002A89AB8913439BB2238104B070BD00BFC7
-:1027440040420F00A086010041F288330360002359
-:1027540083804BF6FF72038143814FF48043C28030
-:1027640083817047038819B19BB243F0010303E0EE
-:1027740023F001031B041B0C03807047038819B169
-:102784009BB243F4806303E023F480631B041B0CBB
-:1027940003807047838A9AB2038B10B542EA0343DD
-:1027A40021F07F4404EA0300431A5842584110BD03
-:1027B400014B1860704700BF00300040014B586067
-:1027C400704700BF00300040014B9860704700BF65
-:1027D40000300040014B1860704700BF20000E42DB
-:1027E400034B5B68184214BF01200020704700BFF0
-:1027F40000700040064BB0F5402F15BF1A685A68A8
-:1028040042EA800042F4402214BF18605A607047C4
-:10281400007000400E4B1A68002142F001021A6059
-:1028240099601A6822F0A85222F410221A60094A08
-:102834005A60094AC3F8842002F18062C3F88820F0
-:102844001A6822F480221A60D960C3F88C10704789
-:102854000038024010300024003000201D4A9368E4
-:1028640003F00C03042B10B503D0082B03D01A4B30
-:1028740018E01A4B16E05168536811F4800F03F006
-:102884003F03516814BF154A134AB2FBF3F3114ACC
-:102894005268C2F30142C1F3881101324B43520022
-:1028A400B3FBF2F30B4A036093680D49C3F30313BC
-:1028B400CC5C0368E34043609468C4F382240C5DF9
-:1028C40023FA04F484609268C2F342328A5CD340EF
-:1028D400C36010BD003802400024F40040787D013C
-:1028E40001000020044B1A6B09B1104301E022EAF5
-:1028F40000001863704700BF00380240044B9A6B15
-:1029040009B1104301E022EA00009863704700BF58
-:1029140000380240044B1A6C09B1104301E022EA6A
-:1029240000001864704700BF00380240044B5A6C22
-:1029340009B1104301E022EA00005864704700BF67
-:1029440000380240044B1A6909B1104301E022EA3D
-:1029540000001861704700BF00380240044B5A69F8
-:1029640009B1104301E022EA00005861704700BF3A
-:1029740000380240044B9A6909B1104301E022EA8D
-:1029840000009861704700BF00380240044B1A6A87
-:1029940009B1104301E022EA00001862704700BF49
-:1029A40000380240044B5A6A09B1104301E022EA9C
-:1029B40000005862704700BF003802404209012AF3
-:1029C400074B01D11B6803E0022A0CBF1B6F5B6F2E
-:1029D40000F01F0023FA00F000F00100704700BF70
-:1029E4000038024082B000230193054B0193019B00
-:1029F40003EB80000190019B196002B0704700BF97
-:102A04005028004082B000230193054B0193019BA1
-:102A140003EB80000190019B186802B0704700BF6F
-:102A24005028004008B5254B984207D14FF48050F8
-:102A34000121FFF7B7FF4FF4805039E0204B984253
-:102A440007D14FF480400121FFF7A0FF4FF48040ED
-:102A540009E01C4B98420BD14FF400400121FFF7D1
-:102A640095FF4FF400400021BDE80840FFF78EBFFA
-:102A7400154B984207D14FF400500121FFF792FF04
-:102A84004FF4005014E0114B984207D14FF48010DA
-:102A94000121FFF787FF4FF4801009E00C4B9842A7
-:102AA4000BD14FF400100121FFF77CFF4FF400100D
-:102AB4000021BDE80840FFF775BF08BD00300140A4
-:102AC40000380040003C0040003401400050014008
-:102AD4000054014003884A8810B503F441540B881C
-:102AE40013438A881343CA8813430A8913434A89C0
-:102AF40013438A891343CA89134323439BB2038034
-:102B0400838B23F400631B041B0C83830B8A0382D3
-:102B140010BD0023038043808380C38003814381ED
-:102B24008381C381072303827047038819B19BB251
-:102B340043F0400303E023F040031B041B0C038019
-:102B44007047808980B27047818170470389194238
-:102B540014BF0120002070477FB5038ACA889BB246
-:102B640023F440531343038283890E469BB223F418
-:102B7400B053098923F00C02B3880B4371890B43CA
-:102B84009BB213438381838AB2899BB223F440733B
-:102B94001343838204466846FFF760FE1A4B9C4247
-:102BA40003D003F580639C4201D1039D00E0029DA4
-:102BB400A38931681BB2002B4FF0190202FB05F206
-:102BC400B4BF4D008D00B2FBF5F5A2896426B5FBB8
-:102BD400F6F00001010912B2002A06FB1153ADBF41
-:102BE4001A01D90032313232B5BFB1FBF6F2B2FB71
-:102BF400F6F302F0070203F00F03B4BF10431843C7
-:102C040080B2208104B070BD00100140838919B1E5
-:102C14009BB243F4005303E023F400531B041B0C46
-:102C240083817047C1F3080181807047038819428A
-:102C340014BF01200020704710B5431E0A4491427E
-:102C440004D011F8014B03F8014FF8E710BD02441A
-:102C54000346934202D003F8011BFAE770470000D1
-:102C64000400000001030000010000000100000056
-:102C740003000000010000000F0000000F0000002E
-:102C840000000000AE2F00080018024010000000F1
-:102C940006040000B32F00080018024008000000DA
-:102CA40006030100B62F00080018024002000000CD
-:102CB40006010100BD2F00080018024004000000B6
-:102CC40006020100000000000000000001424F4F16
-:102CD400544C4F414445520000000000002A2A0091
-:102CE400000000000000000000000000005400404C
-:102CF40000040240400000000600040000040240FA
-:102D0400000200000900040000002000801A0600F0
-:102D1400004000001F200000000000000000000030
-:102D240000580040001402400200000001000400AA
-:102D340000140240010000000000040000004000F4
-:102D4400801A0600FFBF00002122000000000000DE
-:102D54000116000801000300820007008400070038
-:102D6400010003000200030040000300800007008C
-:102D740084000700000001000000000000000008BB
-:102D8400004000080080000800C00008000001089E
-:102D940000000208000004080000060800000808FB
-:102DA40000000A0800000C0800000E0800000800DB
-:102DB40010001800200028003000380040004800AF
-:102DC40050005800000000006410B71DC8206E3B7E
-:102DD400AC30D9269041DC76F4516B6B5861B24D1E
-:102DE4003C7105502083B8ED44930FF0E8A3D6D688
-:102DF4008CB361CBB0C2649BD4D2D38678E20AA0F0
-:102E04001CF2BDBD537475636B20627574746F6E70
-:102E140020726567697374657220697320696E76C0
-:102E2400616C69642C20636C656172696E672E0045
-:102E3400427574746F6E206973207075736865646D
-:102E440020617420626F6F740069636534306C7044
-:102E54002E630043444F4E45206E6F74206C6F7791
-:102E640020647572696E67207265736574004352DD
-:102E740045534554206E6F742068696768206475F3
-:102E840072696E6720726573657400446973706C4F
-:102E9400617920627573792D776169742074696D25
-:102EA400656F757420657870697265642100436F7D
-:102EB4006E6669677572696E672046504741206681
-:102EC400726F6D2062697473747265616D20696ECE
-:102ED40020666C6173682E2E2E004E6F204650477C
-:102EE400412062697473747265616D20696E206635
-:102EF4006C6173682E0046616C6C696E6720626158
-:102F0400636B20746F204E56434D2E00465047414C
-:102F14002043444F4E452074696D656F7574206578
-:102F240078706972656421004650474120636F6E72
-:102F340066696775726174696F6E206661696C6534
-:102F4400642E204973207468697320612062696764
-:102F5400626F6172643F0046504741207665727328
-:102F6400696F6E3A2000446973706C617920696EF0
-:102F7400697469616C697A6564206166746572203C
-:102F84000020726574726965732E00446973706CF5
-:102F9400617920696E697469616C697A6174696FB9
-:102FA4006E206661696C65642E004261636B005536
-:102FB400700053656C65637400446F776E006372D0
-:102FC400632E63006932632E6300493243206465D3
-:102FD40076696365204944206F7574206F662062AA
-:102FE4006F756E647320256420286D61783A2025FE
-:102FF4006429006F6E007370692E6300206973206A
-:103004006F7574736964652073797374656D206674
-:103014006C6173680D0A0073797374656D5F666C17
-:103024006173685F657261736528002C2000290D47
-:103034000A006661696C656420746F20657261734F
-:103044006520736563746F72200073797374656DA2
-:103054005F666C6173685F77726974652800666186
-:10306400696C656420746F2077726974652061648B
-:1030740064726573732000496E76616C69642066BE
-:1030840069726D77617265206465736372697074C7
-:10309400696F6E2100436865636B73756D6D696E4E
-:1030A40067206669726D77617265207570646174FA
-:1030B4006500496E76616C6964206669726D77613A
-:1030C40072652043524320696E2053504920666C38
-:1030D400617368210065726173655F6F6C645F661C
-:1030E40069726D776172650077726974655F6E6588
-:1030F400775F6669726D7761726500436865636BBB
-:1031040073756D6D696E6720002062797465730D47
-:103114000A00436865636B73756D202D2077616EBB
-:10312400746564200020676F7420004F75722069F5
-:103134006E7465726E616C20666C61736820636F77
-:103144006E74656E747320617265206261642028F8
-:10315400636865636B73756D206661696C6564296A
-:10316400212054686973206973207265616C6C79DD
-:103174002062616421004F75722070726576696FF8
-:103184007573206669726D7761726520757064610C
-:103194007465206661696C65642C2061626F727469
-:1031A400696E67207570646174652E004E657720C2
-:1031B4006669726D776172652069732061766169F1
-:1031C4006C61626C6521004C6F6164696E6720728A
-:1031D40065636F76657279206669726D7761726571
-:1031E400004661696C656420746F206C6F616420B3
-:1031F4007265636F76657279206669726D77617244
-:10320400652C20737472696B65206F6E652E205473
-:10321400727920616761696E2E004661696C65642C
-:1032240020746F206C6F6164207265636F766572C1
-:1032340079206669726D776172652C207374726986
-:103244006B652074776F2E205472792061676169F1
-:103254006E2E004661696C656420746F206C6F612A
-:1032640064207265636F76657279206669726D7722
-:103274006172652C20737472696B65207468726561
-:10328400652E20534144205741544348004841523D
-:1032940044204641554C5400657869742073746128
-:1032A4006E64627900205F5F5F5F20202020202011
-:1032B4002020202020202020205F5F002F5C202061
-:1032C4005F605C20202020202020202020202F2729
-:1032D4005F5F605C005C205C2C5C4C5C5F5C20206D
-:1032E40020205F5F5F202F5C205C2F5C205C20200F
-:1032F4005F5F20205F5F20205F5F20205F5F2020D2
-:103304005F5F00205C2F5F5C5F5F205C20202F27C5
-:10331400205F20605C205C205C205C205C2F5C20B3
-:103324005C2F5C205C2F5C205C2F5C205C2F5C207D
-:103334005C002020202F5C205C4C5C205C2F5C20F7
-:103344005C2F5C205C205C205C5F5C205C205C204B
-:103354005C5F2F205C5F2F205C205C205C5F5C2026
-:103364005C002020205C20605C5F5F5F5F5C205C11
-:103374005F5C205C5F5C205C5F5F5F5F2F5C205C58
-:103384005F5F5F785F5F5F2F275C2F605F5F5F5FCA
-:10339400205C00202020205C2F5F5F5F5F5F2F5C3C
-:1033A4002F5F2F5C2F5F2F5C2F5F5F5F2F20205CD0
-:1033B4002F5F5F2F2F5F5F2F202020602F5F5F5FC5
-:1033C4002F3E205C002020202020202020202020B0
-:1033D40020202020202020202020202020202020E9
-:1033E40020202020202020202020202020202020D9
-:1033F4002F5C5F5F5F2F00202020202020202020D2
-:1034040020202020202020202020202020202020B8
-:1034140020202020202020202020202020202020A8
-:1034240020205C2F5F5F2F004C61737420666972EB
-:103434006D7761726520626F6F742077617320739A
-:103444007461626C653B20636C6561722073747295
-:10345400696B657300486F6C6420646F776E2055E8
-:1034640050202B204241434B20666F72203520733D
-:103474006563732E20746F20666F7263652D626FAF
-:103484006F7420505246004669726D7761726520F0
-:10349400697320657261736564005761746368645D
-:1034A4006F6720636175736564206120726573655D
-:1034B4007400536F667477617265206661696C7518
-:1034C400726520636175736564206120726573653C
-:1034D40074004661696C656420746F207374617252
-:1034E40074206669726D776172652C2073747269D9
-:1034F4006B652074687265652E004661696C65644D
-:1035040020746F207374617274206669726D7761C0
-:1035140072652C20737472696B652074776F2E004A
-:103524004661696C656420746F20737461727420E1
-:103534006669726D776172652C20737472696B654C
-:10354400206F6E652E00466F7263652D626F6F7417
-:10355400696E67207265636F76657279206D6F643A
-:10356400652E2E2E00426F6F74696E672066697235
-:103574006D77617265204020002E2E2E0D0A0D0AF3
-:10358400004153534552543A20002020003A004150
-:103594005353455254004153534552544E002A2A22
-:1035A4002A20575446200053544D33320053544D6F
-:1035B4003332207065726970686572616C206C6961
-:1035C4006272617279207472697070656420616ED0
-:1035D400206173736572740043524F414B204F4F07
-:0435E4004D00000096
-:1035E800FF000000000102030401020304060708AB
-:0435F80009000000C6
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_spalding_evt@1431479105.hex b/bin/boot/nowatchdog_boot_spalding_evt@1431479105.hex
deleted file mode 100644
index d706ceb0d9..0000000000
--- a/bin/boot/nowatchdog_boot_spalding_evt@1431479105.hex
+++ /dev/null
@@ -1,2745 +0,0 @@
-:020000040800F2
-:1000000068200020B50100080102000899180008C6
-:1000100001020008010200080102000800000000BF
-:1000200000000000000000000000000001020008C5
-:10003000010200080000000001020008010200089F
-:100040000102000801020008010200080102000884
-:100050000102000801020008010200080102000874
-:100060000102000801020008010200080102000864
-:100070000102000801020008010200080102000854
-:100080000102000801020008010200080102000844
-:100090000102000801020008010200080102000834
-:1000A0000102000801020008010200080102000824
-:1000B000010200080102000801020008C51300083F
-:1000C000D1130008DD130008E9130008010200083D
-:1000D00001020008010200080102000801020008F4
-:1000E00001020008010200080102000801020008E4
-:1000F00001020008010200080102000801020008D4
-:1001000001020008010200080102000801020008C3
-:1001100001020008010200080102000801020008B3
-:1001200001020008010200080102000801020008A3
-:100130000102000801020008010200080102000893
-:100140000102000801020008010200080102000883
-:100150000102000801020008010200080102000873
-:100160000102000801020008010200080102000863
-:100170000102000801020008010200080102000853
-:040180000102000870
-:1001840041A3525576332E302D6265746131312D81
-:1001940038342D673532376464626500000000002E
-:0F01A4000000000035323764646265000000011E
-:1001B400002100F004B80C4B5B58435004310B4849
-:1001C4000B4B42189A42FFF4F6AF0A4A00F003B808
-:1001D400002342F8043B084B9A42FFF4F9AF01F0C4
-:1001E4008DFE01F089FB704730AB00080000002051
-:1001F400140000201400002068000020FFF7FEBF58
-:1002040030B501208BB002F0C5FA002401902546D8
-:10021400E0B200F0BBFB01AB08B9185519E01A5D58
-:10022400042A10DD164800F025FD02A920220198B9
-:1002340001F02CFE02A800F01DFD0120002102F0B7
-:1002440099FA00201AE00132D2B2052A1A55A8BF41
-:1002540001250134042CDBD1019C54B1094800F080
-:1002640009FD204602A9202201F010FE02A800F098
-:1002740001FD0120214602F07DFA28460BB030BD75
-:1002840008A4000834A4000808B500F087FA80F038
-:100294000100C0B208BD000008B54FF480610348F6
-:1002A40002F063F8003018BF012008BD00180240B6
-:1002B4002DE9F0434A4D89B0284600F00BFD28464D
-:1002C4000D21052208AE02F05BF8052228460E2116
-:1002D40002F056F84FF4005346F81C3D0024012761
-:1002E4004FF00209284631468DF80A408DF80B403C
-:1002F4008DF808908DF8097001F0EEFF4FF48043FB
-:1003040028463146019301F0E7FF4FF48053284615
-:10031400314601934FF400788DF808408DF80A4077
-:1003240001F0DAFF284631468DF808408DF80B704D
-:10033400CDF8048001F0D0FF4FF4806328463146A5
-:1003440001938DF808408DF80B4001F0C5FF4FF480
-:1003540080732846314601938DF808708DF80B4060
-:1003640001F0BAFF4FF40043284631460193A5F546
-:1003740044451C4E8DF80A708DF80B4001F0ACFF1B
-:1003840039464FF4001002F099F9174B33602846B0
-:1003940002F010FA03A802F084FA4FF44043ADF8D7
-:1003A4000C3039464FF482733068ADF80E30ADF836
-:1003B4001040ADF81290ADF81470ADF8168001F04D
-:1003C40019F803A9ADF818002846ADF81A4002F050
-:1003D40049FA2846394602F070FA09B0BDE8F083BC
-:1003E40000180240140000200024F40008B5022084
-:1003F40001F036FD012000F0B7FA022001F030FDD3
-:100404000120BDE8084000F09DBA000010B5044684
-:100414000548022102F05FFA0028F9D0214602487B
-:10042400BDE8104002F055BA0054014038B501222D
-:1004340004460D4628484FF4807101F09CFF0120CA
-:1004440001F00EFD24484FF40041002201F093FF17
-:100454004FF480710022204801F08DFF012001F04B
-:10046400FFFC4FF400411C48012201F084FF0120ED
-:1004740001F0F6FC18484FF4007101F076FF18B152
-:100484001648174A68210AE013484FF4004101F066
-:100494006CFF08B1254404E01048124A692101F0B8
-:1004A40099FCAC4204D014F8010BFFF7AFFFF8E756
-:1004B40009484FF48071012201F05DFF08240020F7
-:1004C400FFF7A4FF013CFAD103484FF40071BDE8E3
-:1004D400384001F04ABF00BF001802404DA4000894
-:1004E40057A4000872A4000810B54FF480710446A4
-:1004F4000022054801F03FFF642001F0ABFC2046D8
-:10050400BDE81040FFF782BF0018024008B5074855
-:10051400802102F0E0F90028F9D105484FF48071F8
-:100524000122BDE8084001F026BF00BF005401408D
-:100534000018024010B540F2F514FFF7ADFE50B1BB
-:10054400013C04D1054800F095FB204610BD642011
-:1005540001F080FCF1E7012010BD00BF8FA400086A
-:1005640010B504460420FFF7BFFF2046FFF74EFFF7
-:10057400BDE81040FFF7CABF10B504460120FFF7DD
-:10058400B3FFE0B2FFF742FFC4F30720FFF73EFFDB
-:10059400C4F30740FFF73AFF200EFFF737FFBDE82B
-:1005A4001040FFF7B3BF000010B5FFF781FE1848F5
-:1005B40047F6DE01FFF73AFFFFF718FF002401209A
-:1005C400FFF7CEFFFFF7B6FF78B10320FFF78CFFEC
-:1005D400FFF79CFF0F4800F063FB204600F06EFB22
-:1005E4000D48BDE8104000F045BB094847F6DE0160
-:1005F4000134FFF71BFF152CE1D1084800F03AFB4A
-:100604000220FFF771FFBDE81040FFF77FBF00BF76
-:10061400E6290008B2A40008CDA40008D7A4000865
-:1006240008B55D224B1C504300EB5300074BB0FB55
-:10063400F1F01A78C0B2824207D01870FFF79CFF1D
-:100644000220BDE80840FFF78BBF08BD0000002072
-:1006540008B5FFF791FF0320BDE80840FFF780BF0E
-:1006640008B50220FFF740FFBDE80840FFF74EBF82
-:1006740001F1C04102F0A4B970B543489AB000F04A
-:1006840029FB424800F026FB414800F023FB414B84
-:1006940093E8030001AC84E803003C48214601F0E0
-:1006A4001BFE3A480421012201F065FE00250223C5
-:1006B400029535488DF80830072103230C228DF864
-:1006C4000930019501F05CFE80232F4801932146F7
-:1006D40001F002FEEBB2022B04D02C48A9B20C228A
-:1006E40001F04EFE0135102DF4D14FF6FB7327486F
-:1006F4000193214601F0F0FD0226314601362448DB
-:100704000C22B6B201F03CFE102EF6D14FF6FC736B
-:1007140021461F48019301F0DFFD042100221B48FC
-:100724001D4D01F028FE0A2001F094FB0122042152
-:10073400164801F020FE1E2001F08CFB012001462A
-:1007440001F0A4FF0FCD03AC0FC495E8070084E8C3
-:100754000700402200210AA802F03BF902230B9370
-:1007640008230C934FF4805312934FF400531393C4
-:100774000AA803AB18930D9601F02CFD002001216B
-:1007840001F09AFD1AB070BD00040240000C024052
-:1007940000100240C4A20008CCA200080E4B98220C
-:1007A4001A80A3F68A231B88DBB2512B07D10B4B8B
-:1007B4001888C0B2B0F152025042504100E000200B
-:1007C40030B1074B1888C0B2B0F1590358425841B0
-:1007D400014BF0221A807047AA0A006022000060D0
-:1007E4002400006002460B460420502100F0C9BDDD
-:1007F40002460B460420502100F0D8BD032873B5EF
-:100804000E4603D0042804D001F0FAFA14251C4C37
-:1008140001E01C4C162528460DF10701FFF7E2FF05
-:1008240008B900202AE02378AEB10BB1013323E0EC
-:100834009DF8071021F0060141F0020128468DF8C9
-:100844000710FFF7D5FF0028EBD001250320257002
-:1008540001F006FB11E05AB2012A0CDC9DF80710E6
-:10086400284601F0F9018DF80710FFF7C1FF0028B1
-:10087400D7D0267001E0013B2370012002B070BD87
-:10088400180000201900002073B5254800F022FA52
-:1008940002254FF410730024012621480093694671
-:1008A4008DF804508DF805508DF806608DF80740DA
-:1008B40001F012FD1A480621042201F061FD042210
-:1008C4000921174801F05CFD154800F01DFA154890
-:1008D40000F000FA42F20C036946124800938DF8C6
-:1008E40005508DF804608DF806408DF8074001F03E
-:1008F400F3FC0C4800F008FA042000F0DFFC20466A
-:100904006946FFF76FFF9DF80050B54205D10320FB
-:100914002946FFF773FF284600E0204602B070BD69
-:10092400000402400014024010B50446042000F004
-:10093400C5FC21460420FFF761FF0420BDE81040F8
-:1009440000F0EABC38B5074C0546204600F0C2F971
-:1009540020462A46042101F00EFD2046BDE8384019
-:1009640000F0D2B90014024038B5074C05462046C1
-:1009740000F0B0F920462A46082101F0FCFC20468C
-:10098400BDE8384000F0C0B90014024038B5094C45
-:1009940004EB0014606800F09DF92189606801F09F
-:1009A400E4FC0546606800F0AFF9D5F1010038BFFA
-:1009B400002038BDE8A2000838B500242546E0B27E
-:1009C400FFF7E4FFA04001340543042CEDB2F6D157
-:1009D400284638BD73B54FF480400121154C01F011
-:1009E4006DFE04F1400654F80A0C00F073F96846F1
-:1009F40001F0B2FC02238DF80530237854F80A0C78
-:100A04008DF80730694654F8063C009300258DF8AC
-:100A14000450103401F060FC54F81A0C00F074F91E
-:100A2400B442E0D14FF48040294601F047FE02B0C1
-:100A340070BD00BFF6A2000808B5054B1B781BB9B2
-:100A44000448322101F0D2F9BDE8084001F002BBAC
-:100A54001A0000200AA50008114B1B7870B5054642
-:100A64000C461BB90F48382101F0C0F9032906D9F7
-:100A74008E083146FFF7E0FFB6003544A41B1CB9CD
-:100A8400BDE8704001F0F4BA00231846EA5C013373
-:100A9400A34242EA0020F9D1BDE8704001F0D4BA83
-:100AA4001A0000200AA50008024B1A780AB901228C
-:100AB4001A7070471A00002008B5084B1A781AB942
-:100AC40007482B2101F092F901214FF4805059700D
-:100AD40001F0D0FDBDE8084001F0B0BA1A000020D2
-:100AE4000AA5000808B5074B1A781AB90648512117
-:100AF40001F07CF9002159704FF48050BDE80840A2
-:100B040001F0B8BD1A0000200AA5000870B50C4613
-:100B14000546A608FFF7D0FF28463146FFF78CFFAD
-:100B240004F0030105EB8600FFF796FF0446FFF788
-:100B3400D9FF204670BD70B5A0B00D460646FFF73C
-:100B4400BBFF2C467119802CC4EB0101684608D9FF
-:100B54008022FFF78DFD68462021FFF76DFF803C62
-:100B6400F0E72246FFF784FD21466846FFF774FF4D
-:100B74000446FFF7B7FF204620B070BD2DE9F041D1
-:100B8400284C86B0204600F0A5F84FF480200121BF
-:100B940001F088FD20460A21072201F0F1FB06AE90
-:100BA400072220460B2101F0EBFB002501274FF023
-:100BB40002084FF48063204669468DF8065046F8D3
-:100BC400183D8DF807708DF804808DF8058001F0CC
-:100BD40083FB4FF400632046694600938DF804803C
-:100BE40001F07AFBADF80C50ADF80E50ADF8105092
-:100BF400ADF814500C4D4FF46133029328460C2386
-:100C040002A9ADF8123001F06DFE2846394601F014
-:100C1400C1FE204600F078F8044B1F7006B0BDE812
-:100C2400F08100BF00080240004800401C00002082
-:100C3400084B1B7810B504465BB10748402101F00E
-:100C4400B9FE0028F9D021460348BDE8104001F060
-:100C5400ADBE10BD1C0000200048004008B5FFF7E1
-:100C6400E7FF0348402101F0A5FE0028F9D008BDA4
-:100C740000480040094B1B7810B573B1441E14F8AA
-:100C8400010F10B1FFF7EAFFF9E70D20FFF7E6FFC8
-:100C94000A20BDE81040FFF7E1BF10BD1C00002092
-:100CA400054B1B7810B533B1441E14F8010F10B175
-:100CB400FFF7D4FFF9E710BD1C0000201FB50C227C
-:100CC40001A901F0E3F801A8FFF7EAFF05B05DF818
-:100CD40004FB000000F13F4000F57E00C0F38720D4
-:100CE40008280BD8064A135C591C115433B9054B18
-:100CF40001211A6B01FA00F010431863704700BF1A
-:100D04001D0000200038024000F13F4000F57E0045
-:100D1400C0F3872008280ED8074A135C5BB1013B57
-:100D2400DBB213543BB9054B01211A6B01FA00F0F5
-:100D340022EA0000186370471D00002000380240BA
-:100D440002460068838823F4E0631B041B0C838041
-:100D540003889BB243F40073038008230020517579
-:100D640013751076704737B504460D46FFF7B2FF8A
-:100D74000023204669468DF804308DF805308DF83F
-:100D84000730009501F0A8FA2046FFF7BDFF03B035
-:100D940030BD00000A4B10B5342400FB0434236B2F
-:100DA4006BB10A2001F05CF86068A168FFF7DBFF13
-:100DB40020696169FFF7D7FF236B0120984710BDB5
-:100DC40030A30008F7B5044616460D461F46FFF744
-:100DD40081FF022001238DF804008DF805008DF8B1
-:100DE40006302046002369468DF80730009501F04F
-:100DF40073FA204631463A4601F0C2FA2046FFF71C
-:100E040083FF03B0F0BD0000037D082B10B504463A
-:100E140007D10268938823F4C0631B041B0C9380DE
-:100E240083E0434A006802EB8303996E01F07CFB84
-:100E340000287AD0237D072B71D8DFE803F0040B58
-:100E44001A22323A596D227A236802F0FE021A827B
-:100E5400012305E02368A27A1A82627A12B102237E
-:100E6400237562E09A8892B242F480629A800623E3
-:100E7400F6E723681A8892B242F480721A80032338
-:100E8400EEE7237A226843F001031382E37A012B0D
-:100E940005D1138823F480631B041B0C13800423E3
-:100EA400DEE723689A8892B242F480629A8005232E
-:100EB400D6E72368227B198A23699954237BE27A33
-:100EC4000133DBB2591C9142237307D12268138882
-:100ED40023F480631B041B0C138026E0934224D16B
-:100EE4002268938823F480631B041B0C938013E013
-:100EF400217B236922685B5C1382237BE17A0133C3
-:100F0400DBB29942237310D1938823F480631B04CA
-:100F14001B0C93800723A3E72046012101E0204610
-:100F24000021BDE81040FFF70BBF002010BD00BF3B
-:100F340030A300087FB51D4E1C2303FB0063054648
-:100F44001B790BB9FFF726FF194B342405FB043436
-:100F54006068A168A289A37BFFF734FF228BA37E7C
-:100F640020696169FFF72EFFE069012101F09AFB16
-:100F7400684601F0B3FA0F4A236A009393424FF490
-:100F84008063ADF80A304FF01C0303FB05F588BFFE
-:100F9400626A705988BFADF80620694601F030FADC
-:100FA4007059012101F0A8FA04B070BD2800002096
-:100FB40030A30008A086010073B504460E46002540
-:100FC400FFF788FE0123204669468DF80430009619
-:100FD4008DF805508DF8075001F07EF92046B1B226
-:100FE4002A4601F0C8F92046FFF78EFE02B070BD14
-:100FF400094B10B5342400FB0434236B5BB100208F
-:1010040098476068A168FFF7D7FF20696169BDE868
-:101014001040FFF7D1BF10BD30A300081C23104AB5
-:10102400434370B50546D058D61801F0BBF90D4BB3
-:10103400342405FB04340021E06901F033FB3379E7
-:1010440023B92846BDE87040FFF7D2BF6068A168A5
-:10105400FFF789FE20696169BDE87040FFF783BE30
-:101064002800002030A300082DE9F74F4A4E9B4684
-:1010740096F838300F469246B0461BB9474840F2BE
-:10108400951104E0042804D944484FF4CB7100F0CE
-:10109400ADFE434B18444FF01C0990F8885009FBEF
-:1010A40005F906EB090423790BB9002071E056F821
-:1010B4000900038B980713D49DF830306772E372EC
-:1010C40000270D9B84F808A084F80AB027732775BD
-:1010D4002361E78256F80900012101F019FA20E0A2
-:1010E4002846FFF79BFF2846FFF724FF56F8092000
-:1010F4002C48138B9907DFD50138FAD1D5E7227E26
-:1011040022B1019A511E0191002AF8D100222276BF
-:10111400019A02B3227D082A13D1677D237D082B0F
-:1011240026D023681A8892B242F480721A809A8870
-:1011340092B242F440729A8001222276194A0192B4
-:10114400DFE7E28AB2F57A7F05D20132E28201203A
-:1011540000F086FEE2E79A8822F4E0621204120CA0
-:101164009A801A8892B242F400721A800823237576
-:101174001C236B4358F803100A4B0A8B920707D5BC
-:10118400013BFAD12846FFF749FF2846FFF7D2FE74
-:10119400384603B0BDE8F08F2800002010A50008F1
-:1011A40030A3000880841E00017D0368082906D14D
-:1011B4009A8822F480721204120C9A8036E09A8A79
-:1011C400120505D59A8A22F400621204120C9A823E
-:1011D4009A8AD20505D59A8A22F480721204120CD6
-:1011E4009A829A8A52051ED59A8A22F4806212043F
-:1011F400120C04299A820AD1032202759A8822F4D5
-:10120400E0621204120C9A80002303760EE0012996
-:1012140009D19A8822F4E06212040021120C0175AB
-:101224009A80017602E00021FFF78ABD0020704712
-:101234002DE9F3411E4D1F4C0026DFF87C802B68FE
-:1012440044F80C3C1C2202FB0682002304F8083CF0
-:1012540013760822227295F828208DF8042001279D
-:101264000C2201A8237004F8013C63608DF805206A
-:101274008DF806308DF8077000F0AAFE95F8293035
-:101284008DF8043001A800F0A3FE3E4454F80C0C81
-:1012940001F088F8022E05F1340504F11C04CCD1C8
-:1012A400384688F83870FFF7A3FE02B0BDE8F08135
-:1012B40030A300083400002028000020124A13B58F
-:1012C40092F83810034621B9104840F2331100F067
-:1012D4008DFD042807D9052200920C480C4A40F2DF
-:1012E400351100F077FD0B490B441C2493F888005A
-:1012F40004FB002423790BB9FFF71CFE2379013387
-:10130400237102B010BD00BF2800002010A5000802
-:1013140016A5000830A3000808B5104B93F8382030
-:101324001AB90F4840F2451104E0042804D90C48C6
-:101334004FF4A37100F05AFD0A4A10441C2290F89D
-:10134400880002FB003213793BB1013BDBB213711D
-:101354001BB9BDE80840FFF761BE08BD28000020A6
-:1013640010A5000830A3000873B5069C00930E4630
-:1013740015460194012132462B46FFF775FE02B053
-:1013840070BD07B500930123FFF7EEFF03B05DF8CE
-:1013940004FB73B5069C00930E4615460194002188
-:1013A40032462B46FFF760FE02B070BD1FB504AC99
-:1013B40004F8013D01230094FFF7EBFF04B010BDD6
-:1013C4000148FFF721BD00BF280000200148FFF7B6
-:1013D400EBBE00BF280000200148FFF715BD00BF89
-:1013E400440000200148FFF7DFBE00BF4400002096
-:1013F400FFF79ABA30B585B004460D46684601F049
-:10140400F5F80DB9029805E0012D01D1039801E02A
-:1014140000F0F6FCB4EB500F0ED8B0FBF4F000F083
-:1014240029FD002802DC0748272103E0082804DD01
-:101434000448282100F0DAFC01200138C00080B201
-:1014440005B030BD42A50008B0F1006F10B50446E8
-:101454000BD20D48FFF724FC2046FFF72FFC0B4866
-:10146400FFF71EFC4FF0FF3010BD094A002352F86D
-:10147400041FA14202D851688C4202D301330B2BC2
-:10148400F5D1184610BD00BFBAA5000848A500084C
-:10149400BCA300082DE9F04705462D480F46164623
-:1014A4009946FFF7FDFB2846FFF708FC2948FFF79C
-:1014B400F7FB3846FFF702FC2748FFF7F1FB002F44
-:1014C4003FD02846FFF7C0FF0446781E2844FFF7A4
-:1014D400BBFF002C074637DB002835DBC4EB0008D4
-:1014E40008F101081EB1002041464A46B04700F009
-:1014F400D1FD1A4B012503EB440ABC421FDCF32047
-:1015040000F0DEFD0AEB4503002133F8020C00F085
-:101514000FFE09280BD01248FFF7C2FB2046FFF745
-:10152400CDFB1048FFF7A6FB00F0C2FD0CE01EB196
-:10153400284641464A46B04701340135DDE700F00C
-:10154400B7FD0120BDE8F0870020BDE8F08700BFAB
-:1015540063A5000877A500087AA50008F0A3000891
-:101564007EA50008ADAA00082DE9F84606461F48E6
-:1015740015468A461F46FFF793FB3046FFF79EFB4E
-:101584001B48FFF78DFB2846FFF798FB1948FFF728
-:1015940087FB00F07FFDF32000F092FD4FEAD519A0
-:1015A4000024AC421DD0A0191AF8041000F0F6FD76
-:1015B40009280DD01048FFF773FB3046FFF77EFB78
-:1015C4000E48FFF757FB00F073FD0020BDE8F886D6
-:1015D4002FB1630603D1E0094946089AB84701349C
-:1015E400DFE700F065FD0120BDE8F88696A5000858
-:1015F40077A500087AA50008AAA50008ADAA0008E6
-:1016040008B545F2555000F09BFF042000F09EFF02
-:1016140040F6FF7000F0A0FF002000F091FF4FF4AF
-:1016240080500121BDE8084000F028BD08B57D20A8
-:1016340001F08CF8003018BF012008BD4900FEF706
-:10164400EFBF4B0803EB5000FEF7EABF70B586B05E
-:101654000446FFF729FA01210020FEF7E1FF0420E8
-:1016640000F01EFB03A8214600F066FB03A800F06F
-:1016740072FB08B928480BE02848FFF7FBFA04F18D
-:101684000C000499FFF757FA059B984204D02448AC
-:10169400FFF7F0FA01203DE0049D2248FFF7EAFA43
-:1016A4002946214A21480023FFF7F4FE049E2048DE
-:1016B400FFF7E0FA002504F1C0411E4B00953246C5
-:1016C4000C311A48FFF750FF1B48FFF7E9FA04985A
-:1016D400FFF7F4FA1948FFF7E3FA04991348FFF700
-:1016E40015FA04461648FFF7DBFA0598FFF7E6FA01
-:1016F4001448FFF7D5FA2046FFF7E0FA1248FFF73F
-:10170400B9FA059B9C4204D01048FFF7B3FA0220B3
-:1017140000E0284606B070BDC3A50008E1A5000896
-:10172400FEA5000821A600084116000800000108D3
-:1017340034A600084716000847A6000855A6000866
-:101744005EA6000871A60008ADAA000877A60008E6
-:1017540008B5022000F0BCFAD8B3042000F0B8FAAF
-:1017640070B11C48FFF786FA042000F0A5FA0220A5
-:1017740000F0A2FA4FF40040BDE8084000F09CBA23
-:101784001548FFF777FA082000F096FA102000F0C9
-:1017940093FA202000F090FA402000F08DFA4FF4E4
-:1017A4008010FFF753FF022807D1082000F078FAD1
-:1017B400102000F075FA00F045FB042000F07CFADC
-:1017C400022000F079FA4FF40040BDE8084000F030
-:1017D40067BA08BDC2A60008F8A6000810B52548D7
-:1017E400FFF748FA4FF40010FFF730FF10B102285A
-:1017F4003AD809E0202000F05FFA402000F05CFABB
-:10180400802000F04DFA2FE0082000F049FA102063
-:1018140000F046FA202000F05BFA20B91648FFF7E2
-:1018240029FA202007E0402000F052FA58B9134862
-:10183400FFF720FA402000F033FA4FF4007000F074
-:101844002FFA00F0FFFA0E48FFF714FA082000F010
-:1018540033FA102000F030FA202000F02DFA402056
-:1018640000F02AFA002400E00124042000F024FA05
-:10187400204610BD13A700082DA7000866A700087E
-:101884009FA7000808B50248FFF7F4F900BEFEE779
-:10189400D9A700081EF0040F0CBFEFF30880EFF384
-:1018A4000980FFF7EFBF70471FB504461048FFF7E4
-:1018B400E1F901A90C22204600F0E8FA01A8FFF79B
-:1018C400D9F92046FEF7C4FEFFF776F8094B20F05D
-:1018D400040018701C46FFF76FF8237800F0FB0033
-:1018E400834201D000F0AEFA0A2000F0B9FAF2E720
-:1018F400CFA70008640000207FB54FF0805001217D
-:1019040000F0D0FE022000F033FE012807D10220AF
-:1019140000F038FE9248FFF7ADF900F098FA002184
-:101924004FF0805000F0BEFEFFF728F98D48FFF716
-:10193400A1F98D48FFF79EF98C48FFF79BF98C4875
-:10194400FFF798F98B48FFF795F98B48FFF792F961
-:101954008A48FFF78FF98A48FFF78CF98948FFF71F
-:1019640089F98948FFF786F9FFF762FCFEF78CFFD7
-:1019740000F0B8F900F0CEF900210C2201A801F022
-:1019840028F800F0C3F901A90C2200F07FFA01A89D
-:10199400FFF770F97348FFF76DF97248FFF76AF9BA
-:1019A4004FF4804000F094F990B17848FFF762F961
-:1019B4004FF4804000F080F9082000F07DF91020F9
-:1019C40000F07AF9202000F077F9402000F074F953
-:1019D400FEF752FEFEF7FEFFFEF7E6FDFEF710FCF3
-:1019E40008B16B4803E0FEF74FFC10B16948FFF7FC
-:1019F4005BFF00F08AF9802000F06AF918B18020BA
-:101A040000F05AF954E04FF4003000F061F9044654
-:101A140020B14FF4003000F04FF92CE10120FEF723
-:101A2400B5FFB0B12046FEF7B1FF90B15A48FFF7B9
-:101A340021F941F288340120FEF7A8FF98B1002073
-:101A4400FEF7A4FF78B1012000F00AFA013CF2D1BC
-:101A540011E1524B0CCB013301D0013203D1504878
-:101A6400FFF708F907E1FFF7E1FD18B3FFF7DEFD23
-:101A740010B14C48FFF7FEF84FF4007000F028F95D
-:101A840010B14948FFF7F6F84FF4007000F014F96C
-:101A9400102000F01DF9D0B14448FFF7EBF80820FE
-:101AA40000F00AF9102000F007F9FFF797FEF8B9E3
-:101AB4003F489CE74FF4007000F00AF90028D5D1A4
-:101AC400082000F0F9F8102000F0F6F80EE00820E5
-:101AD40000F0FEF820B13748FFF7CCF8102003E0FF
-:101AE4003548FFF7C7F8082000F0DAF8FFF730FEB2
-:101AF4004FF4005000F0ECF804464FF4805000F02E
-:101B0400E7F8400040EA84044FF4006000F0E0F895
-:101B1400E4B22043C3B2072B0DD14FF4006000F0B0
-:101B2400CBF84FF4805000F0C7F84FF4005000F0A9
-:101B3400C3F822485BE70133DBB2023B4FF4006099
-:101B4400052B41D8DFE803F03C4003403C4000F063
-:101B5400B3F84FF4805000F0AFF84FF4005033E086
-:101B6400E4A70008ADAA0008F1A7000808A8000827
-:101B740021A800084FA800087EA80008AEA8000805
-:101B8400DFA8000811A9000843A9000874A90008E7
-:101B9400014550FE024550FEA1A9000800000108BD
-:101BA400D3A90008E6A90008FEA900081EAA000897
-:101BB400034550FE46AA00086CAA0008044550FEDE
-:101BC40000F07AF84FF4805000F06AF8FFF718FD3F
-:101BD4002B4B2C485D681E68FFF762F82846FFF718
-:101BE4006DF82948FFF75CF800239A0002F160427F
-:101BF40002F5614201334FF0FF31082BC2F8801027
-:101C0400C2F88011F1D1214B4FF4801200241A63E1
-:101C14005C639C631C645C6400F0C4FC1C4801218C
-:101C240000F058FD21461A4800F054FDF12001212E
-:101C340000F05CFD2146F12000F058FD0120014632
-:101C440000F060FD2146012000F05CFD11480121F7
-:101C540000F064FD21460F4800F060FD0E480121AC
-:101C640000F068FD0C48214600F064FD63B64FF0B7
-:101C7400FF3EB54628470948FEF7FCFF15E700BFBD
-:101C84000000010892AA0008A6AA00080038024031
-:101C94000010E022FFC9FEF6337F7704AEAA0008E5
-:101CA40010B50446002000F075FD40EA0401002050
-:101CB400BDE8104000F05EBD10B50446002000F001
-:101CC40069FD20EA04010020BDE8104000F052BD87
-:101CD40010B50446002000F05DFD20420CBF00203A
-:101CE400012010BD08B54FF08050012100F0DAFC4E
-:101CF400012000F037FC0120FFF7EAFF20B90121A1
-:101D0400BDE8084000F036BD08BD7047022000F071
-:101D140041BD000008B5FFF7F9FF054B196888427B
-:101D240004D00220BDE8084000F024BD08BD00BF77
-:101D34008401000800BEFDE71FB504460C2201A87B
-:101D4400FEF796FC01AB03CB20601868A060204628
-:101D5400616004B010BD0068B0F10C0358425841F2
-:101D64007047000080B50546174610480E461C46CD
-:101D7400FEF796FF3846FEF793FF0D48FEF790FFF7
-:101D84002846FEF78DFF0B48FEF78AFF3046FEF724
-:101D940095FF2CB10848FEF783FF2046FEF780FF2D
-:101DA4000648FEF767FFFFF7C5FF00BFCDAA00088E
-:101DB400D6AA0008D9AA0008D7AA0008ADAA000824
-:101DC4001FB506AA52F8044B039200921A46234602
-:101DD400FFF7C8FF0CB41FB506AA52F8043B0392E0
-:101DE4000092014AFFF7BEFFDBAA000807B50023F3
-:101DF40000937246014BFFF7E3FF00BFE2AA00081D
-:101E0400744608B50548FEF74BFF2046FEF756FF1B
-:101E14000348FEF72FFFFFF78DFF00BFEAAA000873
-:101E2400ADAA0008BFF34F8F044A054BD16801F4F3
-:101E3400E0610B43D360BFF34F8FFEE700ED00E09A
-:101E44000400FA0508B5FEF70BFCFFF7EBFF08B535
-:101E5400FFF7E8FF1623584301387FF4FDAF7047BE
-:101E640010B504462CB14FF47A70FFF7F3FF013C30
-:101E7400F8E710BD10B5B0FA80F400F029F8012895
-:101E84000CBFC4F11F00C4F1200010BD0A2A30B5F4
-:101E94001DDD0C46302304F8023B78234B700023ED
-:101EA4009D00C5F11C050F22AA400240EA40092A00
-:101EB40001D8303202E00F2A02D85732D2B200E001
-:101EC4002022E2540133082BEAD100238B7230BD67
-:101ED40000F0AA33A0EB530000F0CC3300F0333011
-:101EE40000EB930000EB101000F00F3000EB10201B
-:101EF40000EB104000F03F00704700002D4BD3F87A
-:101F0400882042F47002C3F888202B4B1A68002101
-:101F140042F001021A6099601A6822F0847222F475
-:101F240080321A60254A5A601A6822F480221A60A4
-:101F3400D9601A6C42F080521A64214A116841F443
-:101F4400404111609A689A609A689A609A6842F46B
-:101F540080529A601B4A5A601A6842F080721A6072
-:101F64001968154A8901FBD5174B40F203611960C2
-:101F7400936823F003039360936843F00203936030
-:101F84000D4B9A6802F00C02082AF9D19A6822F4DF
-:101F940000029A600D4AC3F884201A6842F08062F5
-:101FA4001A60054B1B681B01FBD5024B4FF0006206
-:101FB4009A60704700ED00E00038024010300024C1
-:101FC400007000401040010F003C024000300050FF
-:101FD400C278037810B50AB3164A4478D268D2435B
-:101FE400C2F30222C2F10401C9B204FA01F10F24BE
-:101FF40044FA02F28478C9B222400A4303F16043EE
-:1020040003F561431201D2B283F80023037801225D
-:10201400590903F01F0302FA03F306E059090122E8
-:1020240003F01F0302FA03F32031034A42F821307C
-:1020340010BD00BF00ED00E000E100E0014B012213
-:102044009A60704700300240014B1860186870476E
-:102054000030024000EB81018842044B03D050F869
-:10206400042B1A60F8E71868704700BF003002407C
-:10207400014B1868704700BF00300240044B9A6857
-:1020840009B1104301E022EA00009860704700BFE4
-:10209400002004E0044B1A69002A04DA034A5A6057
-:1020A40002F188325A607047003C024023016745C0
-:1020B400024B1A6942F000421A617047003C024028
-:1020C400014BD860704700BF003C02400E4BDA68F9
-:1020D400D00310D4DA68D1060FD4DA68D2050ED44E
-:1020E400DA6812F0EF0F0CD1DB6813F0020F0CBFAB
-:1020F40009200820704701207047062070470220FD
-:1021040070470720704700BF003C024007B5092311
-:102114008DF80730FFF7DAFF8DF807009DF80730D8
-:10212400012BF7D09DF8070003B05DF804FB000015
-:1021340070B5064641B1012908D0022914BF4FF4F5
-:1021440040754FF4007503E00D4601E04FF48075CF
-:10215400FFF7DCFF09281ED10F4C236923F44073D9
-:10216400236121690D432561236923F0F803236169
-:10217400236943F002031E432661236943F4803339
-:102184002361FFF7C3FF236923F00203236123695B
-:1021940023F0F803236170BD003C024070B505468E
-:1021A4000E46FFF7B3FF092811D1094C236923F424
-:1021B4004073236123692361236943F0010323618D
-:1021C4002E70FFF7A3FF236923F00103236170BD81
-:1021D400003C024070B543688568846A0168426BBC
-:1021E40045EA0306C3681E4303691E4343691E434D
-:1021F40083691E43C3691E43036A1E43436A334310
-:1022040043EA0406C36A1E43036B334343EA0206EC
-:102214008B0003F12043082D1E6003D11D6845F097
-:1022240040051D60B2F5801F836B12D189B14FF058
-:1022340020425668156845F480151560156845F404
-:10224400807515601D6926F47006013D46EA055542
-:1022540055601A689D6915435A6845EA02159A68DB
-:1022640045EA0225DA6845EA02451A695B6945EAE6
-:10227400025242EA03624E1C4FF02043B4F5804FF1
-:1022840043F8262010D1C36B1A68986910435A6822
-:1022940040EA02109A6840EA02201A695B6940EA3F
-:1022A400025242EA036201E06FF07042014B43F8CC
-:1022B400212070BD040100A0800000F1204019B16C
-:1022C400036843F0010302E00268024B1340036019
-:1022D400704700BFFEFF0F002DE9F0410F68002397
-:1022E40001229A4002EA0705954230D15A0003249C
-:1022F40006689440E443264006600E79D0F800C096
-:1023040006FA02F8013E48EA0C0C012EC0F800C09F
-:1023140014D8866891F805C02640866086680CFA51
-:1023240002FC4CEA06068660466826EA0505456016
-:102334008D7946689D40ADB235434560C5682C40F3
-:10234400C460CD79C46805FA02F22243C260013345
-:10235400102BC5D1BDE8F0814FF6FF730360002355
-:10236400037143718371C3717047036919420CBFD0
-:102374000020012070470AB10183704741837047F0
-:1023840001F00703C90800EB810010B59B00046A43
-:102394000F21994024EA01010162016A9A40114324
-:1023A400016210BD08B5134B984207D14FF40010D9
-:1023B400012100F0B3F94FF4001014E00E4B9842E1
-:1023C40007D14FF48000012100F0A8F94FF48000F8
-:1023D40009E00A4B98420BD14FF40000012100F0B0
-:1023E4009DF94FF400000021BDE8084000F096B9C3
-:1023F40008BD00BF0054004000580040005C00408D
-:10240400F0B585B004468688324F68460D4600F024
-:10241400EDF802982A68304B26F03F063604B0FBEC
-:10242400F7F7360C1FFA87FC4CEA0606A6802188CB
-:1024340021F001010904090C9A4221800DD85300AE
-:10244400B0FBF3F39BB20CF1010C032B1FFA8CFCD1
-:1024540098BF0423A4F820C022E0E9884BF6FF7358
-:10246400994205D102EB4202B0FBF2F39BB206E0C3
-:1024740019235343B0FBF3F39BB243F48043C3F3F8
-:102484000B020AB943F001034FF4967257434FF419
-:102494007A7297FBF2F70137BFB243F40043278403
-:1024A400A38323886989AA889BB243F0010323800C
-:1024B400238823F4816323F002031B040A431B0CC7
-:1024C40013439BB223802A89AB8913439BB2238194
-:1024D40005B0F0BD40420F00A086010041F28833F0
-:1024E4000360002383804BF6FF72038143814FF422
-:1024F4008043C28083817047038819B19BB243F043
-:10250400010303E023F001031B041B0C0380704749
-:10251400038819B19BB243F4806303E023F480631E
-:102524001B041B0C03807047828A008B92B221F03B
-:102534007F4342EA00401840431A584258417047CA
-:10254400014B1860704700BF00300040014B5860D9
-:10255400704700BF00300040014B9860704700BFD7
-:1025640000300040014B1860704700BF20000E424D
-:10257400034B5B6818420CBF00200120704700BF6A
-:1025840000700040B0F5402F054B04D01A6842EAB1
-:102594008000186070475A6842F440225A607047BD
-:1025A400007000400E4B1A6842F001021A600022CB
-:1025B4009A60196821F0A85121F410211960094981
-:1025C40059600949C3F8841001F18061C3F8881087
-:1025D400196821F480211960DA60C3F88C207047EF
-:1025E4000038024010300024003000201D4B9A684F
-:1025F40002F00C02042A10B503D0082A03D01A4BA7
-:1026040018E01A4B16E059685A6811F4800F59689B
-:1026140014BF164B144B02F03F02B3FBF2F3114A02
-:102624005268C2F30142C1F3881101324B43520094
-:10263400B3FBF2F30B4903608B680D4AC3F3031336
-:10264400D45C0368E34043608C68C4F38224145D63
-:1026540023FA04F484608968C1F34231525CD340A4
-:10266400C36010BD003802400024F40040787D01AE
-:1026740001000020044B1A6B09B1104301E022EA67
-:1026840000001863704700BF00380240044B9A6B87
-:1026940009B1104301E022EA00009863704700BFCB
-:1026A40000380240044B1A6C09B1104301E022EADD
-:1026B40000001864704700BF00380240044B5A6C95
-:1026C40009B1104301E022EA00005864704700BFDA
-:1026D40000380240044B1A6909B1104301E022EAB0
-:1026E40000001861704700BF00380240044B5A696B
-:1026F40009B1104301E022EA00005861704700BFAD
-:1027040000380240044B9A6909B1104301E022EAFF
-:1027140000009861704700BF00380240044B1A6AF9
-:1027240009B1104301E022EA00001862704700BFBB
-:1027340000380240044B5A6A09B1104301E022EA0E
-:1027440000005862704700BF003802404309012B63
-:10275400074A01D1136803E0022B0CBF136F536FB8
-:1027640000F01F0023FA00F000F00100704700BFE2
-:102774000038024082B000230193054B0193019B72
-:1027840003EB80000190019B196002B0704700BF09
-:102794005028004082B000230193054B0193019B14
-:1027A40003EB80000190019B186802B0704700BFE2
-:1027B4005028004008B5254B984207D14FF480506B
-:1027C4000121FFF7B7FF4FF4805039E0204B9842C6
-:1027D40007D14FF480400121FFF7A0FF4FF4804060
-:1027E40009E01C4B98420BD14FF400400121FFF744
-:1027F40095FF4FF400400021BDE80840FFF78EBF6D
-:10280400154B984207D14FF400500121FFF792FF76
-:102814004FF4005014E0114B984207D14FF480104C
-:102824000121FFF787FF4FF4801009E00C4B984219
-:102834000BD14FF400100121FFF77CFF4FF400107F
-:102844000021BDE80840FFF775BF08BD0030014016
-:1028540000380040003C004000340140005001407A
-:10286400005401400B88028810B54C8823438C889F
-:102874002343CC8823430C8923434C8923438C89E9
-:102884002343CC8902F44152234313439BB2038074
-:10289400838B23F400631B041B0C83830B8A038246
-:1028A40010BD0023038043808380C3800381438160
-:1028B4008381C381072303827047038819B19BB2C4
-:1028C40043F0400303E023F040031B041B0C03808C
-:1028D400704781817047038919420CBF0020012091
-:1028E40070470000038ACA889BB230B523F4405372
-:1028F4000D46134303820989AB8882890B43698996
-:1029040092B20B4322F4B05222F00C029BB2134356
-:102914008381838AAA899BB223F44073134385B0CD
-:10292400838204466846FFF761FE194B9C4203D03C
-:1029340003F580639C4201D1039B00E0029BA289C2
-:1029440012B2002A2A684FF01901B4BF5200920053
-:102954005943B1FBF2F16423B1FBF3F21201100904
-:1029640003FB1011A08900B2002806DAC900323135
-:10297400B1FBF3F303F0070305E009013231B1FBC6
-:10298400F3F303F00F031A4392B2228105B030BD72
-:1029940000100140838919B19BB243F4005303E052
-:1029A40023F400531B041B0C83817047C1F30801FB
-:1029B40081807047038819420CBF002001207047B2
-:1029C40010B50023934203D0CC5CC4540133F9E71F
-:1029D40010BD02440346934202D003F8011BFAE7F8
-:1029E4007047FF004C617474696365006943456313
-:1029F4007562653220323031342E31322E32373026
-:102A0400353200506172743A206943453430554C74
-:102A1400314B2D434D33364100446174653A204DAA
-:102A2400617920313120323031352031393A313930
-:102A34003A35350000FF7EAA997E510001059200C7
-:102A44002062016F82000072007011000101000019
-:102A540000000000000000000010000080000000E2
-:102A640000000200000000008000000000000000E0
-:102A74000000010000080000000000000000000049
-:102A84000000000000000020000000000000000022
-:102A940000003400020000000000000000000000FC
-:102AA4000200000000000000000000000000000020
-:102AB40000000000000000004000000000000100D1
-:102AC40000000000400000000000000000000000C2
-:102AD40000040000000000000000000000000000EE
-:102AE400000000000000000580000000000000005D
-:102AF40000000003000000000000000000000000CF
-:102B040000000000000000000000000000000000C1
-:102B1400000000008000000000000200000004002B
-:102B24008000000200000000000000000008000017
-:102B34000000000000000000000000000000000091
-:102B44000000000000010000000000000C00000371
-:102B5400000300000000000000000000000000105E
-:102B64000000000000000000000000000000000061
-:102B74000000000000000000000000000000000051
-:102B84000000000000000000000000000000000041
-:102B94000000000000000000000000000000000031
-:102BA4000000000000000000000000000000000021
-:102BB40000000000000000000058000000000000B9
-:102BC40000000000000000000000000000000200FF
-:102BD400000000000E0800000000020000000000D9
-:102BE40000000000000000002020000000000000A1
-:102BF40000000000000000000000000000000000D1
-:102C040000000000000000000000000000000000C0
-:102C140000000000000000000000000000000000B0
-:102C2400000000000000000000000001000000009F
-:102C3400000003000000000100000000000000008C
-:102C44000000000000100000000000000000000070
-:102C540000000000000080000003000000000000ED
-:102C640003008000000300000000000000000008D2
-:102C74000000002C00000000000000000000000024
-:102C84000000000000000000000000000000180028
-:102C940000000002000000000000000000000078B6
-:102CA4000010000000000000000000000000000010
-:102CB4000000400000000000000000000000400090
-:102CC40000010000000000000000000400000000FB
-:102CD40000000000000000000000000000000000F0
-:102CE40000000100000000000000000000000100DE
-:102CF40000000000000000000000000810000000B8
-:102D0400000000000000000000000000000080053A
-:102D140080000000000000000000800000000000AF
-:102D24000000000000000008003000000000000067
-:102D340000000C3020008000000000000014280077
-:102D440000000000781800000020735A08000000FA
-:102D540000030002000000001DDF0C000000000062
-:102D64000C30000000000000000000366C00000081
-:102D7400004008FB0000001C025C00008000000012
-:102D84002C000000000000E0F100000000000C3006
-:102D940020000000000000000000000000002800E7
-:102DA4003808000000000058080000000007000276
-:102DB40000A000001C8F0C00000000000C3000007C
-:102DC400000000000000003400000000200008079C
-:102DD4000000003C3F490000010000003C0000806E
-:102DE40000000000F110000000000C302000000082
-:102DF40000000000020000000000100000000000BD
-:102E04002004017C00020000008300020000000690
-:102E1400168F0E00000000000C30000000000000BF
-:102E240000000000000000001000700B0000003CD7
-:102E34003D50020000000100B80000000000000046
-:102E4400F000000000000C30200000000000000032
-:102E5400001400000000000000E80000000006DE8E
-:102E64003C0200000003840200000266548F0C0040
-:102E7400000000000C300000000000000000000210
-:102E84002C00000000000001000000243BF038008A
-:102E9400000500003C00000003C20200F100000035
-:102EA40000000C30200000000000000000000000C2
-:102EB4000000000001E00000002002FE50000000BD
-:102EC400D9A38002000000001E8F0E100000000035
-:102ED4000C300000000000000000000000000000B2
-:102EE400001070E30100003C27E000000000B00087
-:102EF4003000000000000000F000000000000C3072
-:102F0400200000000000000000000000000000009D
-:102F1400800000000000280000000000D9B38002F7
-:102F2400000041C0168F0E00000000000C300000AD
-:102F3400000000000000000000000000000030E776
-:102F44002000000000000000000050A080000000ED
-:102F540000200000F010000000000C3020000000F1
-:102F64000000000000000048E000000070000400C1
-:102F74000000000000000000101380020000026046
-:102F8400168F0E00000000000C300000100000003E
-:102F9400000000000258F000000038072C00000078
-:102FA40000000000000008A0B8000000004002007B
-:102FB400F000000000000C302000000000000000C1
-:102FC40000000378A50230000000000000206C001F
-:102FD40000000000001023C000C003C01685560086
-:102FE400000000000C3000000000000000000000A1
-:102FF400034052201000700B2800000C3800000021
-:10300400000000C003C00000A060020550000000E2
-:1030140000000C3020000000000000000000014C03
-:10302400F0C000C000000000003C284E0F800000EB
-:1030340000C38002000000029C05A80000000000FC
-:103044000C3000000000000000000000001F0F20F2
-:10305400014000900000000400080F000000000080
-:1030640000000800004294DA5000000000000C3018
-:10307400200000000000000A000001C8F0C0004069
-:103084000400000A000005CC0F8000000007800245
-:10309400000001429C80F800000000000C30000099
-:1030A400000000000008000000000F2000400000A5
-:1030B400000800142C1F0F0000000000B8000000DE
-:1030C400094281F0F000000000000C3020000000F4
-:1030D4000000000000206548F0C01001000000005E
-:1030E400001C055E0F8000003005800200000146D0
-:1030F4005480F800000000000C30000000000000C4
-:103104000000000420200F20100000000000000C2C
-:10311400202A0F0000000000380000000002030015
-:10312400F000000000000C3020000000000000004F
-:1031340000060148F0C0000000000000000601DCA9
-:103144000F80000000070402000000601580F800F2
-:10315400000000000C30000000000000000000002F
-:1031640000200F2000000000000000003C300F0091
-:1031740000009000A800000000000200F000000021
-:1031840000000C302000000000000000000031E8C6
-:10319400F0C0000000000010002001C15A800000AF
-:1031A40000058402000000001F80F80000000000F9
-:1031B4000C300000000000000000000000000F20A0
-:1031C400000000000000001C3CECA5000000000012
-:1031D400380000000002C080F000000000000C3045
-:1031E400200000000000000010000168F0D0004042
-:1031F40000000000102001780F8000007815040200
-:10320400000101401790F800000000000C3000009D
-:10321400000000000000000000000F00000000009B
-:10322400000000043C100F00000000802800000093
-:10323400002001C0F000000000000C30200000005D
-:1032440000000000000631E85550000000000000B6
-:10325400000661EA0F80000079E17C3E0000026014
-:103264001F80F800000000000C3000000000000087
-:103274000000000000205500002800000000003C71
-:1032840028200F0000005900F43C00010042C30054
-:10329400F000000000000C30200000000000000CD2
-:1032A4000020040000000000000000000000066888
-:1032B4000840800079E023C000000200408F020033
-:1032C400000000000C3000000000000000081004A2
-:1032D40020000000000000000000003C234905001D
-:1032E400400008A003C000000042000F00000000DE
-:1032F40000000C30201020007A3C20000000001C4C
-:10330400F040000000180000000000000000000071
-:103314000003F954000000662FC5F000000000000F
-:103324000C30000000000803C09000002C10F001D5
-:10333400004000F70000000000000000000000B0A2
-:10334400C154000000003D05F000000000000C30F6
-:1033540020000000323C200A001E0200A540280084
-:103364000008000A0000000000002800000379FCA7
-:1033740008A001E681AF0400000000000C3000004A
-:1033840000000003C048000000405A012000F0077C
-:1033940000080000000000002000F003C2FC0280CE
-:1033A4000342C00F0000000000000C3020000000A9
-:1033B4003A3C204C0000281CF0401010001000047F
-:1033C40000003800000010008083FE0420C041404B
-:1033D40000000000000000000C30000000000003AA
-:1033E400C00000344000F001102000CF000C0800A1
-:1033F4000000000030001189FD0000C003600000DF
-:103404000000000000000C3020000000323C2000CE
-:1034140000140008F040000000000000000000005C
-:103424000000000000017A002008004781AF04007A
-:10343400000000000C30000000000803C00000364B
-:103444000010F00000000007000000000000000071
-:1034540000000007EA0000041424010F000000002B
-:1034640000000C3020000800723C20000000000A1C
-:10347400F0400000008000100000001EF04000003A
-:1034840038052DFC00000000018F0400000000003E
-:103494000C3000000B0A0003C00000000000F00024
-:1034A4000000F1BB020004000000F00000000889E5
-:1034B400BEFC2000A000000F0000000000000C3043
-:1034C40020040100723C2000100E380AF040004035
-:1034D40000000000100020000000004001817A80FC
-:1034E4000001426635800000000000000C3000003E
-:1034F40000800803C00000020010F0000000000D6E
-:103504003C0000340000000000000005C000200062
-:10351400004025A10000000000000C302004000A37
-:103524007A3C20001000001AF040000000A00400C3
-:103534000000001CF0400000000000000000140720
-:1035440001CC0220000000000C3000040500000340
-:10355400C00010000000F0000000D1F33C000000A7
-:103564000010F00000001000000000000800010C32
-:103574000008000000000C30200005007A3C200008
-:103584000000001AF040100050A004000020001CAD
-:10359400F060000001A063C10000100707C08010A4
-:1035A400000000000C300000050E0003C0001000F5
-:1035B4000000F0001000D9BB3C0000240000F00023
-:1035C400000000A003C00400000424800080000068
-:1035D40000000000000000007A3C200000262A5B66
-:1035E4004240004000000000001C00ED5A000004AE
-:1035F40001E000000002000000AF04000000000031
-:103604000000000000000803C1000014024CE200A6
-:10361400404000000000000001CC1A010000F090BE
-:10362400000000040000010F000000000000000082
-:10363400028005007A3C200A001E7078AF1000401A
-:103644000000000A0020006AA500280000A7EA0084
-:1036540000A00000418F04000000000000000200F0
-:1036640000800803C008003E2020AF100040000086
-:1036740000080004015055002000000F6C00008079
-:103684000003810F000000000000000003000000A0
-:103694001A15400C0016024C3042300000000004A1
-:1036A4004020396AA000100001933828004000032C
-:1036B400C000000000000000000000000000001531
-:1036C400400400000270B10090000000000C0034BF
-:1036D4006370F50010000080002820C06003C00063
-:1036E40000000000000000000000000007BC100003
-:1036F4000014287B4240000000000000000000FC91
-:103704000E02000000F5F8000800E00000000000D0
-:1037140000000000000000000000043C0020001431
-:10372400286CD100800000000000001428D00F0095
-:10373400000000FF81000000000000000000000005
-:10374400000000000000000007BC10000000625BE5
-:1037540042400000001000002014000AF040000065
-:103764005801FA010800000000EF04000000000006
-:10377400000000000000043C08000000665DE20058
-:10378400800000F00200E0000000F00000000000F3
-:10379400C20000000000010F000000000000000053
-:1037A40000000000802950040026647B4240000091
-:1037B40000000000863604000000000000012C8197
-:1037C40000000000000000000000000000000000F5
-:1037D4000000101680040026647DD10080000000E3
-:1037E4000000001428000000000000097C00000014
-:1037F40004000000000000000000000000000000C1
-:103804000000000000000258424040000000000098
-:103814002006005AF50000008005F80500000000AD
-:10382400200A540000000000000000000000000016
-:10383400000000000248E200000000000000000058
-:103844000340A000000050C1EC00000000021C0571
-:10385400A0000000000000000000001B00000000A9
-:1038640000000159014040000000000080000000F9
-:10387400000000007810000000000040000000007C
-:103884000000000000000000000A0000000000002A
-:103894000059A7000000000000000E000000000016
-:1038A400000008A00000000000000000000000006C
-:1038B4000000000000000180000000000000014A38
-:1038C400F0D000000008000000002E1CB10001022E
-:1038D40000186955000000024000000000000000CC
-:1038E40000000000008A0000000000002C190F00F6
-:1038F400044000070000000038DF7200028000D995
-:1039040042A800080007400000000000000000007A
-:103914000280050076A8000A000001C8F0C0280053
-:103924000008000A002003FCAF2328007818029541
-:1039340000B401E017CAF400000000000000020017
-:103944000100F4000008000000000F002000000740
-:103954000008201C0150DF00200008C1016800821B
-:1039640000201700A1000000000000000300001F59
-:103974003F99C480002061C8F0C0100000C0000C52
-:10398400001E001CF040300050A03BC1804203C721
-:103994009DCA50000000000000000300000DD03F4D
-:1039A400C00000042C200F003000310F000C000078
-:1039B4000000F000100000A043C0004401E43505FD
-:1039C40051000000000000000100001A1B191A1029
-:1039D40000060148F0E00100000000000120026838
-:1039E400A50000800010000000000167BDEA02008D
-:1039F4000000000000000100001032160200000068
-:103A040000200F0002000007000000042B505500A6
-:103A1400010000900000000000202E0F5000000064
-:103A2400000000000000010012DD1000000001E8A9
-:103A3400F0C0000080900000000005EE20020100AC
-:103A4400000DE005000A01668E8A020000000000F5
-:103A5400000000000108B6140A40000000000F0036
-:103A64000020709B000000002020200002800089BC
-:103A7400AC0000040002EF0FA000000000000000F2
-:103A8400000005801640500000000168F0C00000EE
-:103A940080000000000466CEA5000000000D6281D5
-:103AA4000000000716AA50000000000000000000FB
-:103AB40001001A29C860000000000F000000300552
-:103AC4003C000E3620F055000000000D40000000C0
-:103AD40000073C0AA00000000000000000000D8F59
-:103AE40093DD1600000605E85540000081900400AF
-:103AF400006039E87002000030057A010000080710
-:103B04004D8A000000000000000000000D1A32146D
-:103B14000020000020205500000091E33C000094A8
-:103B24000150F00000000099F80000080346D40F8B
-:103B34005000000000000000000008000000000C1D
-:103B44000020040000003000999004000036041C9A
-:103B5400F0400001000000000000004795EA00006A
-:103B64000000000000000000050000000008000440
-:103B7400200000001000999B3C000C142800F00069
-:103B8400000200800000000000242D0FA0000000AF
-:103B94000000000000000000000000000000200001
-:103BA40000000040000000000020054B70000000F1
-:103BB40000007BC100000003B59205000000000076
-:103BC40000000000000000000000000040000000B1
-:103BD40000400090000000242368F00000000080F2
-:103BE40043C00000000724CE0000000000000000D5
-:103BF400000000000000000000340000000000404D
-:103C04000000000A002002FABD03280001E00000C1
-:103C140000A00242CF81C0000000000000000000AC
-:103C2400000000000000002C2800000000400000FC
-:103C3400000800240160FD0820000100000000804D
-:103C4400006217C3C0040000000000000000000070
-:103C54000000000000000208500010000000000CEA
-:103C64000020641EF0401000000063C10000020345
-:103C740025AB9400000000000000000000000000DC
-:103C8400000000000050A00010000000000C002CF8
-:103C94002400F0001000000043C00000004017930F
-:103CA4008080000000000000000000000000000010
-:103CB4000000000000000000000000000026064E86
-:103CC400A5000000000000000000014035E8D40415
-:103CD40000000000000000000000000000000014CC
-:103CE40000000000000000000000000625F0550060
-:103CF40000000000000000000002A698E0000000A0
-:103D040000000000000000000000000000000000AF
-:103D14000000000000000000000072DCF50000005C
-:103D2400000000000010016000EF0400000000002B
-:103D3400000000000000000000000000000000007F
-:103D4400000000000000001C00F050000000000013
-:103D5400000000100000000F000000000000000040
-:103D6400000000000000000000200000000000002F
-:103D740000000000002066DEA50000000000000036
-:103D840000000200018F0410000000000000000089
-:103D9400000000000000003C0000000000000000E3
-:103DA4000000002423D0AA0000000000000000004E
-:103DB4000143C00F020000000000000000000000EA
-:103DC400000000000000027B100000000000000062
-:103DD4000E00701A8002000000000000000A0000BB
-:103DE40027E0540000000000000000000000000074
-:103DF40000000000024C2401000800000000000044
-:103E04000050400000000000000000000040240AB0
-:103E1400000400000000000000000000000000009A
-:103E24000000000000000100000000000000381C39
-:103E3400F0400000001000000000036007D4000000
-:103E4400000000000000000000000000000000006E
-:103E54000000000002000000000000342400F00014
-:103E6400000000D00000000001601680000800007F
-:103E74007200901101010100000000000000000028
-:103E840000001000000000000040000000000001DD
-:103E940000000000004000020000000000000800D4
-:103EA400000000000000000000000000000000000E
-:103EB400200000000000008000000000000200005C
-:103EC40000000000000000000000000000000000EE
-:103ED40008000000000000000000000000000000D6
-:103EE40000000000000000000000000000000000CE
-:103EF400000000010000000000000400F0000000C9
-:103F040000000000000000000000000000000000AD
-:103F1400000000000000000000000000000000009D
-:103F2400000000000000000000000000000000008D
-:103F3400000000000000000000000000000000007D
-:103F4400000000000000000000000000000000026B
-:103F5400000C000000000800000030000000000019
-:103F6400000000000000000000000000000000004D
-:103F7400000000000000000000000000000000003D
-:103F84000004000000000000100000000000000019
-:103F9400000000000000000000000000000000001D
-:103FA40000340000000000000000000000000000D9
-:103FB40000000000000000000000000000000000FD
-:103FC40000000000000000000000000000000000ED
-:103FD40000000000000000000000000000000000DD
-:103FE40000000000000000000000000000000000CD
-:103FF40000000000000000000000000000000000BD
-:1040040000000000000000000000080000000000A4
-:10401400002000000000000000000000000000007C
-:10402400000000000000000000000000000000008C
-:10403400000000000000000000000000000000007C
-:10404400000000000000000000000000000000006C
-:1040540000000000000000000000000200000B004F
-:10406400010000000000000C00000000000000003F
-:10407400000000000000000000000000000000003C
-:1040840000000000000000000001008008000100A2
-:10409400000200000008000000000000040000000E
-:1040A400000000000000000000000000000000000C
-:1040B40000000000000000000000000000000000FC
-:1040C40000000000000000000000000000000000EC
-:1040D40000000000000000000000000000000000DC
-:1040E400000000000000004000000000000100008B
-:1040F40000000000000000000000000000000000BC
-:1041040000000000000000000000000000000000AB
-:104114000000000000000001000000000002040094
-:10412400000000000000000000000000000000008B
-:10413400000000000000000000000000000000007B
-:1041440000000080000000000002000E00000000DB
-:1041540000007000000000000000000C30000000AF
-:10416400000000000000000000000000000000004B
-:10417400000000000000000000000000000000003B
-:10418400C00100F000000000000C3020000000001E
-:10419400000000000000000000000000000000001B
-:1041A4000000000000000000000000000000060104
-:1041B400C0F000000000000C30000000000000000F
-:1041C40000000000000000000000000000000000EB
-:1041D400000000000000000000000000000000F0EB
-:1041E40000000000000C302000000000000000006F
-:1041F40000000000000000000000000000000000BB
-:10420400000000000000000000000001C0F00000F9
-:104214000000000C3000000000000000000000005E
-:10422400000000000000000000000000000000008A
-:104234000000000000000001428000F000000000C7
-:10424400000C30200000000000000000000000000E
-:10425400000000000000000000000000000000005A
-:104264000000000000036041C0F000000000000CEA
-:10427400300000000000000000000000000000000A
-:10428400000000000000000000000000000000002A
-:1042940000000000003C0AF000000000000C302088
-:1042A400000000000000000000000000000000000A
-:1042B40000000000000000000000000000000000FA
-:1042C40000000021E5F000000000000C30000000B8
-:1042D40000000000000000000000000000000000DA
-:1042E40000000000000000000000000000000000CA
-:1042F4000000000000000000000C3020000000005E
-:1043040000000000000000000000000000000000A9
-:104314000000000000000000000000000000000099
-:10432400000000000000000C30000000000000004D
-:104334000000000000000000000000000000000079
-:104344000000000000000000000000000000000069
-:1043540000000000000C30200000000000000000FD
-:104364000000000000000000000000000000000049
-:104374000000000000000000000000000000000039
-:104384000000000C300000000000000000000000ED
-:104394000000000000000000000000000000000019
-:1043A4000000000000000000000000000000000009
-:1043B400000C30200000000000000000000000009D
-:1043C40000000000000000000000000000000000E9
-:1043D4000000000000000000000000000000000CCD
-:1043E4003000000000000000000000000000000099
-:1043F40000000000000000000000000000000000B9
-:10440400000000000000000000000000000C30204C
-:104414000000000000000000000000000000000098
-:104424000000000000000000000000000000000088
-:1044340000000000000000000000000C300000003C
-:104444000000000000000000000000000000000068
-:104454000000000000000000000000000000000058
-:104464000000000000000000000C302000000000EC
-:104474000000000000000000000000000000000038
-:104484000000000000000000000000000000000028
-:10449400000000000000000C3000000000000000DC
-:1044A4000000000000000000000000000000000008
-:1044B40000000000000000000000000000000000F8
-:1044C40000000000000C302000000000000000008C
-:1044D40000000000000000000000000000000000D8
-:1044E40000000000000000000000000000000000C8
-:1044F4000000000C3000000000000000000000007C
-:1045040000000000000000000000000000000000A7
-:104514000000900000000000000000000000000007
-:10452400000C30200000000000000000000000002B
-:104534000000000000000000000000000000000077
-:104544001000000000000000000000000000000C4B
-:104554003000000000000000000000000000000027
-:104564000000000000000000000000000000D00077
-:10457400000000000000000000000000000C3020DB
-:104584000000000000000000000000000000000027
-:104594000000000000000000000000001000000007
-:1045A40000000000000000000000000C30000000CB
-:1045B40000000000000000000000000000000000F7
-:1045C4000000000000000000000000000000006087
-:1045D4000000000000000000000C3020000000007B
-:1045E40000000000000000000000000000000000C7
-:1045F40000000000000000000000000000000000B7
-:10460400000000000000000C30000000000000006A
-:104614000000000000000000000000000000000096
-:104624000000001000100000000000000000000066
-:1046340000000000000C302000000000000000001A
-:104644000000000000000000000000000000000066
-:1046540000300080000000000000000000000000A6
-:104664000000000C3000000000000000000000000A
-:104674000000000000000000000000000000002016
-:104684000000000000000000000000000000000026
-:10469400000C3020000000000000000000000000BA
-:1046A40000000000000000000000000000280000DE
-:1046B4000000000000000000000000000000000CEA
-:1046C40030000000000000000000000000000000B6
-:1046D40000000000000000000000000000000B00CB
-:1046E400143000000000000000000000000C302026
-:1046F40000000000000000000000000000000000B6
-:104704000000000000000000000000000D21410036
-:1047140000000000000000000000000C3000000059
-:10472400000000000000000040DB0000000000006A
-:10473400000040034DA5008000108D80140000008F
-:104744000000000000000000000C30200000000009
-:104754000000000000024E5F0200000000000000A4
-:104764000000ED02400000819FA143020000000010
-:10477400000000000000000C3000000000000000F9
-:1047840000000403D000000000000000000140020B
-:10479400DBF500010010098014000000002C80806B
-:1047A40000000000000C30200000000000000000A9
-:1047B4002C785A0A00000000000000000602DAF417
-:1047C400000280980FA14300000000248B540800CD
-:1047D4000000000C30000000000000000000040095
-:1047E400000000000000000000003C3CD00001007C
-:1047F40000000D001400000002000F000000000083
-:10480400000C302000000000000000002000000028
-:1048140000000000000000002061D8020200000037
-:104824000DA14300000000568F0800000000000C9A
-:104834003000000000000000002000400050000094
-:104844000000000000001E00200A00000000090013
-:10485400140200E000020F0000000000000C3020F1
-:1048640000000000000000400039D85000000000A3
-:10487400000000001C00EA0A200000000FA1430011
-:10488400000000048F0800000000000C300000004D
-:10489400000000000000003B400800000000000091
-:1048A400000000316D0010000000AD8014000042D3
-:1048B400C0000F0000000000000C302000000000C9
-:1048C400000000000062F818020000000000000070
-:1048D40000046F08000000181D2143000003400677
-:1048E4008F08000A0000000C3000100000000000D7
-:1048F400000000025000000000000000000004243A
-:10490400000000100000898014000002C0000F00A5
-:1049140080040000000C30200000000000000000B3
-:1049240006024CA0200000000000000020780000D7
-:10493400001000019D214300000340168F08000071
-:104944000000000C300000000000000008001430DB
-:104954004000000000000000080200274A850020F3
-:104964000000AD001400800140000F0000000000B2
-:10497400000C30200000000000000A001E06585001
-:104984000000000000000A000005CC40402900009F
-:104994001F214300A00000148F0800000000000C39
-:1049A400300000000000000000003C036A521000C8
-:1049B4000000000000000000E94200000000A9001F
-:1049C400144A00014000000020000000000C3020C8
-:1049D400000000000000000C0E624E7A400000004F
-:1049E4000000000000014B50400000000F21430074
-:1049F4000001C29400080000000000000000000054
-:104A0400080821402000000020A020000000000031
-:104A14000000003AEB8000013800816500000002CC
-:104A24004000000000000000000000000000015EE3
-:104A3400A140800000014AA0000000000000000026
-:104A44000006FA0000000001976400000002600004
-:104A540000000000100000000000000000D01080E2
-:104A640040000436EDA500000000000000001C0218
-:104A740060CB00810001077F0C000001C40000002E
-:104A8400000008000000000000000C00204480002A
-:104A9400046579A74000000000000000266AEAC30C
-:104AA40042028031C3FF4D05000263800000000014
-:104AB400000000000000000D0B9E0000000000201C
-:104AC400200A0000000000000000447ACF800000AB
-:104AD40000090581002000024014EC408000000021
-:104AE40000000000000B0113804000100004F80ACD
-:104AF4000100000000000010202779000800407821
-:104B0400A128010801020017FD04000000000000B4
-:104B1400000000500BF4200000001C3420A02804E6
-:104B24000000000000000001E0D33840007003E8FA
-:104B3400000000000034C8D00000000000000000A5
-:104B4400002001120000800020795AA020040000F7
-:104B5400000000000000EA4342000000016C200055
-:104B640000000016B814000000000000000000005F
-:104B740080DB000000001633CD240000000000009C
-:104B840000000242E00000000008B1E690000000CE
-:104B940062E4A5C0800000000000000000070A3A9B
-:104BA400C04000003E004C10000000000000000166
-:104BB4000E2B5C5000000050076590000003400776
-:104BC400CA0600000000000000000000885B4000EE
-:104BD4000000167660760000000000000020043417
-:104BE400005F000000580D4294800000441D9010A6
-:104BF400000000000000000000038857420000008D
-:104C04002E74CAB1620000000000004000344E5F00
-:104C140000000050A3F3E800000202B7B000000057
-:104C24000000000000000000000402800800343B83
-:104C3400E01800000000000008001C22FEA5086027
-:104C44000000A5810000800343C40AC000000000E6
-:104C5400000000000000003B02800A003E05DA0864
-:104C64000200000000000A000007DA405829000191
-:104C7400D1280108A000035DCA0420000000000040
-:104C8400000000000854140000003C21D9800000FA
-:104C94000000000000000203EB5A00000201B3E828
-:104CA40000000000203E05A00000000000000000FD
-:104CB40000018B87A80000002005CF000000000041
-:104CC400000000001400EF4050000518A16E000021
-:104CD40000014606EF50000000223D0800090000D4
-:104CE400009F000000002402CB40000000000000F0
-:104CF4000090003749A109000001D0000000000025
-:104D0400003CE800000000C03F800021000300F2E6
-:104D1400E0000000006378000000000000000000D4
-:104D240000026D4241003801C00000000001E0169D
-:104D3400C00000000000140A000000000093E0001E
-:104D440000000002C00008000000000000008040D5
-:104D5400F80A080040399DB31C010012C204ADD00A
-:104D64000000000024A0000000001C3E0000000021
-:104D74001E006C80020000000000000040796B4AB5
-:104D8400500000D1FDF70D0000E8406EEEF0000089
-:104D94000030000000000000003640802000004287
-:104DA4004000000000000000000000027D00100030
-:104DB40000D10B4000400001E0059200040000C057
-:104DC40000000000040500824040001000735A02F5
-:104DD400020040000000001000206C080000403970
-:104DE4008BB9400001014007A0060000004000000C
-:104DF40000000800001C00000020027C700000007D
-:104E04000000000000003C61600000000008DDF0CC
-:104E14000001000040150400100000000000000024
-:104E240010001C1B200080401C235CA0000000001C
-:104E3400000000000E75FAA0400000100FBC208096
-:104E44000002000EA000200000000000000000008E
-:104E540000500140000014796E00000000000000C2
-:104E640000003C600000000000588764300000012E
-:104E7400603C0A00000000400000000000039C5F4A
-:104E8400800800002E3C4F082000000000000000B5
-:104E940000280000000002B9B5EC2000000346041D
-:104EA400C000000002400E8FA000280180540000C2
-:104EB4000000363760000000000000000000822E71
-:104EC400703C080000008780D000000366CDEC80B1
-:104ED400100002001FDE7080138B9E3E200080A015
-:104EE4003E06DA80020000000000020754017C7CC8
-:104EF400530000001568F50A000142B4FD040000E7
-:104F04000343400000020009905C140000000C41BF
-:104F14006B0000000000000008013428F058002055
-:104F24000001094014008003601E84008000020018
-:104F34004000000280070E168000000036704F0209
-:104F44000000000000000A00A0616E18022805009D
-:104F540088782800A0014015981000000020000067
-:104F6400000000050E0003C04000002BDA003100F1
-:104F7400000000000000803ED00A000100000B0089
-:104F840000000002E41CCC801000C060000000009F
-:104F94000000010283D200000002D80400000000D7
-:104FA4000000000140281A0500408010013028004C
-:104FB40000014295AC24000000623D0001000000A5
-:104FC40009DC3CC0000CA425FD80000100000000A9
-:104FD40001001C227A0120040090978294000002B0
-:104FE400C380000000000040358050100000091B01
-:104FF4003DC080016006CB0010028000000000006C
-:1050040020066F07600000819FE165280002000010
-:105014000000000000220D000280204F8098000054
-:1050240000000063EA0020000000000001002C03DF
-:10503400D0E300000000E5000C000000000100F0D7
-:10504400000001C03EE80030000B887EA000800014
-:10505400006459400001280000000107A0206AC331
-:105064006300007811B0080800000000C0F50000DB
-:1050740000420300A00000000CD4000010001C76C5
-:10508400700000000000000000003E3CFF03000030
-:105094000071BB801400000000000000000002004A
-:1050A4000FA0A00000000097008E800020605A80AE
-:1050B40012000000000000002E7E4F0200000000DD
-:1050C400AB3168000000000000000000014006E071
-:1050D400000000030AF40000000002241050000045
-:1050E400000000000000023EC800000000F1DDF8EE
-:1050F40000811000034000000000E36015B02000B0
-:105104000000089202800000063C7E50000000006F
-:10511400000000001E02DE80000000D9DF32010022
-:10512400000007C00000000002440CA00000000DB5
-:105134000A5600000001027C00000000000000008C
-:1051440000003C015E5B000000F100000000001064
-:10515400001E8000880002021CC801000008001F15
-:10516400A00000001C70000000000000000000000F
-:105174002000EEA540000001E00000000008C0256A
-:10518400A806100001624600000000050A1B50003A
-:105194000000343AD0E301000000000000000426BF
-:1051A400E000000000010BF000000000000000001F
-:1051B4000000006066C2002003800113C0000000EC
-:1051C400006F5AC352000000000000002000ECA051
-:1051D40000000830CFE40840000000000000000098
-:1051E40003424505F000000B0BB402881800BC0212
-:1051F400DF0300000000000008000069D0C3112094
-:10520400005005F7FC00800002E7F02000000202D5
-:10521400C08AF0000008003380000A071C00FC026A
-:105224000000000000000A001E70EEC7422800B112
-:10523400ADA1FD20A000000D90000000024340003D
-:10524400000000070BF780003001002BD80000009D
-:105254000800000000001C27C92500000000CDF450
-:105264000060000027400000000003C04000000070
-:1052740000050A9200800000803CCB08100000006A
-:105284000000002006005C000000000001FC20007B
-:105294000001E2C0000000100000260050030000DE
-:1052A40008B0294041002E64000000000200000004
-:1052B4000000AC7C0000000080000B3108040000FA
-:1052C400000200A0001000002F8000030005818070
-:1052D40016944100262C000000000000000000008D
-:1052E4007C20000000010000000605420000000FC1
-:1052F400C0A480000142830020800001000C2580AE
-:1053040000003401D0A020000400000000001E4270
-:10531400E0AF21000000804280020003C0010A00C7
-:105324001400000044A020300009803FA5905000E4
-:1053340000721E5000000000000000003C72EEA548
-:105344004000007013B280000000500C8A05000079
-:105354000142BC0000000000000000000000044105
-:10536400F0FF20000000000000001C216B10000072
-:105374000008000000000A01C7DE8FF0840002006C
-:105384004EC0A00000001800000000001C637EF75F
-:105394000200000000000000206DFC00000000710D
-:1053A4008000000004020786E7F5000001400408BD
-:1053B400020000000000154000003E40E0C3000071
-:1053C4000000800100000C00601A000000000001D1
-:1053D4006802182023800FF0840003402CE0012091
-:1053E4000000005A15500002B472DCE3020004000D
-:1053F40000000040006BF85A02000018E101680048
-:10540400100142000FF100000000340010100001F0
-:10541400000803C0100E006F40E500003A000000D1
-:105424000000000030A000000200CD810800100040
-:10543400040590019000000000C022240008001A16
-:105444003C380000003F4CA50200000000000000B2
-:1054540000006EA0000004000D3B8D881000021CAB
-:10546400D014000000024F0000000000080803C030
-:1054740000000203C8000010000000000000243CEB
-:1054840000000000000000814000000000268200AF
-:105494000C0020007C850000000001523C30000C10
-:1054A4001669CD8000308000000000280000000054
-:1054B40000000000C3B140000000000D9344000050
-:1054C400024424B0000200000F0003C040003C2A44
-:1054D400F80408004000000008423C7DC0000020A1
-:1054E40000000FAF6840800267C6D5810000020645
-:1054F40005840002800001723C30200020066A000E
-:105504000000400000000A00062FDE0212280000FE
-:10551400053E0564A0026216F984800000440DC0B3
-:1055240042000000000003C1400000000000000031
-:105534004000000000804002FC0000010008000060
-:1055440000000A00020000000000006624E00200DF
-:10555400000000723C3020041600000000004000EF
-:10556400000000008002D808000200500000000083
-:10557400000146400000000001400000000300015B
-:10558400000803C0100800400000001000000B24B5
-:105594000800000000000000021080815400000098
-:1055A400000200A00000000000000003000D187AB3
-:1055B4003C306000002800000010000000040C00D3
-:1055C400000000000030008015A155000000000517
-:1055D400C0A000000142800000000000000803C0D9
-:1055E4001000000000000000000001300000002056
-:1055F40000000000000000803C00000023E5D00013
-:1056040010000006800000000001805A3C30600059
-:1056140000000000000000300004004A0004000004
-:105624000000001807A3C30000014077C800000071
-:105634000000000000000280000003C010000021F0
-:105644007C00010000700D24000000000000000137
-:10565400200000003C00000144360040000000002F
-:10566400000000000000005A3C3060000073FC4061
-:10567400000000800800000000000000000280001C
-:1056840005A3C300006203B7A00020000002BCD041
-:1056940082000000000003C010001C2C0000000069
-:1056A40000010900000000400000000000000000AC
-:1056B4003C00000007870050000000005EE000008E
-:1056C4000000007A3C3040002E0000000000000082
-:1056D40088000002003800000000000007A3C30097
-:1056E4000001E764AFA0000000000000000000001B
-:1056F400080803C05000142B500000000001BD0036
-:1057040000000000000000000000E0803C000202F5
-:1057140042A5B0F00000000000000000000181522A
-:105724003C30002036077E0A300000009000000064
-:1057340000000000000000199523C300040166D492
-:10574400A0B000000000000000000000080803C032
-:105754004000000020A000102000E700000004002A
-:105764003050A000001080803C000000029C0052D9
-:105774001000000000000000000019523C3200003C
-:10578400000178A000100000100000002000CE509E
-:10579400400000819523C30000016756C8B0A800EB
-:1057A40000003FE0011200001B0003C010000002D3
-:1057B400D000002000F8F10008000002E0A58020DD
-:1057C4000000E0003C00000543430A001400000010
-:1057D4000CF1000280000A723C3020001602C880DE
-:1057E40022A80071E8000A08000040006028800038
-:1057F4001723C30000020006CA00000004000000D2
-:1058040000000000000A400001020023CD00000057
-:105814004011FD000000003C205090000000006496
-:105824003C00000002C30500080000000000000066
-:10583400000000184020010016065A100000000065
-:10584400F80000000004CA5040000000056FC300C7
-:105854000000069CC50100000072007011020101E5
-:10586400000000000000000002000000000000082A
-:10587400000000000200000000000008000000001A
-:105884000000200000000000008000000000000074
-:1058940000000000000001000000000000040000FF
-:1058A40000000100000000000000000000000000F3
-:1058B40010000000000000000000000000000000D4
-:1058C40000000000000000000200000000000008CA
-:1058D40000000000000000000000000000000000C4
-:1058E40000000000000000000000000000000000B4
-:1058F40000000000000000000000000000000000A4
-:105904000000000000000000000000000000000093
-:105914000000000000000000000000000000000083
-:105924000000000000000000000000000000000073
-:105934000000000000000000000000000000000063
-:105944000000000000000000000000000000000053
-:105954000000000000000000000000000000000043
-:105964000000000000000000000000000000000033
-:1059740000000000000000000000000000008000A3
-:1059840000000000032000000000000000000000F0
-:105994000000000000000000000000000000000003
-:1059A40000000000000000000000000020000000D3
-:1059B40000000000000000000000000000000006DD
-:1059C4008000000000000000000000000000000053
-:1059D40000000000000000000000C0000000000003
-:1059E40001000000000000000000000000000000B2
-:1059F40000000000000000000000000000000000A3
-:105A04000000000000000000000000000000000092
-:105A14000000000000000000000000000000000082
-:105A24000000000000000000003000000000000042
-:105A34000000000000000000000000000000000062
-:105A44000000000000000002000000000000000050
-:105A54000000000000300000000000000000000012
-:105A64000000000000000000000000000000000032
-:105A7400000000000001000000040000000000001D
-:105A840000000020000000400000000000000000B2
-:105A94000000000000000001800000000000000081
-:105AA40000000000000000000000000000000000F2
-:105AB40000000000000000000000000000000000E2
-:105AC40000000200000000000000000000000000D0
-:105AD40000000000000800000000000000000000BA
-:105AE40000000080000000000000000000008000B2
-:105AF40002000000000000000000000000000000A0
-:105B0400020000000000000000000000000020006F
-:105B14000000000000000000000000000000000081
-:105B24000000000000000000000000000000000071
-:105B3400000400000000000000000000000000401D
-:105B44001030C00000000000000000000000000051
-:105B54000000000000000000000000000000000041
-:105B64000000000000000000000000000000003001
-:105B7400C000000000000000000000000000000061
-:105B84000000000000000000000000000000000011
-:105B94000000000000000000000000001030C00001
-:105BA40000000000000000000000000000000000F1
-:105BB4000000000000000000000080014000000020
-:105BC400000000000000000000000030C0000000E1
-:105BD40000000000000000000000000000000000C1
-:105BE4000000000000000000000040000000000071
-:105BF40000000000000000001030C00000000000A1
-:105C04000000000000000000000000000000000090
-:105C14000000000000780000800000000000000088
-:105C24000000000000000030C00000000000000080
-:105C34000000000000000000000000000000000060
-:105C4400000000080000C000000000000000000088
-:105C5400000000001030C000000000000000000040
-:105C640000800000000000000000000000000000B0
-:105C74000000000000000000001000000000000010
-:105C840000000030C0000000000000000000000020
-:105C94000000000000800000000000000000000080
-:105CA40000000000000000280000000000000000C8
-:105CB4001030C000000000000000000000000000E0
-:105CC40000000000000000000000000000000000D0
-:105CD40080000000000000000000000000002030F0
-:105CE400C0000000000000000000000000000000F0
-:105CF40000800000000000000000000000008000A0
-:105D04000000000010000000000000001030C0007F
-:105D1400000000000000000000000000000000007F
-:105D2400000000000000000000001000000000005F
-:105D3400000000000000000000000030C00000006F
-:105D4400000000000000000000000000000000004F
-:105D540000000200000000D0D0000000000000009D
-:105D640000000000000000001030C000000000002F
-:105D7400000000000000000000000000000000001F
-:105D8400000000000000000000000000000000000F
-:105D94000000000000000030C0000000000000000F
-:105DA40000000000000000000000000000000000EF
-:105DB40000000000000000000000000000000000DF
-:105DC400000000001030C0000000000000000000CF
-:105DD40000000000000000000000000000000812A5
-:105DE400FD800000084000000000000000000000EA
-:105DF40000000030C00000000000000000000000AF
-:105E040000000000000000000000000A02B45FD09F
-:105E1400000000000000000000000000000000007E
-:105E24001030C0000000000000000000000000006E
-:105E34000000000000000000000008135C59B000DE
-:105E44000010F13800000000C3D6A00000000030AC
-:105E5400C00000000000000000000000000000007E
-:105E64000000000000000000017A48D0A000040FE8
-:105E74000000000000003C14000000001030C000CE
-:105E8400000000000000000000000000000000000E
-:105E94000000000000000B886B59A0014010F1388D
-:105EA40060000000C3C4E00000140030C000000023
-:105EB40000000000000000000000000000000000DE
-:105EC4000000000002046C10B000400F000020002D
-:105ED40000003C00000000041030C000000000007E
-:105EE40000000000000000000000000000000000AE
-:105EF40000000A92EAD0A000C010F13800000000AF
-:105F0400C3C4A98F00000030C000000000000000DE
-:105F1400000000000000000000000000000000007D
-:105F240002A25959B000800F0040000000003C015B
-:105F3400010800001030C000000000000000000054
-:105F440000000000000000000000000000000B88BA
-:105F54006B50B0000010F13800000000C3C4A0185A
-:105F640000000030C000000000000000000000003D
-:105F740000000000000000000000000002067C0990
-:105F8400A000000F0040000000803C01000E000053
-:105F94001030C000000000000000000000000000FD
-:105FA400000000000000000000000A92FB800000D6
-:105FB4000010F17800000000C3C5E00000000030CC
-:105FC400C00000000000000000000000000000000D
-:105FD400000000000000000002A248700000000F52
-:105FE4000000000000003C00000000001030C00071
-:105FF400000000000000000000000000000000009D
-:106004000000000000000B8A7B01A0208010F17AC0
-:1060140000000000C3C5A00002000030C000000062
-:10602400000000000000000000000000000000006C
-:106034000000000002046C010000800F0001400019
-:1060440000003C00000000001030C0000000000010
-:10605400000000000000000000000000000000003C
-:1060640000000A92F90000000010F16366C000000D
-:10607400AA85E01810000030C000000000000000F5
-:10608400000000000000000000000000000000000C
-:1060940002A25B000020000F0041428000002A8120
-:1060A400000000001030C0000000000000000000EC
-:1060B40000000000000000000000000000000000DC
-:1060C400000000000010F17006C00000000008018C
-:1060D400000C0030C00000000000000000000000C0
-:1060E40000000000000000000000000000000000AC
-:1060F4000000000F004002800000000001080204BC
-:106104001030C000000000007E7EA0000000083CAB
-:10611400C0100000000060000000083D40000000C6
-:106124000010F12800000000908D800A000000306B
-:10613400C0000000000042BAFC000004003C200043
-:10614400000000036C000800003C00000000020F87
-:1061540000000000000122CFF10A00001030C0004E
-:10616400000040005F32F4602050083D60000001F0
-:1061740040005C000050083D40000009400AA1288E
-:1061840000000500A93CC10A00140030C000000052
-:106194000000FF0E86000012003C000000004002D8
-:1061A40040000010003C00500014400AA00000070A
-:1061B40001011527C50000041030C00000000000D4
-:1061C4000E9E56000024083DC07000008000400070
-:1061D4000020083D4050A000C02A500006C0030122
-:1061E4001406110000080030C000000000000FDA9F
-:1061F40040000020003C00080014C0038000002080
-:10620400003C2050A0000005A028028000002802C5
-:10621400D580140C1030DC0000000040CC50460443
-:106224000004083D60108000000040000000083DAC
-:106234004080A1C0002A500000000000015DC00A97
-:1062440000000030C00000000000CC0B002800005B
-:10625400003C20090000000380000000003C2030C6
-:10626400A0000005A028000000800001F00A000042
-:106274001030CC001E000000000020700002083C1A
-:1062840040100040000000000000083D60000020B5
-:10629400000000000000000001548D9B120000303B
-:1062A400C00000000000000004000000003C2008C2
-:1062B40000000003C0000100003C000000000000DA
-:1062C4000000000000000142050A00001030C00078
-:1062D40000A200020F700028380000000000002017
-:1062E4000000207C0800083D600000200000000041
-:1062F400000080300016980002000030C00000004A
-:1063040000040F003C4050000000000000000003A7
-:10631400E43C0000003C0000000000000000000716
-:1063240000000801AD0040001030C0001E00020251
-:106334000F30007000000000000010000080266490
-:106344000000083D600000200000000000008020E4
-:106354001287B90A01480030C000000200000F0093
-:106364000040000000000000D01000F3A66470009C
-:10637400403C2000000000000000000080002D646C
-:106384009B0002481030C000000000820F3800005B
-:10639400000000000000000000801E640030083C83
-:1063A400600001C000000000000000000046800002
-:1063B40000000030C000000000000F08340030006E
-:1063C400000000000020003380640020003C200016
-:1063D4000000000000000000000100368000000002
-:1063E400004021E000000000551A766800082C3DAA
-:1063F400CA000000000000000800083DE09800000A
-:10640400102831FE06000000A81CA00000000000B7
-:10641400050000000200AA025400000003C0C000EE
-:106424000000000000000000003C20100000000EEE
-:1064340033A143C00000ABC2E000800000400180F3
-:10644400000000000000002802002C3C4E00000167
-:10645400400000000800083CC0001009106831F535
-:10646400C0000500AA9C0000001000000D030C40B1
-:10647400000000001400040003C0000000004000FD
-:1064840000000000003C00008010400E316423C076
-:1064940001009540F0000004004020A0000000002E
-:1064A4005012460000082C3C4A98100002001C00C0
-:1064B4000020083CC0000000C000000006D200001C
-:1064C400BC1C00010000000014000D000000000AC4
-:1064D4008000000003C010108000000000000030A5
-:1064E400003C00000000C000000002800000BC026C
-:1064F40000080000004021C01B0000005076546CCE
-:1065040000081C3C4A019000000000000000083C08
-:10651400400000080000A5A1E00400000000000005
-:10652400000000000D000B000000F0060028000031
-:1065340003C01000E000000000000000003C200048
-:1065440000100900A080000000000000000000000E
-:10655400004021A99D0000446610406000002C3CCE
-:106564005E001000000000000000083C40019000A4
-:106574000000000002C41000000000000000000041
-:106584001C0799000000990AC040000003C00000E5
-:10659400F000000000000000003C20008002000029
-:1065A400000002002000000000000000004000C8BD
-:1065B4001E000000C61A400000001C3C5A000000E7
-:1065C400000000000000083C600181C000000000E1
-:1065D4000000000000000000000000002D0F00007B
-:1065E4000000C93E0000000013C000000044000089
-:1065F40000000000003C0000000000000002C00099
-:106604000000000000094000004001E01800020002
-:10661400815BE06000000AA85A01900000000000BD
-:106624000000083CE07000000800A37C00000000AB
-:1066340000000818000000000C0010000000BDD687
-:10664400E440000012A80000F00001000000000077
-:10665400003C000800000000007C00000000000076
-:1066640001000000004000E81D4000005A7680014F
-:106674000000000000001000C00000000000000046
-:1066840000000000000FA1294000030000000000EA
-:10669400000C000000090E200000A007C0008000CC
-:1066A400000000008000400000000000000000F036
-:1066B4000214004FF0A94348000000000000000845
-:1066C4000003C4001B0000005A3754040000083DB6
-:1066D400E0000000000000000000183CC050A000D2
-:1066E400002B5BB000400000A9400001000008033B
-:1066F400C00008000000500B16207002003C00008F
-:106704000000000000000002203C0050A00000A196
-:10671400A5A00206000016808D0E000000000000F7
-:106724001E001400A03F00640050083CE00000017B
-:106734004000000070081A940800A00100005731BE
-:106744006013050083CC00000094000000001000DA
-:106754000400A00400210012003C200000004000BE
-:106764000000000202940050A0006040003C202081
-:10677400010003C2000001040000069D9E00000009
-:10678400A07BE002F100083DC0000000C000000052
-:1067940000001A9408000800C00053E00000400004
-:1067A40083DC00002008000814F510000000000F2E
-:1067B40004010200403C00000000C0000000000290
-:1067C400029400000000E00050400000000103C0FB
-:1067D4000F0F0008100215A79A4000402E3A00003F
-:1067E4000000283CC0000200000000000000183C2B
-:1067F40040000000000000000206500083DE00009C
-:106804000000000303B080000000AD0B002C420028
-:10681400003C20000000000000000002003C2000BA
-:1068240000000000000002E8200003C20000002075
-:1068340014835C1180000040F216266500000000FD
-:1068440000800A00000000000008183C4001E0003D
-:106854000800A379E7C0200083D4081E00000003C9
-:1068640080A00B000000F00B5668F000000000F060
-:106874000580000000000000003C20000000000033
-:10688400A080C240000003C00F10500000000000B0
-:10689400000000000072206404000000008000007A
-:1068A400000000000000183C60000400000000012B
-:1068B400E7910020A940080000000000000000004B
-:1068C40000000507A464000000000070050000003B
-:1068D40000000000003C0000080000000000002848
-:1068E40000001680BF00000000280DE50000000035
-:1068F40001F2A066F1000000007810000000000022
-:106904000000083C60380000080AA76A06040080FA
-:1069140083CC00010000000406F08B000000007628
-:106924006425020000000008F000000000000002DE
-:10693400503C00080000010AA00247C0000003C048
-:10694400000F140030B1CDB3800000C2D3366038DC
-:106954000000000000001090000000008000083CCF
-:1069640060000000104F03000040020083CE078047
-:1069740004000030C0808B000000DB02A400020091
-:1069840000000000E004000000000002503C200071
-:106994000000000F00800328032003C20000000051
-:1069A40000C3C6A0000000000A7300000000283CD9
-:1069B400E000000000000000020000426AD0000075
-:1069C40000005175E0000000006FA00B0000003CC7
-:1069D4003E00000000800F0B40000000003C00005F
-:1069E400000000000000050020005B7000000005AE
-:1069F400F0F1C00000010014B01E000000C3C4E5A3
-:106A040000001400053F80000000283D60000001E4
-:106A140040000000000000416B80A0814407A3E215
-:106A240066600540ABDD8B9A0014003C00008000DA
-:106A34000400050000000000003C000000004000CD
-:106A44000000000020024A70A000400150F843C03A
-:106A5400010016818900000400C3C4A9810000401C
-:106A64000037C0000000083DE0700008800000000E
-:106A74000008083D4050A0008423D1E560000000D8
-:106A8400202FAB1CA000003C010108000000800F77
-:106A9400C0000000003C00080004C000000000002A
-:106AA400003C2050000088026074200000000014A4
-:106AB400B710000000C3C4A818000040C230000092
-:106AC4000000083DC001E800000000000200083D8D
-:106AD4004038A408008767F0038000008135E81D72
-:106AE4004000003C010100000000C10B0000000058
-:106AF400203C00000000000000000400003C20389E
-:106B0400A200000347F4040000800024D9182000E8
-:106B140000C3C5E000000000507336680000083D63
-:106B2400C0000000000000000000409EC1180000EA
-:106B34000020F700E04000000A06150E0020003C8B
-:106B44000000000000000A0354000000203C007014
-:106B54000000000000000000006F69000000000059
-:106B6400F08022400020051CC090000000C3C5A096
-:106B740000000000000000040000483CC000E000E9
-:106B8400000000000000083C60800000000051ACE0
-:106B940046C000110016B00F0080003C0000000049
-:106BA4000000000000280000003C209000000000CD
-:106BB40000000000003C00100000000AF074424095
-:106BC40030800081C00A014000C3C5A7180000003E
-:106BD4000000200400000A9400108000000000005F
-:106BE4000000083C60000140000A53F60040000029
-:106BF4000094C7180000003C0100000000000000E1
-:106C04000428000001680F09E000000000000000F3
-:106C1400003C00000000000550A9C3C00000001E95
-:106C2400F080000000AA85E181000C0000003669B4
-:106C34000004083CE0000008000000000000029589
-:106C44007D000000000AF32560000000007C900A2B
-:106C54000000002A81000800000000001400000069
-:106C6400003C2000900000000000000001543B00A4
-:106C7400000000005074000000000034E018000020
-:106C840000007200901103010100000000000000E8
-:106C940000020000000000000800000000020000E4
-:106CA40000000000000000000400002000000000BC
-:106CB4000000800028000000000000000000000127
-:106CC40000000000000004000000000100000000BB
-:106CD40000000000000000000010000000000000A0
-:106CE4000000400000000000000000000000000060
-:106CF4000000000000000000000000000000000090
-:106D04000000040008000000000000000000000073
-:106D1400000000000000000000000000000000006F
-:106D2400000000000000000040000000000000001F
-:106D340002800000000000000000000000000000CD
-:106D4400000000000000000000000000000000003F
-:106D5400000000000000000000000000020000002D
-:106D6400040000000000000000000000000000001B
-:106D7400000000000000000000000000000000000F
-:106D840000000000000000000000020000000000FD
-:106D940000000000000000000000000000000000EF
-:106DA40000000000000000000000000000000000DF
-:106DB40000000000000000000000000000000000CF
-:106DC40000000000000000000000000000000000BF
-:106DD40000000000000000000000000000000000AF
-:106DE400000000000000000000000000000000009F
-:106DF400000000000000000000000000000000008F
-:106E0400000000000000000000000000000000007E
-:106E1400000000000001000000000000000000006D
-:106E2400000000000000000000000000000000005E
-:106E3400000000000000000000000000000000004E
-:106E4400000000000000000000000000000000003E
-:106E5400000000000000000000000000000000002E
-:106E6400000000000000000000000000000000001E
-:106E740002000400000000000000000000003000D8
-:106E840000000000000000000000000000000000FE
-:106E940000000000000000000000000000000300EB
-:106EA400028004000000000000000000F000000068
-:106EB400400000000000000000004000000000004E
-:106EC40000000000000000000000000000000000BE
-:106ED4000000000000000000000000003800000076
-:106EE400000000000000000000000000000000009E
-:106EF4000000000000000000000000000000080086
-:106F040000000000000000000000400080000000BD
-:106F1400000000000000000000000000000000006D
-:106F2400000000000000000000020000000000005B
-:106F3400000000000000002000000000000000002D
-:106F4400000000000000000000000000000000003D
-:106F54000000000000000000000004000000000029
-:106F64000000000010000000400030C000000000DD
-:106F7400000000000000000000000000000000000D
-:106F840000000000000000000000000000000000FD
-:106F9400003C02000000001030C0000000000000AF
-:106FA40000000000000000000000000000000000DD
-:106FB4000000000000000000000000000000203C71
-:106FC40016018000000030C0000000000000000036
-:106FD40000000000000000000000000000000000AD
-:106FE40000000000000000000000000000294090A4
-:106FF4000000001030C0000000000000000000008D
-:10700400000000000000000000000000000000007C
-:1070140000000000000000000000001680100000C6
-:10702400000030C00000000000000000000000006C
-:10703400000000000000000000000000000000004C
-:107044000000000000000000003C000000000010F0
-:1070540030C000000000000000000000000000003C
-:10706400000000000000000100000000000000001B
-:10707400000000000000003C16000000000030C0CA
-:1070840000000000000000000000000000000000FC
-:1070940000000000000000000000000000000000EC
-:1070A40000000000003C00000000001030C00000A0
-:1070B40000000000000000000000000000000000CC
-:1070C40000000000000000000000000000000000BC
-:1070D4000000003C16000000000030C0000000006A
-:1070E400000000000000000000000000000000009C
-:1070F400000000000000000000000000000000008C
-:10710400000000000A00001030C000000000000071
-:10711400000000000000000000000000000000006B
-:10712400000000000000000000000000000000005B
-:1071340000059B00000030C00000000000000000BB
-:10714400000000000000000000000000000000003B
-:10715400000000000000000000000000201400F007
-:107164000000001030C0000000000000000000001B
-:10717400000000000000000000000000000000000B
-:1071840000000000000000000000002806100000BD
-:10719400000030C0000000000000000000000000FB
-:1071A40000000000000000000000000000000000DB
-:1071B40000000000000000000000000500000010B6
-:1071C40030C00000000000000000000000000000CB
-:1071D40000000000000000000000000000000000AB
-:1071E400000000000000000000080E00000030C095
-:1071F400000000000000000000000000000000008B
-:10720400000000000000000000000000000000007A
-:1072140000000000000000000000001030C000006A
-:10722400000000000000000000000000000000005A
-:10723400000000000000000000000000000000004A
-:107244000000000000000000000030C0000000004A
-:10725400000000000000000000000000000000002A
-:10726400000000000000000000080AA040024000E6
-:10727400000000000000001030C00000000000000A
-:1072840000000000000000000000100000000000EA
-:1072940000000000000000002AA168004003000074
-:1072A40000058000000030C0000000000000000065
-:1072B40000000000000000000000000000000000CA
-:1072C4003C6D000000000F004000000000000000C2
-:1072D4000A00001030C000000000000000000000A0
-:1072E40000000000000000000000000000023B78E5
-:1072F4000000000030F168060000000000000100FA
-:10730400000030C000000000000000000020000069
-:107314000000000000000000000000000000000069
-:1073240000080F000002400020000FD000000010F1
-:1073340030C0000000000000000000000000000059
-:107344000000000000000000000000000000000039
-:1073540030F16800400000041EC00000000030C08E
-:107364000000000000000000000000000000000019
-:107374000000000000000040006B100000080F0037
-:1073840000000000000000050000001030C00000F4
-:1073940000000000000000000000000000000000E9
-:1073A40000000000020043788000000030F1680013
-:1073B40000040000000D9A00000030C0000000002E
-:1073C40000000000000000000000000000000000B9
-:1073D400000000023800500000000F00404200008E
-:1073E400000000000000801030C000000000000019
-:1073F4000000000000000000000000000000000089
-:107404000102397881A0000030F12A6640000000B2
-:1074140000000001400030C0000000000000000037
-:107424000000000000000000C00000000000000395
-:10743400FC2B500000000F00404200000000000040
-:107444000000001030C00000000000000000000038
-:107454000000000000000000000000000002BD4821
-:10746400D800002030F12A60400000000000001025
-:10747400000030C000000000000000000000800098
-:10748400000000000000000000000000000000A058
-:1074940000100F000000000100004FE00000001089
-:1074A40030C00000000000000000000000000000E8
-:1074B40000000000000000000000000001B0001007
-:1074C40030F13800000520015EC00000000030C02B
-:1074D40000000000000000000000000000000000A8
-:1074E40008000000000000000000000000080F0376
-:1074F40000000000000000000000001030C0000088
-:107504000000000000000000000000000000100067
-:10751400000000000000000001A0000030FFA800EF
-:107524000000000000000000000030C00000000067
-:107534000000000000000001683E50800080000050
-:1075440000000410001C10000000000079424000FC
-:10755400002D6DE30A00001030C0000000000000A0
-:107564000000000004097DFBF180008000000000A1
-:107574000500046CF00000000053B4060000001283
-:107584009CD00000000030C0000000000000024059
-:1075940000000000000000000000000000000000E7
-:1075A40021CA01B0000000F0A4000000003E8300E6
-:1075B4000900001030C00000000000053E0000007B
-:1075C4000000000000000000000000000610016E32
-:1075D40000A00000055121400000003E8FA70A00D2
-:1075E400000030C000000000000000004000040261
-:1075F400380E00000000000000000040001FD8000A
-:107604000200055040028000000000001800001035
-:1076140030C000000000000000006000010935E1F6
-:1076240018000000000000000000146D500000006D
-:10763400055520000000000000050E00000030C0C9
-:10764400000000000000000000000000017F0001B5
-:10765400C800000000000000000011D000080F0066
-:107664006D440020000282051040001030C000006C
-:1076740000000000000000000000065D000004009F
-:10768400000000000000000080F0000000F17E0611
-:107694008840000296C50C80000030C00000000045
-:1076A40000000000000000000000000000000000D6
-:1076B40000000002941C00A20000069D404000202F
-:1076C40001003E850E00001030C0000000000000E4
-:1076D400000000000000000018A0000000000000EE
-:1076E40001116C780004000816993B60001000003A
-:1076F4007DD00100000030C0000000000000000048
-:107704000002000000000000000000000000002053
-:1077140000FF00000000069740040400001680905B
-:107724000000001030C00000000000000000000154
-:107734000000000000E00000000000000242005DC4
-:1077440000A0000816996002800014148E900000B6
-:10775400000030C000000000000000000000000035
-:1077640003F900E00140000000000401401D10B0D6
-:107774000008069340400000003FA6E19F0000106F
-:1077840030C000000000000000006800000007FA9C
-:1077940000000100000000000003E87D80000000FC
-:1077A400169163660000003FED890C00000030C0B4
-:1077B400000000000000000C0000000000000000B9
-:1077C400000000000000000000000000002006612E
-:1077D4000366C000400000800000001030C00000BC
-:1077E40000000000002000000000000050000040E5
-:1077F400000000000000000050000000166061421C
-:10780400800000014FB00A0C0000000000000000DE
-:107814000000000000010000000000008080000063
-:1078240000000001694C010140C00FA0C00000002D
-:10783400413FFCD0080000000000000000000000F0
-:107844000000000000000000000000C00000000074
-:10785400000293CB11E000C00FA1E8000003609F79
-:10786400D6A5000000000000000000000000000099
-:107874000000000000000000000000000000000004
-:107884000028000000000C396C001080250057AB64
-:1078940008040000000000000000000000000000D8
-:1078A4000000000000000000000000000500057C4E
-:1078B4000180001028BDF406080000801CDB800055
-:1078C40000000000000000000000000000000003B1
-:1078D4000C7C00F0000000000000000028300000D4
-:1078E40000010E33B74000000032C3B000408000F6
-:1078F40000000000000000000000000000098E7B72
-:107904000090880000000100000029EA00802000A7
-:10791400283DA74600803030CDF188A30000000048
-:10792400000000000000000000000000000000C093
-:107934000000000000700402BC0A00000000000007
-:1079440000000000000001F58000000000000000BD
-:107954000000000000000000000000000010000013
-:1079640000000000021A815A0000000000000060BC
-:10797400001000014FC39A00000000000000000046
-:1079840000000000000000436B79080000000000C4
-:10799400000000403C2A308000000000E802D000D3
-:1079A40000000FE180000000000000000000000063
-:1079B400000000000008947A50000000000000005D
-:1079C4000318AD4E80F000000053A162A80000002F
-:1079D40055AF0E0000000000000000000000000091
-:1079E400010000000000B1000000000000020003DC
-:1079F400E80000A000000000002386200000000032
-:107A040010000000000000000000000000000280E0
-:107A14000000000080A00000000000010003E968ED
-:107A240018A00000000001E00040000000038C00EA
-:107A34000000000000000000000000000000001131
-:107A44007C08900201000000000008203D4800006E
-:107A5400004105B03442400100029ED300000400FE
-:107A6400000000000000000000000000000ABD400B
-:107A74008180014000000000084A3BDA0000014414
-:107A8400ADB1EF404005000126980000140000004D
-:107A940000000000000000000000000000000000E2
-:107AA400080000000030000291CB00D000000C3729
-:107AB400EFC2C600000000000D000000000000003E
-:107AC40000000000000000000000000019800440D5
-:107AD400000000000041696800B000000631B208EF
-:107AE40020000000000001800000000000000000F1
-:107AF40000000B4040000040003F00000000000078
-:107B04000000000006E9B8D000000080A0200000BA
-:107B14000003FE9B100000000000000000000005B0
-:107B240077802800000015CC780000C00000000019
-:107B3400080001FFF9D000148003B54200000203DD
-:107B440085FD0E000C000000000000000000B7C21C
-:107B5400000800000000B9802000000000000003BD
-:107B6400BEEC000020800AF03DC700800000000F3A
-:107B74000002000000000000000080013B142010FF
-:107B840000000000F9E1800000000000000179E934
-:107B94007980008005F506074300000000080040D6
-:107BA4000000000000000000000A0AC040000000BD
-:107BB400000031F000000000000200000039F880ED
-:107BC40000000580F44003000000000300000000F2
-:107BD400000000000000820550002808000000009A
-:107BE40080E0200000000005000029DD9000200452
-:107BF40005A5E54001800000000D9E020000000084
-:107C04000000000000050ACE00000003C000D0E020
-:107C14000000000000000052901DB0900000080712
-:107C2400600280500030E7B0000C0000000000004B
-:107C34000000060A502E00080803C0C0819000000E
-:107C4400000000000110014DF8100000000D344048
-:107C540000280018EE80000800000000000000006A
-:107C640000AF06C028000001603B300000000000A7
-:107C7400000000000358B0020000000000000000F3
-:107C8400050FC0B90900000000000000000002A0B8
-:107C940052940000010169E950000800000000004E
-:107CA400000202DF81840000000001E00000108F68
-:107CB40046978800000000000000000000F3081C44
-:107CC4000000000020CE00000000000001000002BF
-:107CD400D5EF00BA0000000001C28000001780F058
-:107CE4008000000000000000000040F35026600007
-:107CF400000002EE18000000000002800803D6FE17
-:107D0400180CC000000000000300100757D7000043
-:107D1400000000000000000000811E94000050419B
-:107D24006C19000000400000020004412010010012
-:107D3400004040003D4740400016C3FF08000400D7
-:107D440000000000000000A1DE402800510B6CCAB6
-:107D540000C4014000000000011921C81080014442
-:107D6400001720024020102957D7010014000000FA
-:107D7400000000000000000000700003974D700038
-:107D84000000000000000202836A100008000000E6
-:107D9400BC038500040F17EB8F40000000000000B7
-:107DA40000000000000000000000966D900000003C
-:107DB40000000000000340EB80A0100000553C00D0
-:107DC4000000000E3D9D00200000000000000000A7
-:107DD4000000F68020000241403F71D0088000007E
-:107DE400000000400A7C790000000FA03E434000E0
-:107DF40000210DD90004080000000000000000105C
-:107E0400728004000011685A50D0108000000000F5
-:107E14000000027E50C000C00F55046040000020E6
-:107E24007CF80080080000000000000000500744B7
-:107E340000000042BC0A70040000000000000003BF
-:107E44000EEB010400000CBD2064000000000000E3
-:107E540000004000000000000000020A12E0600080
-:107E64000000155C000A000000000000000A2EDC7F
-:107E7400018200000C3BFD460300000000058E005B
-:107E8400000000000000000000A002C4000008017F
-:107E94007C0E50080000000000000001683B19003F
-:107EA40000000F008000005000028300100000005A
-:107EB400000000000000030A16A00000000014CB1C
-:107EC40001C0000000000000010290EBD0C00000DF
-:107ED4000F070003010000028CA50C000000000045
-:107EE4000000000000A0024000000000000000C0EC
-:107EF40000000000006000016C2B00E000000000A6
-:107F0400A5C000000000000B0000000000000000FD
-:107F14000000030A178000000000000000000000B9
-:107F240000000000010295591191401800573006D5
-:107F3400800000000001800000000000000000003C
-:107F440000A006C0000008030E6800000000000046
-:107F540000000000140FD800000000F06822400068
-:107F6400004282DD00000800000000000000030A57
-:107F740012806000000B1DFE500000000000000095
-:107F8400000029C17180000400D5FCE6C0004081D6
-:107F94004C080001480000000000000000A0067426
-:107FA40020000800142001E000000000000000434D
-:107FB400C00058040000000938020000440F03D137
-:107FC400001C0000000000000000030A13860400E7
-:107FD400000015E801E00000000000400003C0C0FC
-:107FE400900A0000080D6002C000100F5EA5980002
-:107FF400000000000000000000A002C000004203D6
-:10800400FC2800900100000000000003C40CF8B13B
-:1080140000400F008143C70000140290080144008F
-:10802400000000000000030A13800000400814FE52
-:108034000000010000000000011BD17878A001407D
-:108044000F030002C00000168D80000094000000A1
-:108054000000000040A0027420000000000010F0A6
-:10806400000000000000000081FC0000000300F09C
-:1080740002C00000040F17D0000000000000000040
-:108084000000030A1280000000000000198008406C
-:1080940000000000000002F80000002000F10200CF
-:1080A4000004040F57E580000000000000000000F9
-:1080B400000000000000004002F801D100000000B0
-:1080C40000100003FC3E0890000000054000002062
-:1080D400001001D989000000000000000000000029
-:1080E400000000003002917F79D000000000000001
-:1080F4000003E8DF38C000001008204000501100E1
-:108104001FE38C000C0000000000000000000000D1
-:108114000000000000000000000000000000000358
-:10812400FF48F0B00428069F00E000000002EDF0D4
-:10813400900000000000000000000000000000505B
-:108144000000000001E00000000000000001FDDD6F
-:1081540080000800169160C00820000167C1080172
-:1081640040000000000000000000000000040200C5
-:10817400003C09000000000000000000015D010057
-:108184000020469F01400800000000099000800084
-:108194000000000000000000000000720100047BE9
-:1081A40079E00000000000000000066B19C0000820
-:1081B400169129C01000000000011E0140000000BB
-:1081C400000000000105080000000000003F30002E
-:1081D4000000000000000003FF6B700000084693DD
-:1081E400400700002017C08380002000000000002A
-:1081F4000000020556800000000014F919C00000B8
-:10820400000000220003F97B01800008169160023F
-:10821400000000A95E9B00000000000000000000B8
-:10822400000000002000002316EB70000000000096
-:1082340001000200001F70A0000006910002C000AF
-:10824400000FC290808000000000000000000000C9
-:1082540000000400021B004FB00000000000028078
-:108264000100117899B20000169160004000D0AF6F
-:10827400D695000000000000000000000000001C73
-:10828400200000100750010000000000000000035F
-:10829400E800000080000EDF6C068600001FDCB0E2
-:1082A40000000000000000000000000000200400A6
-:1082B400000006EC00800000000000020003E968F2
-:1082C4003000000017B97062C000001E9E8180005B
-:1082D4000000000000000000000000000000100288
-:1082E400E80CF0005440000002000001400850F087
-:1082F4000020869340268000201542008800040058
-:108304000000000000000000000000005120695E31
-:10831400B8C0014000000104000281E080100000A8
-:10832400169171C28000011554811F0014000000D1
-:10833400000000000105080000000001542DF800B1
-:108344000000000000000800025A000000000F01B5
-:10835400804200000030C6D0180000000000000079
-:1083640000001205528000000002945EF800000034
-:1083740000000000000006CF01A000001F012B62D6
-:10838400F00400A2DFC01D1C00200142E00B00002D
-:1083940000000000000002217C30380014000000BE
-:1083A40000000003F40F7900000043F0A007402010
-:1083B4008029A7C108000000028C10000000000002
-:1083C4000000000000017DDA7000080000000000D9
-:1083D4000103697EB1C000D423D17842401300A9BF
-:1083E40077E9801800000000000000000000000091
-:1083F40000000000000008F0000000000000000081
-:10840400003FF09000000FC020000000001680AD77
-:1084140090000000000000000000000000000000C8
-:10842400000000003810000000000002000014DD0D
-:10843400800000040585F942000000A940010C10E9
-:108444000000000000000000000000000000000127
-:108454007C3C00901000000000000000F82CB0D01C
-:1084640000000C29E167000000004F90000040006C
-:10847400000000000000000000000000000014DE06
-:108484000180C80000000070074AF0FBB2E0000859
-:10849400081BBDC30000000006E0000080000000CF
-:1084A4000F0000000000000C00000000143F110049
-:1084B4000000000000000001683B7800000004A5F3
-:1084C40060200000003002001800000000000800D6
-:1084D40000000000002000000002BD5901C000009F
-:1084E400000000200102917FB9E100002AD7E44096
-:1084F400000011B01C000F00000000000000180074
-:108504000000000000400001542B508200000000D5
-:10851400000400016CEE7000000000000002000086
-:108524000020C2E000A0C000000000000000000025
-:1085340000000000000295E9101200000000000293
-:10854400000294DC998000000000006040201000CC
-:108554000795004C400000000000000000000000EF
-:108564003C002020980C5000000000000000000097
-:10857400003F000000000C3D70000B1000061E8040
-:10858400004800000000000000000000000004009B
-:108594003108F57D0000000000000000001014DD2B
-:1085A40000001400063BA4039000000B84D00800D4
-:1085B40000000000000000000000000000001000A7
-:1085C400A80900F14040000000000203C0000000C0
-:1085D40000400F00802600010003C00508000400CD
-:1085E4000000000000400000000000804101E8F8A5
-:1085F40078100140000000000003C1600001014048
-:108604000F0580E241050083CC05810014000000C1
-:108614000000000000F0000000000002BC2F00D0A9
-:10862400000000000280000000000000000000F7CD
-:10863400FC6200000003C2000001400000000000D2
-:10864400000006F050000000000015EF18100000B4
-:1086540000000100000000000008000000E3B7E390
-:10866400C0000083DE010000C00000720080110021
-:1086740062002F8200000103D7D728080000F7D337
-:108684000C240200F3F708000002FFFF00000101C0
-:10869400BFBF44042020FBFB04142020EBEF100098
-:1086A4000420FDFD02004004FFFF00000040EFEF46
-:1086B40010200000F7DF28088584F7DF200400017C
-:1086C400DBEB1C188000E7F700080080F7FF0800C8
-:1086D4000202FFF30C0C0200F3F30C080002F7F79C
-:1086E40008080000F7F708000000FFF71008000072
-:1086F400C7EF20000400EFCF31110004EDCE3604A3
-:108704000000DBF90A0C0000FFF500020000FFFF87
-:1087140000000404FBFB04000000FFFF0000000055
-:10872400EFFF10100000CBEF24242000FFFB00001B
-:108734002020FFFF00082020E5F613190100FDEDBD
-:1087440002220001FDD52A0A0000DFDD220000001C
-:10875400FBDF04240000FFFB00000000FFFF040413
-:108764000000FFEB10100000CFDF22020101FFFD2B
-:1087740000000000FFFF08080000FEE6111242009E
-:10878400EFFD02000042F7F50E000202F9FB0004BF
-:108794000000FFFF08002120F7F700082021F3FB69
-:1087A4000C141020EFE718081414F7F50A0A5050B7
-:1087B400F7F708081010F7F708101010EDE7120883
-:1087C4009511F7FD02001094FFFD06049090F1F35B
-:1087D40008001010FFFF00000210BFBF4404020293
-:1087E400FBFB14100000EFEF00100000FDFD020081
-:1087F4000000FFFF00000000EFEF10100404F7FF7B
-:1088040008080000F7FF00000000EFFB1C1E00003A
-:10881400E3E50A0A0000F5F50A0A0400F5F10E047E
-:108824000004F9F300080000F7FF00000000FFFF58
-:1088340000000000FFEF10102000FFEF00002020D8
-:10884400E7ED130B2020FDEC12160101F9E90E0AE5
-:108854000000FDF502020000FDFD02000000FBFB2C
-:1088640004000000FFFF00100000EFEF10100100F3
-:10887400EFFB04040001FBFF00000000FFFF0A00FF
-:108884000000F5F4130B0000EDED12004242FFF579
-:108894000A080002FDFD02023020FDFD0600303012
-:1088A400FBFB00041111FFFB14041410EBEF100088
-:1088B4005014DFDF22021050FFFD00001010FFFFF4
-:1088C4000A081110FCF413121011EDED1202949425
-:1088D400F5F50A021090F9F906021010FFFD0800E0
-:1088E4001210F7F7080C1212E3F3181C1010E7E744
-:1088F40008080010FFF50A020000F7FF000004005A
-:10890400FDFF02020004FDED12120000FDED020263
-:108914000000F5FD060A0000F1F10A0E0000FDFF5B
-:1089240000000000FFFF04040404EBEB101400003B
-:10893400EFFF00000000FDFD02000000FFFF00004B
-:108944000000FFEF10100000EFF708082020FFFFE1
-:1089540000022120FDFD0E160001E5E11A100000C1
-:10896400E7FD02080000FDF906060000FDF902001B
-:108974000000FFFF0000010100008200800103FFEE
-:10898400FF10000000EFEF10000000FFFF020800DE
-:1089940000E5E51B030000FDFE10005202EFEB1C96
-:1089A4001C3052E3F700023030FFFD02021010F9D0
-:1089B400F904121110FFEF10100415EFEF0010402E
-:1089C40040FBFB04000000FFFF00000000FDFD0A67
-:1089D400020101F7F401030000FFEF10108400E727
-:1089E400EF08180004F7FF00020000FDFD02061264
-:1089F40002FBF914001210EFEB14141012FFEF0035
-:108A0400001010DFDF22021010FFFD00000414F537
-:108A1400FD0A0A0000F6FC01020000EFEF1010004E
-:108A240000F7E708100000FDFB06040000FDFD024E
-:108A34000A0000E5F71C000400E3EB10180004EF43
-:108A4400FF00000000FFFD02020000FFFF02000023
-:108A540000FDFD02020000FFFD10020000EBEF101C
-:108A6400142020F7E30C120121F3F10E0A0000F5A3
-:108A7400FD02100000FFEF14140000EBEB100001E6
-:108A840000FFFF00000001FDFD02000000FFFF00E9
-:108A9400000000EFFF10101000F7E708001210FFAD
-:108AA400FD02023012FDFD040A7272F3E310180095
-:108AB40010EFEF10000000EFFB04060400FBFD02C2
-:108AC400024105FDFD00120040EFEF10100000FF11
-:108AD400EF00000100FFFD0A020001E7E5110900B3
-:108AE40000FFFE00000000FBEF1C140404E3E71089
-:108AF400180200EFEF10120002E9E916120000ED6F
-:108B0400EF10000202FFFF00041000FBFB00041042
-:108B140010FFFF02001010FDFD0A081010FFF601FF
-:108B2400010010FFFF00100000E7EF18180000EF2D
-:108B3400E710140000EFEB16100000E9E91614002A
-:108B440000EBEB04100000FFFF00000000DFDF2259
-:108B5400020000FFFD02020000FDF50A080000F615
-:108B6400FE01000000FFFF10000000E7E7181021DD
-:108B740020EBEF14140021E9EF12120000E5E51CCC
-:108B8400140000FBEB00000101FFFF00000000FFE8
-:108B9400FD02020000FFFD02061000FBFD040010B0
-:108BA40010FFFB04041212EBFB141C2030E3E31C43
-:108BB400144220E3E31C180042EDE512120000ED1C
-:108BC400EF14140000EFFB00004140FFFF00000021
-:108BD40001FDFD02000000FFFF00000101FFFF187E
-:108BE400000000E7E712180000EDFD02000000FF9E
-:108BF400FF04000000F3F3081C0202EFEF10100062
-:108C040000EFEB14140000EFEF10120200EDED1270
-:108C1400120002EFEF10000000FFFF02001000FD41
-:108C2400FD0A081010E7E711011010FFFE00000014
-:108C340010FFFF040C0000E7F318000000FFEF1022
-:108C4400000000F9EB06120000EDFD00000000FF3B
-:108C5400FF04000000FBFB00000000FFFD02020017
-:108C640000FFF508080000F7FE01050000FBFF0403
-:108C7400000000FFFB0C142000F3E3140421210086
-:108C840000110162003F82000001030000000000A7
-:108C94000000001B1B0000000000001F1B00000060
-:108CA400000000041F00000000000000000000009D
-:108CB4000000001B000000000000001B1B0000005F
-:108CC4000000001F1B0000000000001F1F00000028
-:108CD40000000000000000000000001B1B0000005A
-:108CE4000000001B1B0000000000001F1F0000000C
-:108CF4000000001F1F000000000000001B00000017
-:108D04000000001B1B000000000000001B0000000E
-:108D140000000004040000000000001F1F00000009
-:108D2400000000001B0000000000001B1B000000EE
-:108D3400000000E4FB000000000000E4E400000088
-:108D44000000001FFF000000000000001B000000E6
-:108D5400000000F919000000000000E4F900000020
-:108D6400000000E4E4000000000000F7F700000049
-:108D74000000000013000000000000F9F9000000EA
-:108D8400000000E4F9000000000000E4E40000003A
-:108D9400000000F7F700000000000000F3000000EE
-:108DA400000000F9E900000000000014FD000000CC
-:108DB4000000001E1C000000000000F7FF0000007F
-:108DC40000000000E1000000000000E9E9000000EC
-:108DD4000000001CFD0000000000001E1A0000003E
-:108DE400000000EFFF00000000000000E1000000B0
-:108DF400000000DDC90000000000001EDD000000CE
-:108E04000000003E3A000000000000BDBF0000006A
-:108E140000000000A9000000000000DDD9000000EF
-:108E2400000000A2FF000000000000A6A200000055
-:108E3400000000BDBD00000000000000B9000000FB
-:108E4400000000FFDD000000000000A6FF0000009D
-:108E54000000008486000000000000BDBD0000008A
-:108E640000000000BD000000000000FFFD00000045
-:108E740000000006FF0000000000000404000000E1
-:108E84000000003D3D000000000000003D00000027
-:108E9400000000FFFF00000000000006FF000000CB
-:108EA4000000000404000000000000FDFD000000BC
-:108EB40000000000FD000000000000FBFB000000BB
-:108EC40000000000FB00000000000024000000007F
-:108ED400000000FDFD00000000000000F90000009B
-:108EE400000000FBFB000000000000FBFB00000092
-:108EF400000000FFFB000000000000FFFF00000076
-:108F040000000000FB000000000000FB2200000045
-:108F1400000000FBFB000000000000DFFB0000007D
-:108F2400000000FFFF00000000000000220000001D
-:108F34000000002202000000000000FBFB00000013
-:108F4400000000DFDB00000000000026FF0000003E
-:108F540000000000220000000000000000000000EB
-:108F640000000000000000000000000000000000FD
-:108F740000000000000000000000000000000000ED
-:108F840000000000000000000000000000000000DD
-:108F940000000000000000000000000000000000CD
-:108FA40000000000000000000000000000000000BD
-:108FB40000000000000000000000000000000000AD
-:108FC400000000000000000000000000000000009D
-:108FD400000000000000000000000000000000008D
-:108FE400000000000000000000000000000000007D
-:108FF400000000000000000000000000000000006D
-:10900400000000000000000000000000000000005C
-:10901400000000000000000000000000000000004C
-:10902400000000000000000000000000000000003C
-:10903400000000000000000000000000000000002C
-:10904400000000000000000000000000000000001C
-:10905400000000000000000000000000000000000C
-:1090640000000000000000000000000000000000FC
-:1090740000000000000000000000000000000000EC
-:1090840000000000000000000000000000820080DA
-:1090940001032C2C0000000000001F3E0000000013
-:1090A40000009F1F000000000000CCDE0000000054
-:1090B400000000480000000000003E2C00000000FA
-:1090C40000001F3F0000000000009F9F0000000000
-:1090D4000000DEDE00000000000000480000000088
-:1090E40000003F3E0000000000009F3F0000000021
-:1090F40000009F9F000000000000DEDE0000000072
-:109104000000005A00000000000037360000000094
-:109114000000813700000000000089810000000089
-:1091240000005A5A00000000000000520000000035
-:109134000000F636000000000000C1F60000000048
-:109144000000A981000000000000FAFA00000000FD
-:1091540000000052000000000000F4740000000051
-:109164000000C1F4000000000000A9E900000000B4
-:109174000000F2FA0000000000000072000000008D
-:109184000000F474000000000000E5F4000000009A
-:109194000000EDED000000000000F2FE0000000001
-:1091A4000000007200000000000074740000000061
-:1091B4000000A774000000000000CF8F0000000032
-:1091C4000000767E00000000000000700000000037
-:1091D400000074740000000000009F740000000090
-:1091E40000009F9F00000000000074760000000053
-:1091F400000000740000000000007464000000001F
-:1092040000009B740000000000009B9B0000000015
-:1092140000007676000000000000007400000000EA
-:109224000000606000000000000099700000000071
-:10923400000089990000000000007676000000001C
-:1092440000000076000000000000606000000000E4
-:10925400000089600000000000008989000000000F
-:109264000000767600000000000000760000000098
-:1092740000006464000000000000896C000000002D
-:1092840000008189000000000000767600000000E4
-:109294000000007600000000000076760000000068
-:1092A4000000897E000000000000818900000000A9
-:1092B4000000767600000000000000760000000048
-:1092C40000007676000000000000A97E0000000087
-:1092D4000000C18900000000000076760000000054
-:1092E4000000007600000000000077760000000017
-:1092F4000000FF7F000000000000F7FF00000000F6
-:1093040000007777000000000000007600000000F5
-:1093140000007760000000000000DF7F0000000014
-:109324000000B7FF00000000000077770000000095
-:109334000000006000000000000061200000000048
-:109344000000DF7F000000000000B79F0000000065
-:1093540000006177000000000000004000000000F1
-:1093640000000000000000000000000000000000F9
-:1093740000000000000000000000000000000000E9
-:1093840000000000000000000000000000000000D9
-:1093940000000000000000000000000000000000C9
-:1093A40000000000000000000000000000000000B9
-:1093B40000000000000000000000000000000000A9
-:1093C4000000000000000000000000000000000099
-:1093D4000000000000000000000000000000000089
-:1093E4000000000000000000000000000000000079
-:1093F4000000000000000000000000000000000069
-:109404000000000000000000000000000000000058
-:109414000000000000000000000000000000000048
-:109424000000000000000000000000000000000038
-:109434000000000000000000000000000000000028
-:109444000000000000000000000000000000000018
-:109454000000000000000000000000000000000008
-:1094640000000000000000000000000000000000F8
-:1094740000000000000000000000000000000000E8
-:1094840000000000000000000000000000000000D8
-:1094940000000000110262002F820000010300009E
-:1094A4000020000000000022000000000022000054
-:1094B400000000020000000000220000000000661E
-:1094C40000000000006600000000006600000000CC
-:1094D400006200000000004400000000004400009E
-:1094E4000000003700000000004400000000006499
-:1094F400000000000076000000000063000000008F
-:109504000046000000000066000000000037000074
-:109514000000004600000000006200000000006639
-:1095240000000000004600000000002600000000CB
-:10953400006200000000002600000000006400003B
-:10954400000000660000000000660000000000400B
-:10955400000000000044000000000044000000007F
-:10956400000400000000006600000000000000008D
-:10957400000000660000000000200000000000461B
-:109584000000000000200000000000420000000075
-:10959400002600000000000000000000006200003F
-:1095A40000000064000000000046000000000024E9
-:1095B400000000000046000000000022000000003F
-:1095C4000020000000000046000000000020000011
-:1095D40000000002000000000044000000000044FD
-:1095E40000000000006600000000004000000000D1
-:1095F400002600000000002000000000000200001F
-:109604000000002000000000000200000000002212
-:1096140000000000004400000000006200000000A0
-:1096240000040000000000220000000000440000CC
-:10963400000000440000000000330000000000446B
-:1096440000000000006000000000001600000000A0
-:109654000061000000000006000000000066000039
-:10966400000000110000000000440000000000227F
-:10967400000000000044000000000044000000005E
-:10968400002200000000004000000000002600004E
-:10969400000000600000000000460000000000041C
-:1096A4000000000000000000000000440000000072
-:1096B40000440000000000000000000000660000FC
-:1096C4000000000000000000006600000000002010
-:1096D40000000000006600000000002200000000FE
-:1096E40000560000000000230000000000000000FD
-:1096F400000000220000000000640000000000469A
-:1097040000000000002000000000004600000000EF
-:10971400002200000000002000000000006600009D
-:1097240000000022000000000002000000000040D1
-:1097340000000000004400000000002600000000BB
-:1097440000400000000000040000000000200000B1
-:1097540000000002000000000020000000000002E1
-:10976400000000000022000000000044000000008F
-:1097740000220000000000000000000000220000A1
-:1097840000000000000000000000000000000033A2
-:1097940000000000000000000000002000000000A5
-:1097A400820080010300000032000000000023005A
-:1097B4000000000002000000000022000000000081
-:1097C4001100000000000000000000002200000062
-:1097D4000000000000000000000000000000220063
-:1097E4000000000000000000000022000000000053
-:1097F4002000000000000200000000000000000043
-:109804000000000000000000000000000000000054
-:109814000000000000000000000022000000000022
-:1098240000000000000022000000000020000000F2
-:10983400000022000000000022000000000056008A
-:1098440000000000230000000000000000000000F1
-:1098540022000000000020000000000002000000C0
-:1098640000002000000000000200000000002200B0
-:1098740000000000200000000000220000000000A2
-:1098840022000000000002000000000000000000B0
-:1098940000000000000000002200000000000000A2
-:1098A4000000000000000000000020000000000094
-:1098B4000200000000002000000000000200000080
-:1098C40000003300000000005400000000002300EA
-:1098D4000000000000000000000033000000000051
-:1098E4001100000000002000000000001300000030
-:1098F4000000100000000000210000000000320001
-:10990400000000002300000000001300000000001D
-:109914002200000000001100000000000000000010
-:1099240000003300000000001100000000000000EF
-:109934000000000022000000000000000000000001
-:1099440032000000000031000000000003000000AD
-:1099540000000000000000001100000000001100E1
-:1099640000000000000000000000110000000000E2
-:10997400320000000000010000000000320000007E
-:1099840000002100000000000200000000000000B0
-:109994000000000010000000000023000000000090
-:1099A400000000000000330000000000310000004F
-:1099B400000002000000000031000000000012005E
-:1099C400000000002300000000003100000000003F
-:1099D4001200000000000100000000001000000060
-:1099E400000011000000000001000000000032002F
-:1099F400000000000100000000003300000000002F
-:109A04002000000000000200000000002000000010
-:109A140000000200000000003300000000005500B8
-:109A240000000000330000000000100000000000EF
-:109A340033000000000011000000000021000000BD
-:109A440000001300000000001100000000003100BD
-:109A540000000000120000000000110000000000DF
-:109A640011000000000023000000000011000000AD
-:109A7400000010000000000033000000000011008E
-:109A840000000000010000000000220000000000AF
-:109A9400000000000000330000000000310000005E
-:109AA40000001300000000110362003F8200000167
-:109AB400030000000000000000000000000000009F
-:109AC4000000000000000000000000000000000092
-:109AD4000000000000000000000000000000000082
-:109AE4000000000000000000000000000000000072
-:109AF4000000000000000000000000000000000062
-:109B04000000000000000000000000000000000051
-:109B14000000000000000000000000000000000041
-:109B24000000000000000000000000000000000031
-:109B34000000000000000000000000000000000021
-:109B44000000000000000000000000000000000011
-:109B54000000000000000000000000000000000001
-:109B640000000000000000000000000000000000F1
-:109B740000000000000000000000000000000000E1
-:109B840000000000000000000000000000000000D1
-:109B940000000000000000000000000000000000C1
-:109BA40000000000000000000000000000000000B1
-:109BB40000000000000000000000000000000000A1
-:109BC4000000000000000000000000000000000091
-:109BD4000000000000000000000000000000000081
-:109BE4000000000000000000000000000000000071
-:109BF4000000000000000000000000000000000061
-:109C04000000000000000000000000000000000050
-:109C14000000000000000000000000000000000040
-:109C24000000000000000000000000000000000030
-:109C34000000000000000000000000000000000020
-:109C44000000000000000000000000000000000010
-:109C54000000000000000000000000000000000000
-:109C640000000000000000000000000000000000F0
-:109C740000000000000000000000000000000000E0
-:109C840000000000000000000000000000000000D0
-:109C940000000000000000000000000000000000C0
-:109CA40000000000000000000000000000000000B0
-:109CB40000000000000000000000000000000000A0
-:109CC4000000000000000000000000000000000090
-:109CD4000000000000000000000000000000000080
-:109CE4000000000000000000000000000000000070
-:109CF4000000000000000000000000000000000060
-:109D0400000000000000000000000000000000004F
-:109D1400000000000000000000000000000000003F
-:109D2400000000000000000000000000000000002F
-:109D3400000000000000000000000000000000001F
-:109D4400000000000000000000000000000000000F
-:109D540000000000000000000000000000000000FF
-:109D640000000000000000000000000000000000EF
-:109D740000000000000000000000000000000000DF
-:109D840000000000000000000000000000000000CF
-:109D940000000000000000000000000000000000BF
-:109DA40000000000000000000000000000000000AF
-:109DB400000000000000000000000000000000009F
-:109DC400000000000000000000000000000000008F
-:109DD400000000000000000000000000000000007F
-:109DE400000000000000000000000000000000006F
-:109DF400000000000000000000000000000000005F
-:109E0400000000000000000000000000000000004E
-:109E1400000000000000000000000000000000003E
-:109E2400000000000000000000000000000000002E
-:109E3400000000000000000000000000000000001E
-:109E4400000000000000000000000000000000000E
-:109E540000000000000000000000000000000000FE
-:109E640000000000000000000000000000000000EE
-:109E740000000000000000000000000000000000DE
-:109E840000000000000000000000000000000000CE
-:109E940000000000000000000000000000000000BE
-:109EA40000000000000000000000000000000000AE
-:109EB4000000008200800103000000000000000098
-:109EC400000000000000000000000000000000008E
-:109ED400000000000000000000000000000000007E
-:109EE400000000000000000000000000000000006E
-:109EF400000000000000000000000000000000005E
-:109F0400000000000000000000000000000000004D
-:109F1400000000000000000000000000000000003D
-:109F2400000000000000000000000000000000002D
-:109F3400000000000000000000000000000000001D
-:109F4400000000000000000000000000000000000D
-:109F540000000000000000000000000000000000FD
-:109F640000000000000000000000000000000000ED
-:109F740000000000000000000000000000000000DD
-:109F840000000000000000000000000000000000CD
-:109F940000000000000000000000000000000000BD
-:109FA40000000000000000000000000000000000AD
-:109FB400000000000000000000000000000000009D
-:109FC400000000000000000000000000000000008D
-:109FD400000000000000000000000000000000007D
-:109FE400000000000000000000000000000000006D
-:109FF400000000000000000000000000000000005D
-:10A00400000000000000000000000000000000004C
-:10A01400000000000000000000000000000000003C
-:10A02400000000000000000000000000000000002C
-:10A03400000000000000000000000000000000001C
-:10A04400000000000000000000000000000000000C
-:10A0540000000000000000000000000000000000FC
-:10A0640000000000000000000000000000000000EC
-:10A0740000000000000000000000000000000000DC
-:10A0840000000000000000000000000000000000CC
-:10A0940000000000000000000000000000000000BC
-:10A0A40000000000000000000000000000000000AC
-:10A0B400000000000000000000000000000000009C
-:10A0C400000000000000000000000000000000008C
-:10A0D400000000000000000000000000000000007C
-:10A0E400000000000000000000000000000000006C
-:10A0F400000000000000000000000000000000005C
-:10A10400000000000000000000000000000000004B
-:10A11400000000000000000000000000000000003B
-:10A12400000000000000000000000000000000002B
-:10A13400000000000000000000000000000000001B
-:10A14400000000000000000000000000000000000B
-:10A1540000000000000000000000000000000000FB
-:10A1640000000000000000000000000000000000EB
-:10A1740000000000000000000000000000000000DB
-:10A1840000000000000000000000000000000000CB
-:10A1940000000000000000000000000000000000BB
-:10A1A40000000000000000000000000000000000AB
-:10A1B400000000000000000000000000000000009B
-:10A1C400000000000000000000000000000000008B
-:10A1D400000000000000000000000000000000007B
-:10A1E400000000000000000000000000000000006B
-:10A1F400000000000000000000000000000000005B
-:10A20400000000000000000000000000000000004A
-:10A21400000000000000000000000000000000003A
-:10A22400000000000000000000000000000000002A
-:10A23400000000000000000000000000000000001A
-:10A24400000000000000000000000000000000000A
-:10A2540000000000000000000000000000000000FA
-:10A2640000000000000000000000000000000000EA
-:10A2740000000000000000000000000000000000DA
-:10A2840000000000000000000000000000000000CA
-:10A2940000000000000000000000000000000000BA
-:10A2A40000000000000000000000000000000000AA
-:10A2B400000000000000000000002206DE0106008D
-:10A2C4000400000001030000010000000100000080
-:10A2D40003000000010000000F0000000F00000058
-:10A2E40000000000F6A4000800180240100000005E
-:10A2F40006040000FBA40008001802400800000047
-:10A3040006030100FEA40008001802400200000039
-:10A314000601010005A50008001802400400000021
-:10A32400060201000000000000000000005400408C
-:10A334000004024040000000060004000004024043
-:10A34400000200000900040000002000801A06003A
-:10A35400004000001F20000000000000000000007A
-:10A3640000580040001402400200000001000400F4
-:10A37400001402400100000000000400000040003E
-:10A38400801A0600FFBF0000212200000000000028
-:10A39400F513000801000300820007008400070091
-:10A3A40001000300020003004000030080000700D6
-:10A3B4008400070000000100000000000000000805
-:10A3C400004000080080000800C0000800000108E8
-:10A3D4000000020800000408000006080000080845
-:10A3E40000000A0800000C0800000E080000080025
-:10A3F40010001800200028003000380040004800F9
-:10A4040050005800537475636B20627574746F6EDA
-:10A4140020726567697374657220697320696E764A
-:10A42400616C69642C20636C656172696E672E00CF
-:10A43400427574746F6E20697320707573686564F7
-:10A4440020617420626F6F740069636534306C70CE
-:10A454002E630043444F4E45206E6F74206C6F771B
-:10A4640020647572696E6720726573657400435267
-:10A4740045534554206E6F7420686967682064757D
-:10A4840072696E6720726573657400446973706CD9
-:10A49400617920627573792D776169742074696DAF
-:10A4A400656F75742065787069726564210044690C
-:10A4B40073706C617920696E697469616C697A651D
-:10A4C4006420616674657220002072657472696527
-:10A4D400732E00446973706C617920696E697469C4
-:10A4E400616C697A6174696F6E206661696C656418
-:10A4F4002E004261636B0055700053656C65637494
-:10A5040000446F776E006372632E63006932632EBA
-:10A5140063004932432064657669636520494420B9
-:10A524006F7574206F6620626F756E647320256486
-:10A5340020286D61783A20256429006F6E007370BD
-:10A54400692E6300206973206F75747369646520D4
-:10A5540073797374656D20666C6173680D0A00739A
-:10A56400797374656D5F666C6173685F657261733E
-:10A574006528002C2000290D0A006661696C656459
-:10A5840020746F20657261736520736563746F72E4
-:10A59400200073797374656D5F666C6173685F77AF
-:10A5A4007269746528006661696C656420746F2043
-:10A5B40077726974652061646472657373200049FD
-:10A5C4006E76616C6964206669726D77617265206C
-:10A5D4006465736372697074696F6E2100436865A2
-:10A5E400636B73756D6D696E67206669726D7761F3
-:10A5F40072652075706461746500496E76616C697A
-:10A6040064206669726D77617265204352432069E4
-:10A614006E2053504920666C617368210065726135
-:10A6240073655F6F6C645F6669726D7761726500F4
-:10A6340077726974655F6E65775F6669726D77615D
-:10A64400726500436865636B73756D6D696E672031
-:10A65400002062797465730D0A00436865636B7347
-:10A66400756D202D2077616E746564200020676FFE
-:10A674007420004F757220696E7465726E616C206F
-:10A68400666C61736820636F6E74656E74732061A9
-:10A694007265206261642028636865636B73756DFD
-:10A6A400206661696C656429212054686973206996
-:10A6B40073207265616C6C792062616421004F754E
-:10A6C400722070726576696F7573206669726D7732
-:10A6D40061726520757064617465206661696C657A
-:10A6E400642C2061626F7274696E67207570646196
-:10A6F40074652E004E6577206669726D77617265A8
-:10A7040020697320617661696C61626C6521004C1B
-:10A714006F6164696E67207265636F766572792014
-:10A724006669726D77617265004661696C65642063
-:10A73400746F206C6F6164207265636F76657279E3
-:10A74400206669726D776172652C20737472696B0F
-:10A7540065206F6E652E2054727920616761696E81
-:10A764002E004661696C656420746F206C6F6164AF
-:10A77400207265636F76657279206669726D7761A0
-:10A7840072652C20737472696B652074776F2E2048
-:10A7940054727920616761696E2E004661696C6547
-:10A7A4006420746F206C6F6164207265636F7665DA
-:10A7B4007279206669726D776172652C2073747288
-:10A7C400696B652074687265652E20534144205777
-:10A7D400415443480048415244204641554C54009A
-:10A7E40065786974207374616E64627900205F5FB8
-:10A7F4005F5F2020202020202020202020202020D7
-:10A80400205F5F002F5C20205F605C2020202020E0
-:10A814002020202020202F275F5F605C005C205CCC
-:10A824002C5C4C5C5F5C202020205F5F5F202F5CF1
-:10A83400205C2F5C205C20205F5F20205F5F202055
-:10A844005F5F20205F5F20205F5F00205C2F5F5CE4
-:10A854005F5F205C20202F27205F20605C205C202D
-:10A864005C205C205C2F5C205C2F5C205C2F5C20D7
-:10A874005C2F5C205C2F5C205C002020202F5C205F
-:10A884005C4C5C205C2F5C205C2F5C205C205C209A
-:10A894005C5F5C205C205C205C5F2F205C5F2F2071
-:10A8A4005C205C205C5F5C205C002020205C2060DD
-:10A8B4005C5F5F5F5F5C205C5F5C205C5F5C205C76
-:10A8C4005F5F5F5F2F5C205C5F5F5F785F5F5F2F20
-:10A8D400275C2F605F5F5F5F205C00202020205C8E
-:10A8E4002F5F5F5F5F5F2F5C2F5F2F5C2F5F2F5C9D
-:10A8F4002F5F5F5F2F20205C2F5F5F2F2F5F5F2F05
-:10A90400202020602F5F5F5F2F3E205C00202020EE
-:10A914002020202020202020202020202020202033
-:10A924002020202020202020202020202020202023
-:10A9340020202020202020202F5C5F5F5F2F00201C
-:10A944002020202020202020202020202020202003
-:10A9540020202020202020202020202020202020F3
-:10A96400202020202020202020205C2F5F5F2F002B
-:10A974004C617374206669726D7761726520626FD1
-:10A984006F742077617320737461626C653B20631C
-:10A994006C65617220737472696B657300486F6CC7
-:10A9A4006420646F776E205550202B204241434B26
-:10A9B40020666F72203520736563732E20746F20B8
-:10A9C400666F7263652D626F6F7420505246004645
-:10A9D40069726D7761726520697320657261736550
-:10A9E40064005761746368646F672063617573659D
-:10A9F40064206120726573657400536F66747761B7
-:10AA04007265206661696C75726520636175736532
-:10AA1400642061207265736574004661696C6564C5
-:10AA240020746F207374617274206669726D77612B
-:10AA340072652C20737472696B6520746872656525
-:10AA44002E004661696C656420746F2073746172B2
-:10AA540074206669726D776172652C2073747269F3
-:10AA64006B652074776F2E004661696C6564207491
-:10AA74006F207374617274206669726D7761726598
-:10AA84002C20737472696B65206F6E652E00426FA3
-:10AA94006F74696E67206669726D776172652040B4
-:10AAA40020002E2E2E0D0A0D0A00466F7263652DAE
-:10AAB400626F6F74696E67207265636F7665727911
-:10AAC400206D6F64652E2E2E004153534552543A27
-:10AAD40020002020003A0041535345525400415372
-:10AAE400534552544E002A2A2A20575446200053D4
-:10AAF400544D33320053544D3332207065726970B3
-:10AB0400686572616C206C6962726172792074721A
-:10AB1400697070656420616E20617373657274007E
-:0CAB240043524F414B204F4F4D000000AA
-:10AB3000FF000000000102030401020304060708ED
-:04AB40000900000008
-:04000005080001B43A
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_v1_5@1447134832.bin b/bin/boot/nowatchdog_boot_v1_5@1447134832.bin
deleted file mode 100755
index 6f804d8339..0000000000
Binary files a/bin/boot/nowatchdog_boot_v1_5@1447134832.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_v1_5@1447134832.hex b/bin/boot/nowatchdog_boot_v1_5@1447134832.hex
deleted file mode 100644
index 08b654a8b0..0000000000
--- a/bin/boot/nowatchdog_boot_v1_5@1447134832.hex
+++ /dev/null
@@ -1,1061 +0,0 @@
-:020000040800F2
-:1000000048200120A52C0008053000080530000814
-:100010000530000805300008053000080000000029
-:100020000000000000000000000000000530000893
-:100030000530000800000000053000080530000809
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0CEFD2E
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000BBFD05B05DF804FBD6
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:08018800A7FD05B05DF804FBC2
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F078FCDDF820C01A
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F019FC089B9CE0BA425C
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C00BC3F00084B45F7DBEDE70D9907910798C8
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01C33F0008DE
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C0010B5044608484021FFF794FC0028F9D094
-:10191C0005482146FFF78AFC03484021FFF78AFC63
-:10192C000028F9D010BD00BF00480040014608B5A2
-:10193C000448FFF767FC03480221FFF765FC002809
-:10194C00F9D008BD0038004000B9074803680133DE
-:10195C0008D04368013305D0C069044BC31A584200
-:10196C005841704700207047004000086F57654E83
-:10197C00074B1A69C2F306427F2A07D11869C0F3D4
-:10198C000C00B0F1FF0358425841704700207047DB
-:10199C000028004000F13F4000F57E00800A082836
-:1019AC000FD8084A52F820305BB1013B42F8203086
-:1019BC003BB9012101FA00F0034B1A6B22EA00003B
-:1019CC0018637047200000200038024000F13F40AF
-:1019DC0000F57E00800A08280DD8074A52F82030FE
-:1019EC00591C42F8201033B9012101FA00F0034BC5
-:1019FC001A6B104318637047200000200038024017
-:101A0C0010B50C4C2046FFF7E1FF072001F036FB28
-:101A1C004FF4805100222046FFF786FB042001F092
-:101A2C002DFB2046FFF7B6FF4FF480400021FFF757
-:101A3C0077F810BD0004024010B50B4C01214FF497
-:101A4C008040FFF76DF82046FFF7C0FF20464FF4AB
-:101A5C0080510122FFF768FB072001F00FFB2046A5
-:101A6C00FFF798FF10BD00BF0004024008B5FFF758
-:101A7C00E3FF0020FFF75AFF0020FFF757FF00207D
-:101A8C00FFF754FFFFF7BCFFFEF772FEBFF34F8F5B
-:101A9C00044A054BD16801F4E0610B43D360BFF3FA
-:101AAC004F8FFEE700ED00E00400FA05F0B55E256F
-:101ABC006843204BB0FBF1F51A68ADF6DC3D95425E
-:101ACC0034D002AC00214FF43D6220461D60FEF77D
-:101ADC00BEFA1B238DE818001748102140226923F9
-:101AEC0001F0AFFA08238DE8180014486023182180
-:101AFC006A2201F0A6FA0DF2FA760DF28E7300222C
-:101B0C00AA420DD002F11900C0B2C108012700F0A1
-:101B1C00070007FA00F05F5C013238435854EFE7D6
-:101B2C001233B342EBD1204601F0E3FA0DF6DC3D63
-:101B3C00F0BD00BF08000020B03500084439000893
-:101B4C002DE9F043ADF6DC3D02AC00214FF43D62D3
-:101B5C0080462046FEF77BFA2C238DE818002022C5
-:101B6C00284818215C2301F06CFA1C2215460F271B
-:101B7C00974007EA0807D740234B242101FB07377E
-:101B8C000DF50366002117F801C00023082B07D0C0
-:101B9C000120984010EA0C0F0CBF0020012003E03C
-:101BAC007818407800F0010078B15819C0B24FEAAB
-:101BBC00D00E4FF0010900F0070009FA00F016F8FA
-:101BCC000E9040EA090006F80E000133092BDDD116
-:101BDC000231242906F11206D5D10B35742DA2F150
-:101BEC000402C4D10E238DE81800102190226D231D
-:101BFC00064801F026FA204601F07BFA0DF6DC3D92
-:101C0C00BDE8F083A0330008A4390008DC320008DA
-:101C1C0010B5ADF6D83D02AC204600214FF43D6224
-:101C2C00FEF715FA1B238DE81800102140226923BA
-:101C3C00044801F006FA204601F05BFA0DF6D83D97
-:101C4C0010BD00BFB03500082DE9F74F434E444F8F
-:101C5C0001214FF48040FEF763FF3046FFF7B6FEDC
-:101C6C003846404CFFF7B2FE30460D210522FFF7F7
-:101C7C0060FA052230460F21FFF75BFA3046214609
-:101C8C000125FFF7FEF920233846214623602571F4
-:101C9C00A5714FF0000A01934FF4805BFFF7F1F947
-:101CAC00304621464FF002084FF48049257184F8E4
-:101CBC0006A0C4F800B0FFF7E4F93046214684F8DA
-:101CCC000480C4F80080FFF7DCF921462571A5716A
-:101CDC00C4F80090244C3046FFF7D3F92046FFF7A8
-:101CEC0039F920462149FFF75FFA20462946FFF7CC
-:101CFC007AFA019B384619465246FFF715FA2A46DE
-:101D0C0030464946FFF710FA40462946FEF708FFD1
-:101D1C00A4F5505480232380F92323854FF4F042FB
-:101D2C004FF6FF13E3623046A283294623644246F2
-:101D3C00A4F820B0FFF7FDF929462046A582FEF74E
-:101D4C001FFD3846FFF726FE3046FFF723FE4846B8
-:101D5C005146FEF7E5FE03B0BDE8F08F00040240EB
-:101D6C000008024000000020003800400C00002059
-:101D7C0010B5074C2046FFF729FE20461021FFF72F
-:101D8C00CFF92046FFF706FE012001F077F910BDD0
-:101D9C000000024038B50A4B0C2404FB0034606888
-:101DAC00FFF714FE21896068FFF7B4F905466068F7
-:101DBC00FFF7F0FDD5F1010038BF002038BD00BFA2
-:101DCC009432000810B5064C2046FFF7FFFD204664
-:101DDC001021FFF7A7F92046FFF7DCFD10BD00BF6F
-:101DEC0000000240F0B587B0FFF7C2FD002841D1DA
-:101DFC000320FFF759F807460420FFF755F8474B27
-:101E0C000A241A68C2F30545C2F30626C2F302136C
-:101E1C0002F00F0204FB0322330906F00F0604FB49
-:101E2C0003662B0905F00F0504FB03533C2505FB4A
-:101E3C00036305FB0323191A44BF01F5A83101F50F
-:101E4C00C07107EB91210320FFF71EF803A8FFF7E1
-:101E5C0098F903A8FEF7F4FE01A8FFF798F901A979
-:101E6C000020FEF731FF02A8FFF797F9002002A926
-:101E7C00FEF794FF0A2442F2107501F05CF910B9D8
-:101E8C00013DFAD107E0264D01F055F908B1013DAD
-:101E9C00FAD1013CEFD10020FEF792FD00214FF268
-:101EAC000400FFF71DF84FF43C50FFF745F81D4BAD
-:101EBC0001201A6842F004021A60FEF781FD1A4BE9
-:101ECC001B781BB1194801F055F908E01848FEF7CA
-:101EDC0001F9174902461748FEF7DDF970B11648AB
-:101EEC0001F048F90020FEF7EFFF08200121FEF772
-:101EFC00B7FF4FF400400121FEF7F2FF0F4801F04D
-:101F0C0039F9084B1A6842F002021A600C4B1A6934
-:101F1C0042F004021A6130BF07B0F0BD0028004047
-:101F2C00A086010000700040017AFF1F2A370008CC
-:101F3C003F3700082078FF1F443700085937000846
-:101F4C0000ED00E0B0F1006F10B504460BD20D4867
-:101F5C0001F007F9204601F013F90B4801F00AF9DA
-:101F6C004FF0FF3010BD094A002352F8041FA14264
-:101F7C0002D851688C4202D30133072BF5D1184695
-:101F8C0010BD00BF6D3800086A37000870320008B9
-:101F9C0008B5024801F0EEF800BEFEE783370008F2
-:101FAC0010B504460A480221FFF72EF90028F9D093
-:101FBC0007482146FFF726F905480121FFF724F9C8
-:101FCC000028F9D00248FFF71AF9C0B210BD00BFC3
-:101FDC00003001402DE9F04F87B00121814600AF60
-:101FEC000020FFF763FD042001F063F807F10C00FB
-:101FFC0049460C2201F0E9F8FD683C690C2DD7F834
-:10200C0014B013D0994801F0ACF8284601F0B8F898
-:10201C00974801F0A6F8204601F0B2F8954801F077
-:10202C00A0F8584601F0ACF8934833E0934801F01F
-:10203C00A1F84FF480500121FEF766FD09F10C095F
-:10204C00EA46FEF7DFFBA0B06E462546C846802D5B
-:10205C000CD941463046802201F0B7F83046202199
-:10206C00FEF7DCFB803D08F18008F0E725B1304637
-:10207C0041462A4601F0A9F82946304600F0C6FF31
-:10208C00002180464FF48050FEF73EFDD845D546E2
-:10209C0004D07B4801F06EF80120E3E088B068467C
-:1020AC004946202201F091F86846FFF74DFC786014
-:1020BC007448D54601F05EF87B682BB9724801F084
-:1020CC0059F804F5404600E02646002E3BD06F48F8
-:1020DC00FFF738FF05466E483044FFF733FF002DFD
-:1020EC00824630DB00282EDB431B01334FEA430BC7
-:1020FC0000205946FFF7DAFCFEF7B0FB654B0026D3
-:10210C0003EB45033B6055451BDCF320FEF7BCFBA2
-:10211C003B68002133F81600FEF7D6FB082806F1C1
-:10212C00010608D05C4801F01CF8284601F028F89C
-:10213C0001F00FF805E030465946FFF7B7FC0135C2
-:10214C00E1E7FEF799FB554801F014F87B680BB1F9
-:10215C004E4B00E0524B7B6063083B600025A54270
-:10216C003CD2661BB6F5803F28BF4FF480362EB1AB
-:10217C004C4805EB0901324601F027F8D7F804A0CA
-:10218C00FEF76CFBF320FEF77FFBAA444FF0000B2D
-:10219C00B34519D043490BEB0A0011F80B10FEF7AD
-:1021AC00CBFB08280DD0404800F0DBFF504600F078
-:1021BC00E7FF00F0CEFFFEF75FFB3C4800F0DAFFD4
-:1021CC000CE00BF1010BE3E7FEF756FB3B682146F5
-:1021DC0003EB5500FFF76AFC5D44C0E7344800F0A0
-:1021EC00C0FF204600F0CCFF324800F0C3FF0020B7
-:1021FC00FFF7AAFB20B1304800F0BCFF234D03E0F1
-:10220C002E4800F0B7FF264D4FF480500121A60850
-:10221C00FEF77AFCFEF7F6FA31462846FEF7FEFA90
-:10222C0004F0030105EB860000F0F0FE00210446EB
-:10223C004FF48050FEF768FC214800F092FF4046B6
-:10224C0000F09EFF1F4800F08CFF204600F098FF26
-:10225C0000F07FFF444504D01B4800F08BFF0220A8
-:10226C0000E000201C37BD46BDE8F08F8E3700081B
-:10227C0097370008A1370008A8370008C7370008AF
-:10228C00E4370008073800081A3800080040000836
-:10229C00FF3F0008CC320008323800084A380008EA
-:1022AC0000000108440000205D3800087638000862
-:1022BC00813800088F38000896380008BB380008B1
-:1022CC00E0380008F3380008F938000870B54FF40E
-:1022DC0080500121FEF730FCFFF774FD0520164CF1
-:1022EC00FFF75EFE002C04F1FF341FDCFFF740FD0E
-:1022FC00FFF768FD9F20FFF753FEA920FFF750FE64
-:10230C000546A920FFF74CFE0646A920FFF748FE1C
-:10231C003602044646EA0545FFF72AFD4FF4805085
-:10232C000021FEF709FC45EA040070BDA920FFF767
-:10233C0037FEC307D6D4D9E70090D00308B50446BE
-:10234C00114800F00EFF204600F01AFF00F001FFCC
-:10235C002046FFF7F5FB00F0EEFE0C4B20F00400DE
-:10236C0018701D4600F0E7FE2B7800F0FB0083424E
-:10237C0001D10B2401E0FFF779FB013CF2D04FF4C3
-:10238C007A7000F07BFEF8E7E43B00084400012083
-:10239C0080B5464B4FF4C06290B01A6001214FF0EB
-:1023AC008050FEF7BDFB0120FEF704FB4048FFF711
-:1023BC000DFB4FF480200121FEF7B2FB3C480A21B3
-:1023CC000722FEF7B6FE072239480B21FEF7B1FEB5
-:1023DC0010AF4FF4806347F8383D00244FF00108EC
-:1023EC000225334839468DF80E408DF80F808DF854
-:1023FC000C508DF80D50FEF744FE4FF400632C4842
-:10240C00394602938DF80C5004AEFEF73AFE4FF4A9
-:10241C006133049327480C233146ADF81A30ADF8DC
-:10242C001440ADF81640ADF81840ADF81C40FEF75E
-:10243C00BFFD41461F48FEF7EDFE1D48FFF7AAFA07
-:10244C001D4800F08EFE1D4B586F00F099FE00F0F9
-:10245C0080FE7920FEF7B8FB404502D1184800F009
-:10246C0089FE012000F010FE10B90121FEF70CFDD1
-:10247C004120FEF7A9FB58BB124800F07BFE01205F
-:10248C00FEF7D0FA47F230544120FEF79DFBF8B925
-:10249C004FF47A7000F0F2FD013CF5D10A4800F0DF
-:1024AC0069FEFFF7D1FB094837E100BF003C024051
-:1024BC000008024000480040F03B00080038024091
-:1024CC00003C0008103C0008283C0008114550FE58
-:1024DC004FF48070FEF7FAFA0120FEF70FFBFEF7BF
-:1024EC00D1FB0020FEF76CFA01214FF48040FEF77F
-:1024FC0023FBBB48FFF76AFA3046FEF702FE0024C6
-:10250C000125B74831468DF815408DF816408DF8E9
-:10251C00174004958DF81450FEF7B3FD2246B048D1
-:10252C002946FEF701FEAE48FFF734FAAD4C04F134
-:10253C00300954F8040CFFF749FA3046FEF7E1FD78
-:10254C00236854F8040C4FF000083146022504931C
-:10255C008DF814808DF815508DF817800C34FEF71B
-:10256C0090FD54F8100CFFF715FA4C45E1D14FF4DF
-:10257C0080404146FEF7E0FA4FF4807000F084FD95
-:10258C00002800F0CC804FF4807000F087FDFFF73E
-:10259C0029FC954800F0EEFD0220FEF785FC9349DE
-:1025AC00884202D00220FEF76FFC914800F0D9FD62
-:1025BC000220FEF779FC00F0E3FD00F0CAFD4FF4B9
-:1025CC00804000F061FD90B18A4800F0D3FD4FF4DB
-:1025DC00804000F063FD082000F060FD102000F04A
-:1025EC005DFD202000F05AFD402000F057FDFFF764
-:1025FC002BFBFFF70DFB01214FF48050FEF79CFAEB
-:10260C007748FFF7E3F901200146FEF77DFA052133
-:10261C000A467348FEF78DFD714806210522FEF728
-:10262C0088FD05226E480721FEF783FD0024022554
-:10263C00C0236B4839468DF80C508DF80D50029321
-:10264C008DF80E408DF80F40FEF71BFD20236448DB
-:10265C0039468DF80F5002930125FEF712FD102319
-:10266C0039465F4802938DF80C508DF80F50FEF7E9
-:10267C0008FD6148FEF76EFC4FF48273ADF8123022
-:10268C004FF40073ADF81A305B4807233146ADF8B0
-:10269C002030ADF81040ADF81440ADF81640ADF850
-:1026AC001840ADF81C40ADF81E40FEF77DFD2946E4
-:1026BC005148FEF798FD4A48FFF76CF9FFF782FB8B
-:1026CC00AB20FFF76DFCFFF753FB642000F0D6FC4A
-:1026DC0021464FF48050FEF72FFAFFF7F7FD2846FE
-:1026EC00FEF7E2FB25460490E8B2FFF753FB98BBDC
-:1026FC0070550135042DF7D1049D3DB13F4800F0D4
-:10270C0030FD284600F03CFD00F023FD0120294659
-:10271C00FEF7BAFB002C3DD03948FFF70FFE2846D8
-:10272C00FEF754F9012814D12846FEF759F94FF455
-:10273C000060FEF7F3FB18B1324800F01BFDB9E066
-:10274C00314C00F0F8FC002800F00481013CF8D179
-:10275C00B0E000F0B9FC1CE7735D042B0ADD2B48DC
-:10276C0000F008FD049800F00BFD01200021FEF79D
-:10277C008BFB0FE00133DBB2042B7355B9DD24481E
-:10278C0000F0EFFC284600F0FBFC224800F0F2FCC5
-:10279C000124AEE7FFF79AFD1F4B0344012B01D92F
-:1027AC001E48BAE71E4800F0DCFC0020FEF77CFB5C
-:1027BC0000F0E6FC00F0CDFC802000F065FC18B1C8
-:1027CC00802000F06BFC73E04FF4003000F05CFCF8
-:1027DC00044638B34FF4003000F060FC04E100BF55
-:1027EC00000002409C320008603C00087086415694
-:1027FC009C3C0008B13C0008003001401F3D000823
-:10280C00014550FE453C0008A0860100DE3C000856
-:10281C000A3D0008153D0008EA44DFFF024550FE62
-:10282C004B3D00080120FFF7B5FAD8B12046FFF761
-:10283C00B1FAB8B1B74800F09DFC41F288340120E0
-:10284C00FFF7A8FA002800F08B800020FFF7A2FA0F
-:10285C00002800F085804FF47A7000F00FFC013CEA
-:10286C00EDD1C1E00020FFF76FF808B1AA4B00E0F2
-:10287C00AA4B0CCB013301D0013271D1A84800F026
-:10288C0079FCB1E0A74800F075FC082000F006FCCC
-:10289C00102000F003FC202000F000FC402000F091
-:1028AC00FDFB0024042000F0F9FB002C40F0088113
-:1028BC009D4832E7FFF75CF8002847D0002001A9BB
-:1028CC009A4DFEF749FA344600203946FEF7A8FA2D
-:1028DC000FCD0FC40FCD0FC495E80F0084E80F0087
-:1028EC009DF8092010A901EB82039DF80BE053F829
-:1028FC00343C40F26D1101FB0E3303EB9E030EF1E1
-:10290C00010E1EF0030F02D1022A88BF01339DF87D
-:10291C000A409DF80410013C2344182404FB0314C2
-:10292C009DF805103C2202FB04149DF806100320B0
-:10293C0002FB0414FEF7B8FA01190320FEF7A4FAFF
-:10294C0004200021FEF7A0FA00F0BEFB784800F04E
-:10295C0011FC1EE6774800F00DFCFFF743FAF5E793
-:10296C007D20FEF731F970B94FF4007000F08CFB4C
-:10297C0048B9714800F0FEFB082000F08FFB1020D6
-:10298C0000F08CFB85E07D20FEF71EF910B16B4842
-:10299C0000F0F0FB4FF4007000F076FB10B16848CB
-:1029AC0000F0E8FB4FF4007000F078FB102000F012
-:1029BC006BFB48B1634800F0DDFB082000F06EFBB8
-:1029CC00102000F06BFB12E0082000F05DFB20B142
-:1029DC005D4800F0CFFB102003E05C4800F0CAFB20
-:1029EC00082000F066FB54E0594800F0C3FB59483E
-:1029FC0000F0C0FB4FF40010FFF7ECFA10B1022806
-:102A0C0028D809E0202000F049FB402000F046FBCC
-:102A1C00802000F04EFB1DE0082000F04AFB102047
-:102A2C0000F047FB202000F02FFB20B94A4800F0B3
-:102A3C00A1FB202009E0402000F026FB00287FF4B9
-:102A4C0021AF464800F096FB402000F032FB4FF4DB
-:102A5C0000701AE0012425E7414800F08BFB0820A8
-:102A6C0000F01CFB102000F019FB202000F016FBDE
-:102A7C00402000F013FB2046FFF7ACFA022840F090
-:102A8C00F080082000F015FB102000F012FBFEF780
-:102A9C00EDFF022000F0F8FA90B1042000F0F4FAF7
-:102AAC0004460028D8D02F4800F064FB042000F026
-:102ABC00F5FA022000F0F2FA4FF4004000F0EEFAC2
-:102ACC004FF4005000F0E0FA04464FF4805000F050
-:102ADC00DBFA400040EA84044FF4006000F0D4FAC2
-:102AEC00E4B22043431C03F0FF03013B4FF40060AE
-:102AFC00062B58D8DFE803F03C383C043C383C004B
-:102B0C0000F0CCFA4FF4805000F0C8FA4FF40050AB
-:102B1C002EE000BF573D00080040000800000108EF
-:102B2C00893D0008B33E0008034550FE44320008BE
-:102B3C00503C0008523F00089C3D0008AD3D000889
-:102B4C00C53D0008E53D0008FB3D0008113E0008AE
-:102B5C00673F0008273E0008413E00087A3E000807
-:102B6C00233F0008ED3E000800F098FA4FF4805027
-:102B7C0000F09FFA45F25550FDF7FAFE0420FDF7E0
-:102B8C00FDFE40F6FF70FDF7FFFE0020FDF7F0FEA6
-:102B9C004FF480500121FDF755FE0020FEF7D4FEC6
-:102BAC0068B9354B0CE000F079FA4FF4805000F026
-:102BBC0075FA4FF4005000F071FA3048ADE5304B27
-:102BCC005D6830481E6800F0CCFA284600F0D8FA50
-:102BDC0000F0BFFA00F0BDFA00239A0002F1604247
-:102BEC00013302F561424FF0FF31082BC2F880101F
-:102BFC00C2F88011F1D1244B00241C635C639C63EC
-:102C0C001C645C64FDF7F4FE20480121FDF7A0FF75
-:102C1C0021461E48FDF79CFFF1200121FDF7A4FF82
-:102C2C002146F120FDF7A0FF01200146FDF7A8FF8A
-:102C3C0021460120FDF7A4FF15480121FDF7ACFF4B
-:102C4C0021461348FDF7A8FF12480121FDF7B0FFFC
-:102C5C0010482146FDF7ACFF63B64FF0FF3EB5467A
-:102C6C002847042000F01AFA022000F017FA4FF45B
-:102C7C00004000F01EFA23E700000108044550FE56
-:102C8C00004000083E3F000800380240001060225F
-:102C9C00FFC9FE36335907000748084A08B50849EA
-:102CAC00121AFDF7CBF90748074A0021121AFDF753
-:102CBC00CEF9FFF76DFB00BF0000002020000020C4
-:102CCC00D43F000820000020480001202DE9F04FDF
-:102CDC00DDE909AB0E469C4603783B490746C95CC7
-:102CEC0001300D07F8D42B2B05D02D2B04D1074622
-:102CFC004FF0FF3301E007460123397830290ED11C
-:102D0C007978782905D132F0100103D102371022DD
-:102D1C0007E00AB1082A04D10137082201E002B900
-:102D2C000A2200200021B84617F8015BA5F13004F7
-:102D3C00E4B2092C0DD9A5F14104192C02D8A5F146
-:102D4C00370405E0A5F16104192C30D8A5F157041E
-:102D5C00E4B294422BDA4FEAE27900FB09F502FB6C
-:102D6C000155A0FB0201E4B2294400194FF0000503
-:102D7C0041EB0501BCF1000FD5D0012B06D18245EA
-:102D8C007BEB0104CFDA50465946CCE75C1CCAD128
-:102D9C00DDE90B89444261EB4105444575EB0909BA
-:102DAC00C1DADDE90B01404261EB4101BBE70EB139
-:102DBC00C6F80080DD1700FB05F203FB0122A0FB27
-:102DCC0003011144BDE8F08F4C1200082DE9F04FBF
-:102DDC0091B01F9E0C46310691468046DDE91A23C0
-:102DEC001E9D04D5CDE902234FF0000C1BE0002AF8
-:102DFC0073F100071046194602DA504263EB4301A7
-:102E0C00002A73F1000ACDE9020107DBB70708D4E9
-:102E1C0016F0040C07D04FF0200C04E04FF02D0CF2
-:102E2C0001E04FF02B0C16F04007089714BF704FC1
-:102E3C00704FDDE902AB079700271C980137C117CB
-:102E4C00CDE90401DDE904230AA93944099150466E
-:102E5C005946CDF804C0FEF773FA07980999835CBC
-:102E6C00504601F8013C5946DDE90423FEF768FAA7
-:102E7C0082468B465AEA0B02DDF804C001D0162FAD
-:102E8C00DBD116F0080239461DD01C9B082B02D052
-:102E9C00102B0ED01CE0DDE902AB1DB95AEA0B0B6E
-:102EAC0013D004E05AEA0B0B12D0BD4210DC7B1C91
-:102EBC000FE0DDE902AB5AEA0B0B09D008982B4660
-:102ECC0048B1582208E02B4606E02A46012303E0CD
-:102EDC002B46002200E078221CF1000B1D98C7EB5A
-:102EEC00030A18BF4FF0010BBB42A8BF1F46C01B03
-:102EFC002AEAEA7ACBEB00000AB1022700E0174677
-:102F0C00C71B16F0010027EAE77701D07F4205E0E6
-:102F1C00F60603D5013504BFBA4407463D46002DDD
-:102F2C000BDD2068013D461C4E453CBF202608F8B1
-:102F3C000060206801302060F1E727EAE7703F1A53
-:102F4C00BBF1000F08D02068451C4D4538BF08F870
-:102F5C0000C02068013020608AB12068451C4D45B6
-:102F6C003CBF302508F800502568681C02354D45DB
-:102F7C00206038BF08F80020226801322260BAF1C4
-:102F8C00000F0CD022680AF1FF3A501C48453CBF98
-:102F9C00302008F80200226801322260EFE7DDE9F8
-:102FAC0002AB5AEA0B0B10D17BB919460DE0236822
-:102FBC0001395A1C4A4505D201F1280568462A5C9C
-:102FCC0008F803202368013323600029EFD15FB197
-:102FDC00236801375A1C4A453CBF202208F80320BD
-:102FEC00236801332360F2E711B0BDE8F08F00BF16
-:102FFC009A3F0008AB3F00081EF0040F0CBFEFF324
-:10300C000880EFF30980FEF7C3BF7047032970B542
-:10301C0005460C4606D98E083146FDF7FFFBB60077
-:10302C003544A41B14B9FDF707FC70BD00231846EA
-:10303C00EA5C0133A34242EA0020F9D1FDF7E8FB38
-:10304C0070BD2DE9F0410733DE08079B4FF01208E5
-:10305C0008FB02320731069F054602EBD10800241B
-:10306C00BC4209D0122000FB048029463246FCF7F2
-:10307C00E5FF01343544F3E7BDE8F08106235843FE
-:10308C0001387FF4FDAF704710B504460020FDF702
-:10309C000BFF20420CBF0020012010BD10B50446D0
-:1030AC000020FDF701FF20EA04010020FDF7ECFEF3
-:1030BC0010BD10B504460020FDF7F6FE40EA0401F1
-:1030CC000020FDF7E1FE10BD1FB501A8FEF759F871
-:1030DC000723029301A803230393FDF7B1FD684670
-:1030EC00FEF755F869460020FDF7EEFD05B05DF8DA
-:1030FC0004FB70B50646FEF79FFC8020FEF716FC1D
-:10310C00A82420BA90FAA0F0C0B2FEF70FFC11254B
-:10311C00705DFEF70BFC15F1FF35F9D20020FEF7C0
-:10312C0005FC013C06F11206EBD12046FEF7FEFB36
-:10313C00FEF766FC70BD38B500242546E0B2FEF7FC
-:10314C0029FEA04001340543042CEDB2F6D12846EB
-:10315C0038BD08B50D20FEF7D3FB0A20FEF7D0FBD7
-:10316C0008BD10B5441E14F8010F10B1FEF7C8FBD2
-:10317C00F9E710BD08B5FFF7F4FFFFF7EAFF08BD4C
-:10318C001FB530238DF8043078238DF805300723D4
-:10319C0099000F228A400240CA40092A01D83032D5
-:1031AC0002E00F2A02D85732D2B200E0202201A945
-:1031BC00CC1A13F1FF336272EAD2002308468DF861
-:1031CC000E30FFF7CEFF04B010BD70B504460D46AF
-:1031DC004FF4805001211646FDF7AEFCFEF7F2FDD0
-:1031EC000520FEF7DDFEA920FEF7DAFEC307FAD4B0
-:1031FC00FEF7BEFDFEF7E6FD0320FEF7D1FEC5F39C
-:10320C000740FEF7CDFEC5F30720FEF7C9FEE8B276
-:10321C00FEF7C6FE2644B44205D0A920FEF7C0FE38
-:10322C0004F8010BF7E7FEF7A3FD4FF480500021E3
-:10323C00FDF782FC70BD0000000000001F000000C4
-:10324C003B0000005A0000007800000097000000CE
-:10325C00B5000000D4000000F300000011010000D4
-:10326C00300100004E010000000000080040000882
-:10327C000080000800C000080000010800000208DF
-:10328C000000040800000608863F00080008024001
-:10329C00080000008B3F0008000002400400000002
-:1032AC008E3F00080008024040000000953F0008D7
-:1032BC00000002400200000000000240010000007B
-:1032CC000000080010001800200028003000380012
-:1032DC000000068301000000000000000000000058
-:1032EC00068301000000000C0000000000000683B3
-:1032FC0001000000000C00000000D878369B79C05B
-:10330C00E3D90C8C67DB3C1BF8FD7EBFFDE0F7FBC3
-:10331C001FC6EFFB7E1F98CD66B3CD60369B19C6DA
-:10332C006C18660398FD66B3FD60309B19C66F1868
-:10333C00660398FD66B3FD60309B19C36F18660376
-:10334C00980D66B30D60369B19C360186603F8FDC3
-:10335C007EBFFDECF79B19C36F187E03D878369BA4
-:10336C0079CCE399998167183C03180000000000A0
-:10337C0000008001000000001800000000000000A8
-:10338C000000000000001800000000000000000019
-:10339C0000000000000C000600000000600030007F
-:1033AC000018000300000000C0001800003080016D
-:1033BC000000000080010C000060C0000000000054
-:1033CC000003060000C060000000000000060300BF
-:1033DC000080310000000000008C010000001B0088
-:1033EC000000000000D8000000000E0000000000EB
-:1033FC000070000000000E000000000000700000D3
-:10340C0000001B000000000000D80000008031000C
-:10341C0000000000008C010000C0600000000000F3
-:10342C00000603000060C00000000000000306005E
-:10343C00003080010000000080010C000018000327
-:10344C0000000000C0001800000C00060000000086
-:10345C0060003000000000000000000000000000D0
-:10346C000000000000000000000000000000000050
-:10347C000000000000000000000000000000000040
-:10348C000000000000000000000000000000000030
-:10349C000000000000000000000000000000000020
-:1034AC000000000000000000000000000000000010
-:1034BC00000000000000000080FFFF010000000081
-:1034CC0000000000FEFFFF7F00000000000000E095
-:1034DC007F0000FE07000000000000FE01000080DD
-:1034EC007F0000000000801F00000000F8010000B9
-:1034FC000000F00100000000800F000000007C00C4
-:10350C0000000000003E000000000F000000000062
-:10351C0000F00000008003000000000000C001006B
-:10352C0000E0000000000000000007000070000038
-:10353C000000000000000E00001800000000000059
-:10354C0000001800000C000000000000000030001B
-:10355C0000060000000000000000600000030000F6
-:10356C00000000000000C00080010000000000000E
-:10357C0000008001C00000000000000000000003FB
-:10358C006000000000000000000000063000000099
-:10359C00000000000000000C100000000000000003
-:1035AC00000000080000000000600000030018008C
-:1035BC000000000000000060000003001800000084
-:1035CC000000000000600000030018000000000074
-:1035DC000000006000000300180000000000000064
-:1035EC000060000003001800000000E003001F60F2
-:1035FC00F800C30718C0070000F80FC07F60FE0377
-:10360C00F31F18F01F00000C1860C06003061B307D
-:10361C00181830000006303080E1010C0F60180CD7
-:10362C0060000003601800E3001807C01806C00013
-:10363C008001400C006200100380180380008001A0
-:10364C00C00C006600300380190380018001C0FCAF
-:10365C00FF670030038019FFFF018001C0FCFF638E
-:10366C000030038019FFFF008001C00C00600030A7
-:10367C000380190300008001C00C0060003003803F
-:10368C00190300008001400C006200100380180335
-:10369C0080008003601800C3001806C01806C00024
-:1036AC00800730308081010C0C60180C6000800D9C
-:1036BC001860C000030618303818300080F90FC0AD
-:1036CC007F00FE03F01F70F01F0080E103001F005D
-:1036DC00F800C00760C00700800100000000000077
-:1036EC00000000000000800100000000000000004D
-:1036FC00000000008001000000000000000000003D
-:10370C00000080010000000000000000000000002C
-:10371C0080010000000000000000000000004E6F5F
-:10372C002048572056657273696F6E20696E204F62
-:10373C0054500056335231007573622077616B65BB
-:10374C00757020737570706F7274656400456E745B
-:10375C006572696E67207374616E646279002069AA
-:10376C0073206F7574736964652073797374656DF8
-:10377C0020666C6173680048415244204641554CA8
-:10378C005400446573636C656E20000A4669726D63
-:10379C006C656E20000A5873756D20000A496E76B0
-:1037AC00616C6964206669726D776172652064650D
-:1037BC00736372697074696F6E2100436865636B23
-:1037CC0073756D6D696E67206669726D7761726570
-:1037DC002075706461746500496E76616C69642053
-:1037EC006669726D776172652043524320696E2061
-:1037FC0053504920666C6173682100657261736572
-:10380C005F6F6C645F6669726D77617265004F6C97
-:10381C006420576F726C64206669726D7761726593
-:10382C002062617365006661696C656420746F2049
-:10383C00657261736520736563746F7220007772B3
-:10384C006974655F6E65775F6669726D77617265C5
-:10385C00006661696C656420746F207772697465A9
-:10386C00206164647265737320005765277265204C
-:10387C006465616400436865636B73756D6D696E37
-:10388C00672000206279746573004E657720576F4E
-:10389C00726C64206669726D7761726520737973DE
-:1038AC0074656D5F666C6173685F62617365004F10
-:1038BC006C6420576F726C64206669726D776172EC
-:1038CC00652073797374656D5F666C6173685F6294
-:1038DC0061736500436865636B73756D202D20778C
-:1038EC00616E746564200020676F7420004F7572E0
-:1038FC0020696E7465726E616C20666C61736820F1
-:10390C00636F6E74656E747320617265206261649E
-:10391C002028636865636B73756D206661696C65DF
-:10392C006429212054686973206973207265616C65
-:10393C006C79206261642100FFFFFFFFFFFFFFFF36
-:10394C00FFFFFFFF010000000000000000000080EE
-:10395C0001000000000000000000008001000000D9
-:10396C0000000000000000800100000000000000CA
-:10397C00000000800100000000000000000000803A
-:10398C00010000000000000000000080FFFFFFFFAE
-:10399C00FFFFFFFFFFFFFFFF7C00FE00FF01C701E1
-:1039AC00C701C701C701C701C701C701C701C701CB
-:1039BC00C701C701C701FF01FE007C0038003C00B5
-:1039CC003E003E003800380038003800380038001F
-:1039DC0038003800380038003800FE00FE00FE00C9
-:1039EC007C00FE00FF01C701C701C001C001E0005F
-:1039FC00F00078003C001E000E000F000700FF01D5
-:103A0C00FF01FF017C00FE00FF01C701C701C001DF
-:103A1C00C001F8007800F800C001C001C001C70166
-:103A2C00C701FF01FE007C00E000E000F000F000A8
-:103A3C00F800F800F800FC00EC00EE00E600FF01D6
-:103A4C00FF01FF01E000E000E000E000FF00FF00EC
-:103A5C00FF000700070007007F00FF00FF01C70100
-:103A6C00C001C001C701C701C701FF01FE007C00F6
-:103A7C007C00FE00FF01C701C701070007007700AB
-:103A8C00FF00FF01C701C701C701C701C701FF0143
-:103A9C00FE007C00FF01FF01FF01E000E000700070
-:103AAC007000700038003800380038001C001C0012
-:103ABC001C001C001C001C007C00FE00FF01C70148
-:103ACC00C701C701C701FE007C00FE00C701C7018A
-:103ADC00C701C701C701FF01FE007C007C00FE008E
-:103AEC00FF01C701C701C701C701C701FF01FE01E3
-:103AFC00DC01C001C001C701C701FF01FE007C0051
-:103B0C0000000000000000007C00FE00FF01C70167
-:103B1C00C701F001FC01CE01C701C701E701FF019C
-:103B2C00DF01CE010700070007000700E700F701DF
-:103B3C00FF01CF01C701C701C701C701C701C701F9
-:103B4C00CF01FF01F701E7000000000000000000BA
-:103B5C007C00FE00FF01C701C7010700070007003A
-:103B6C000700C701C701FF01FE007C00C001C001B6
-:103B7C00C001C001CE01DF01FF01E701C701C70190
-:103B8C00C701C701C701C701E701FF01DF01CE0172
-:103B9C0000000000000000007C00FE00FF01C701D7
-:103BAC00C701C701FF01FF010700C701C701FF01E2
-:103BBC00FE007C00E000F000F8003800FE00FE0083
-:103BCC00FE00380038003800380038003800380063
-:103BDC0038003800380038005341442057415443D2
-:103BEC00483A200052657365742052656769737496
-:103BFC006572200042726F776E206F75742072654B
-:103C0C00736574005374617274696E67204C53450C
-:103C1C00206F7363696C6C61746F72004C53452038
-:103C2C006F7363696C6C61746F7220646964206E6D
-:103C3C006F74207374617274005553422077616BFA
-:103C4C00657570006C656176696E67207374616E62
-:103C5C0064627900205F5F5F5F5F5F202020205FE0
-:103C6C005F0D0A2F5F20205F5F2F205F5F2F202FBB
-:103C7C000D0A202F202F2020202F5F20205F5F2F68
-:103C8C000D0A2F5F2F20202020202F5F2F0D0A00E0
-:103C9C00426F6F746C6F61646572207665727369C4
-:103CAC006F6E3A20004C617374206669726D776197
-:103CBC00726520626F6F7420776173207374616218
-:103CCC006C653B20636C65617220737472696B6503
-:103CDC007300537475636B20627574746F6E20720D
-:103CEC006567697374657220697320696E76616C9F
-:103CFC0069642C20636C656172696E672E00427575
-:103D0C0074746F6E2069642000697320737475631A
-:103D1C006B2100427574746F6E207761732070751F
-:103D2C0073686564206F6E20626F6F742E2042750D
-:103D3C0074746F6E20636F756E7465723A200042F6
-:103D4C006F6F7420626974733A2000486F6C642042
-:103D5C00646F776E205550202B204241434B2066D8
-:103D6C006F72203520736563732E20746F20666F1D
-:103D7C007263652D626F6F742050524600466972F3
-:103D8C006D7761726520697320657261736564007B
-:103D9C00426F6F74696E67206E6F726D616C6C79B7
-:103DAC00005761746368646F672063617573656441
-:103DBC00206120726573657400536F66747761724D
-:103DCC0065206661696C75726520636175736564E5
-:103DDC00206120726573657400426F6F7420666198
-:103DEC00696C65642C20737472696B6520330042B6
-:103DFC006F6F74206661696C65642C2073747269D2
-:103E0C006B65203200426F6F74206661696C65646B
-:103E1C002C20737472696B652031004C6F6164697E
-:103E2C006E67207265636F76657279206669726D54
-:103E3C0077617265004661696C656420746F206CF3
-:103E4C006F6164207265636F766572792066697242
-:103E5C006D776172652C20737472696B65206F6E5F
-:103E6C00652E2054727920616761696E2E0046615F
-:103E7C00696C656420746F206C6F6164207265637B
-:103E8C006F76657279206669726D776172652C2028
-:103E9C00737472696B652074776F2E20547279205D
-:103EAC00616761696E2E004661696C656420746F90
-:103EBC00206C6F6164207265636F76657279206621
-:103ECC0069726D776172652C20737472696B6520F1
-:103EDC0074687265652E2053414420574154434801
-:103EEC00004F75722070726576696F757320666904
-:103EFC00726D77617265207570646174652066619E
-:103F0C00696C65642C2061626F7274696E672075D0
-:103F1C0070646174652E004E6577206669726D77EA
-:103F2C0061726520697320617661696C61626C6590
-:103F3C002100426F6F74696E67206669726D7761DC
-:103F4C0072652040200072657475726E696E672010
-:103F5C00746F207374616E64627900466F7263656E
-:103F6C002D626F6F74696E67207265636F76657210
-:103F7C0079206D6F64652E2E2E004261636B0055A7
-:103F8C00700053656C65637400446F776E0030315C
-:103F9C0032333435363738394142434445460030A4
-:103FAC0031323334353637383961626364656600D3
-:103FBC00286E756C6C2900000000000102030401DE
-:083FCC000203040607080900C6
-:103FD40000A0000002020000FFFFFFFF00C0040178
-:103FE40000000000000000021000000007000000B4
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/nowatchdog_boot_v2_0@1447134832.bin b/bin/boot/nowatchdog_boot_v2_0@1447134832.bin
deleted file mode 100755
index 60af30713f..0000000000
Binary files a/bin/boot/nowatchdog_boot_v2_0@1447134832.bin and /dev/null differ
diff --git a/bin/boot/nowatchdog_boot_v2_0@1447134832.hex b/bin/boot/nowatchdog_boot_v2_0@1447134832.hex
deleted file mode 100644
index b42ce400ea..0000000000
--- a/bin/boot/nowatchdog_boot_v2_0@1447134832.hex
+++ /dev/null
@@ -1,1059 +0,0 @@
-:020000040800F2
-:1000000048200120892C0008E92F0008E92F00086A
-:10001000E92F0008E92F0008E92F00080000000080
-:10002000000000000000000000000000E92F0008B0
-:10003000E92F000800000000E92F0008E92F000860
-:080040009C1300000100000008
-:1000480010B50023934203D0CC5CC4540133F9E7C4
-:0200580010BDD9
-:10005A0002440346934202D003F8011BFAE77047B1
-:10006A0010B5C9B20244904206D003461C7801304A
-:0C007A008C42F8D1184610BD002010BDCB
-:1000860038B504460D4600F028F82946204400F00D
-:0600960018F8204638BDF9
-:10009C0038B504460D4600F01DF82946421C204692
-:0600AC00FFF7DDFF38BD87
-:1000B20038B504460D4600F012F82946421C204687
-:0600C20000F0EEF838BD6D
-:1000C80038B5054608460C4600F006F82146421C9D
-:0800D8002846FFF7B5FF38BD13
-:0E00E0000023C25C0AB10133FBE718467047EB
-:1000EE000023C25C1AB18B4201D00133F9E71846E6
-:0200FE00704749
-:1001000030B50023C45C3CB14A1E12F8015F1DB13A
-:0C011000AC42FAD10133F5E7184630BDCF
-:10011C0030B56FF0004485B00025CDE900454FF0B7
-:10012C0000444FF0FF35CDE90245012302F0C0FD3C
-:04013C0005B030BD1D
-:100140001FB56FF000420023CDE9002300214FF0DE
-:1001500000424FF0FF33CDE902230A220B4602F0A2
-:08016000ADFD05B05DF804FBE4
-:100168001FB56FF000420023CDE9002300214FF0B6
-:1001780000424FF0FF33CDE902230A220B4602F07A
-:0801880099FD05B05DF804FBD0
-:040190000020704794
-:02019400FEE784
-:10019600F8B5054608460E46FFF79FFF07462C466C
-:1001A6002378013543B1204631463A4600F02FF810
-:0C01B6000028F4D12046F8BD1846F8BD22
-:1001C20030B50023C45C44B14A1E12F8015F15B178
-:0E01D200AC42FAD101E00133F4E7184630BD2B
-:1001E000F8B50546084616460F46FFF779FF013079
-:1001F000B04234BF04463446394628462246FFF70B
-:1002000023FFA64204D928190021321BFFF725FF3E
-:040210002846F8BDC7
-:1002140070B5154604460E46FFF760FF421C314692
-:0E0224002046AA4228BF2A4600F039F870BDD5
-:1002320038B50446CDB2FFF752FF231818460278AC
-:10024200013BAA4203D0C4F10100C018F6D138BD67
-:10025200F8B50E4604461746FFF741FF251830460B
-:10026200FFF73DFFB84238BF0746314628463A46B7
-:0C027200FFF7E9FE0023EB552046F8BD25
-:10027E00884210B507D80023934203D0CC5CC454F7
-:10028E000133F9E710BD12F1FF3202D38B5C8354B8
-:04029E00F9E710BDAF
-:1002A20030B50023934206D0C55CCC5C01332C1BD5
-:0A02B200F8D0204630BD002030BD1A
-:1002BC002DE9F04F0F468FB00021541C0D91127890
-:1002CC00804610B117B1017000E0074600214FF0D5
-:1002DC00FF390E460D468A468B46002A00F00882EE
-:1002EC000629FDD8DFE801F0041834596090CA00E3
-:1002FC00252A09D0DDF834C00CF10100B84238BF12
-:10030C0008F80C200D9037E0002601214FF0FF3942
-:10031C003546B246B3462FE02B2A13D007D8202AF5
-:10032C0013D0232A40F0DC8145F0080524E02D2A67
-:10033C0005D0302A40F0D48145F010051CE045F082
-:10034C00010519E045F0020516E045F0040513E03F
-:10035C00AA48805C400712D5303AD2B26FF0004008
-:10036C00801A4FF00A0C90FBFCF0864202DD4FF035
-:10037C00FF30D1E10CFB062622780134ADE72A2AA6
-:10038C0040F0B0811E68191D002E2278BCBF45F0CC
-:10039C00010576420B460134A4E12E2A40F0A481DB
-:1003AC0022780421013498E79448B9F1FF3F10F802
-:1003BC0002C008BF4FF000091CF0040F0DD0303AFA
-:1003CC00D2B26FF00040801A4FF00A0C90FBFCF098
-:1003DC008145CCDC0CFB0929CEE72A2A07D11A6807
-:1003EC00013422EAE279043314F8012C7CE12D2A41
-:1003FC0040F07A8114F8012B815C01F0040101F0CA
-:10040C00FF090029F6D16FE16C2A23D00AD8682A9B
-:10041C0012D06A2A40F06A812278062101344FF00A
-:10042C00080A5AE7742A23D07A2A40F05F8122788E
-:10043C004FF0060A013459E12278682A04D00134BD
-:10044C0006214FF0020A48E76278062102344FF089
-:10045C00010A42E722786C2A04D0013406214FF0BD
-:10046C00030A3AE76278062102344FF0040A34E7B3
-:10047C002278062101344FF0070A2EE76E2A00F08D
-:10048C0009810DD8632A33D005D8582A40F01D8134
-:10049C0045F040053AE1642A2CD0692A2AD014E1AF
-:1004AC00732A00F093801DD86F2A43D0702A40F035
-:1004BC000C811A6803F1040C0023CDE9002345F0EC
-:1004CC008805102302930396CDF8109005954046AD
-:1004DC000DA93A46CDF820C002F06AFCDDF820C028
-:1004EC006346F9E0752A2AD0782A00F00F81ECE0F7
-:1004FC000D995DE00AF1FF32072A13D8DFE802F00C
-:10050C000407120A1212120A93F900000BE0B3F955
-:10051C00000008E0073323F0070202F10803D2E9D8
-:10052C00000102E01868C11704330A22CDE900016A
-:10053C00029228E0BBF1000F00F0EB8004E0BBF16D
-:10054C00000F01D14FF00A0B0AF1FF3245F0800584
-:10055C00072A11D8DFE802F0040610081010100862
-:10056C0018780AE0188808E0073323F0070202F134
-:10057C000803D2E9000102E0186800210433CDE938
-:10058C000001CDF808B00396CDF8109005954046C3
-:10059C000DA93A46089302F00BFC089B9CE0BA426A
-:1005AC0004D208EB0201202001F8010C013E114697
-:1005BC00012E01F10102F2DC181D1B68BA420D91EB
-:1005CC0038BF08F801300D92034685E0181D0B90DA
-:1005DC00B9F1FF3041421A684141099102B9084A08
-:1005EC000023D15C31B9F31AE90723EAE3730CD584
-:1005FC005B420AE0099828B10133F2E74C1200087B
-:10060C009B3F00084B45F7DBEDE70D9907910798E9
-:10061C001844401A002809DD0131B942F7D208EB21
-:10062C0001004FF0200C00F801CCF0E7079823EA0A
-:10063C00E371013A5B1A01440A920D914A460A98F9
-:10064C0010F8011F0A9089B1099848B1DDF834C03F
-:10065C000CF10100B84238BF08F80C100D90EEE711
-:10066C00002A02F1FF3001DD0246EFE70D991A4630
-:10067C0062B1481CC01A1044B84205D2C81A404492
-:10068C004FF0200C00F802C00132F1E7CB1A0D93A9
-:10069C000B9B21E00AF1FF300D9A191D072810D889
-:1006AC00DFE800F004070F0A0F0F0F0A1B681A701F
-:1006BC0009E01B681A8006E018680023C0E90023D3
-:1006CC0001E01B681A600B4606E00D98411CB9420C
-:1006DC0038BF08F800200D91227800210134FCE588
-:1006EC000221FAE50321F8E50521F6E50621F4E5FA
-:1006FC000D98B84202D208F8002003E017B1474425
-:10070C0007F8012C064B984206D930E64FF0100B37
-:10071C001AE74FF0080B17E70FB0BDE8F08F00BFDA
-:04072C00FEFFFF7F4E
-:100730000CB407B504AB53F8042B0193FFF7BEFDCF
-:0A07400003B05DF804EB02B070474F
-:10074A0010B50C4613466FF000412246FFF7B1FD83
-:02075A0010BDD0
-:10075C000EB403B503AA52F8041B0192FFF7EFFF86
-:0A076C0002B05DF804EB03B0704723
-:0407760000207047A8
-:10077C00024B5A6F42F080725A6770470038024041
-:10078C00038819B19BB243F0010303E023F001038A
-:08079C001B041B0C03807047D5
-:0C081000014B01229A607047003002404A
-:0C081C00014B1860186870470030024063
-:1008280000EB81018842044B03D050F8042B1A6076
-:0C083800F8E71868704700BF003002406D
-:0C084400014B1868704700BF00300240F4
-:10085000044B9A6809B1104301E022EA0000986055
-:08086000704700BF002004E016
-:10086800044B1A69002A04DA034A5A6002F18832F2
-:0C0878005A607047003C024023016745B5
-:10088400024B1A6942F000421A617047003C024070
-:0C089400014BD860704700BF003C0240E0
-:1008A0000B4BDA68D1030CD4DA68D2060BD4DA68C1
-:1008B00012F0EF0F09D1DB689B074CBF072008201F
-:1008C000704701207047052070470620704700BF21
-:0408D000003C0240A6
-:1008D40070B5064631B1012906D0022907D14FF47B
-:1008E400007506E00D4604E04FF4807501E04FF416
-:1008F400407500F0B9FB08281ED1104C236923F47D
-:100904004073236123691D432561236923F0F803A0
-:100914002361236943F002031E432661236943F4E0
-:100924008033236100F0A0FB236923F002032361D9
-:10093400236923F0F803236170BD00BF003C02402B
-:1009440070B505460E4600F08FFB082811D1094CFE
-:10095400236923F44073236123692361236943F0EA
-:10096400010323612E7000F07FFB236923F0010350
-:08097400236170BD003C02404C
-:0C097C00014B1860704700BF00300040C5
-:0C098800014B5860704700BF0030004079
-:0C099400014B9860704700BF003000402D
-:1009A000024B4AF6AA221A60704700BF003000408E
-:1009B000024B4CF6CC421A60704700BF003000403A
-:0C09C000014B1860704700BF20000E4281
-:0C09CC00014B1860704700BFA0000E42F5
-:1009D800034B5B6818420CBF00200120704700BF22
-:0409E800007000405B
-:1009EC00024B1A6842EA80001860704700700040A1
-:1009FC000A4B00211A6842F001021A6099601A68C9
-:100A0C0022F0847222F480321A60054A5A601A6805
-:100A1C0022F480221A60D960704700BF003802406F
-:040A2C001030002462
-:100A3000064B002201281A701A7002D0042802D036
-:100A400070471870704705221A707047703802405E
-:100A50001D4B10B59A6802F00C02042A03D0082A34
-:100A600003D01A4B18E01A4B16E059685A6811F473
-:100A7000800F596814BF164B144B02F03F02B3FBB2
-:100A8000F2F3114AC1F3881152684B43C2F3014299
-:100A900001325200B3FBF2F30B4903608B680D4A3D
-:100AA000C3F30313D45C0368E34043608C68C4F36E
-:100AB0008224145D23FA04F484608968C1F342310E
-:100AC000525CD340C36010BD003802400024F400E3
-:080AD00040787D01A23F0008FF
-:100AD80000F44073B3F5407F084B08D1996820F0C3
-:100AE800704221F4F81122F440720A439A601A6F96
-:100AF800C0F30B0010431867704700BF003802406E
-:0C0B0800014B1860704700BF3C0E4742D4
-:100B1400044B1A6B09B1104301E022EA0000186388
-:080B2400704700BF00380240D9
-:100B2C00044B1A6C09B1104301E022EA000018646E
-:080B3C00704700BF00380240C1
-:100B4400044B5A6C09B1104301E022EA00005864D6
-:080B5400704700BF00380240A9
-:100B5C00044B1A6909B1104301E022EA0000186144
-:080B6C00704700BF0038024091
-:100B7400044B5A6909B1104301E022EA00005861AC
-:080B8400704700BF0038024079
-:100B8C00044B9A6909B1104301E022EA0000986114
-:080B9C00704700BF0038024061
-:100BA400044B1A6A09B1104301E022EA00001862FA
-:080BB400704700BF0038024049
-:100BBC00044B5A6A09B1104301E022EA0000586262
-:080BCC00704700BF0038024031
-:100BD4004309012B074A01D1136803E0022B0CBF20
-:100BE400136F536F00F01F0023FA00F000F00100B0
-:080BF400704700BF0038024009
-:100BFC00002382B001930D4BDA68520613D44FF0E8
-:100C0C00FF32DA60094BDA68019902F040020131D7
-:100C1C0001910199B1F5803F01D0002AF2D0D8683A
-:100C2C00C0F3801000E0012002B0704700280040A3
-:100C3C00024BDA6822F08002DA607047002800402C
-:100C4C0038B50F4CCA236362532363620546FFF722
-:100C5C00CFFF88B1A36823F04003A360A2682B6880
-:100C6C001343A360AB68236123696A6843EA0243B8
-:100C7C002361FFF7DDFF0120014BFF225A6238BDD3
-:040C8C0000280040FC
-:100C9000002382B001930E4BCA225A6253225A6239
-:100CA000DA6822F0A002DA60094BDA68019902F0F2
-:100CB0002002013101910199B1F5004F01D0002AC4
-:100CC000F2D0D868FF22C0F340105A6202B07047D9
-:040CD00000280040B8
-:100CD400224A2DE9F0410B780C464F788E789268C1
-:100CE40020B912F0400225D1CA7023E012F040026C
-:100CF40000D1CA703F0247EA0343E5781E4346EA3F
-:100D04000545164CCA23636253236362FFF774FFDD
-:100D140058B105F07F3020F0FE402060FFF78CFFD3
-:100D2400FFF7B4FF003018BF01200C4BFF225A62BA
-:100D3400BDE8F081184600F012FA8046384600F00B
-:100D44000EFA0746304600F00AFAE57840EA054014
-:100D540040EA084545EA0725D3E700BF00280040DC
-:100D64000F4B70B51B680C46C3F30542C3F306264C
-:100D740003F07F0503F480031B0C0A704E708D7022
-:100D8400CB7058B9104600F0F7F92070304600F0E7
-:100D9400F3F96070284600F0EFF9A07070BD00BF51
-:040DA40000280040E3
-:100DA8002DE9F0410C464B78CA788F780E7878BBDD
-:100DB800D90603D523F010030A336370104600F0F8
-:100DC800CCF98046607800F0C8F90446384600F04F
-:100DD800C4F940EA463040EA084545EA0425104C83
-:100DE800CA23636253236362FFF704FF58B125F0F7
-:100DF8007F4323F0C0036360FFF71CFFFFF744FF46
-:100E0800003018BF0120064BFF225A62BDE8F0816E
-:100E18001D0245EA02453D4345EA4635DFE700BF86
-:040E2800002800405E
-:100E2C000E4B70B55B680C46C3F30742C3F3042644
-:100E3C0003F03F05C3F34233CA704E708D700B70D4
-:100E4C0058B9104600F094F9E070304600F090F973
-:100E5C006070284600F08CF9A07070BD002800402E
-:100E6C00084B9A6822F4006222F0080209B142F49D
-:100E7C0000621043CA225A6253225A62FF229860BF
-:080E8C005A6270470028004083
-:100E940082B000230193054B0193019B03EB800077
-:100EA4000190019B196002B0704700BF50280040B8
-:100EB40082B000230193054B0193019B03EB800057
-:100EC4000190019B186802B0704700BF5028004091
-:100ED400044B1A6C22F400321A641A6C104318641E
-:080EE400704700BF0028004028
-:100EEC000D4BCA225A6253225A6220F0040200F0BF
-:100EFC00040029B199680A439A601A6C104306E001
-:100F0C00996821EA02029A601A6C22EA00001864BD
-:0C0F1C00014BFF225A6270470028004081
-:100F2800054BDB6823F088039B049B0C03420CBF32
-:0C0F380000200120704700BF002800408E
-:100F4400054B80B2DA6840F0800002F0800262EA69
-:0C0F54000002DA60704700BF0028004077
-:100F600008B5134B98420AD14FF480500121FFF786
-:100F700025FE4FF480500021FFF720FE08BD0D4BE9
-:100F8000984207D14FF480400121FFF70BFE4FF448
-:100F9000804009E0084B984209D14FF400400121FC
-:100FA000FFF700FE4FF400400021FFF7FBFD08BDF6
-:0C0FB0000030014000380040003C0040D0
-:100FBC00038ACA889BB223F4405330B513430D46C1
-:100FCC0003820989AB8882890B43698992B20B43EE
-:100FDC0022F4B05222F00C029BB213438381838A19
-:100FEC00AA899BB223F44073134385B083820446D1
-:100FFC006846FFF727FD194B9C4203D003F580632D
-:10100C009C4201D1039B00E0029BA289192112B2E0
-:10101C005943002A2A684FF06403B4BF520092006F
-:10102C00B1FBF2F1B1FBF3F21201100903FB101149
-:10103C00A08900B2002806DAC9003231B1FBF3F303
-:10104C0003F0070305E009013231B1FBF3F303F0C0
-:10105C000F031A4392B2228105B030BD001001403B
-:10106C0007B508238DF80730FFF714FC8DF807003F
-:10107C009DF80730012BF7D09DF8070003B05DF801
-:02108C0004FB63
-:10108E002DE9F0410F68002301229A4002EA07057C
-:10109E00954230D15A00032494400668E44326401A
-:1010AE0006600E79D0F800C006FA02F8013E48EA52
-:1010BE000C0C012EC0F800C014D891F805C086683B
-:1010CE000CFA02FC2640866086684CEA06068660AC
-:1010DE00466826EA050545608D7946689D40ADB2A5
-:1010EE0035434560C5682C40CD79C46005FA02F2DF
-:1010FE00C4682243C2600133102BC5D1BDE8F08114
-:10110E004FF6FF7303600023037143718371C37144
-:02111E00704718
-:0C112000036919420CBF00200120704739
-:04112C000183704784
-:041130004183704740
-:0A1134000AB1018370474183704740
-:10113E0001F00703C90800EB81009B000F219940C5
-:10114E009A4010B5046A24EA01010162016A114352
-:04115E00016210BD5D
-:1011620000230928DAB203F1010302D90A38C0B216
-:0A117200F7E740EA0210C0B2704730
-:10117C00030903EB830300F00F0000EB4300C0B244
-:02118C007047AA
-:0C118E0000217F22FF2380E80E00704744
-:0C119A000023C370037043708370704723
-:0E11A60001230370837043700023C3707047F1
-:1011B4000B8810B54C88028823438C8802F4415272
-:1011C4002343CC8823430C8923434C8923438C89B0
-:1011D4002343CC89234313439BB20380838B23F49F
-:0E11E40000631B041B0C83830B8A038210BD67
-:1011F200038819B19BB243F0400303E023F040039C
-:081202001B041B0C0380704764
-:06120A00808980B27047EC
-:041210008181704721
-:0C121400038919420CBF00200120704724
-:10122000838919B19BB243F4005303E023F40053C4
-:081230001B041B0C83817047B5
-:08123800C1F308018180704739
-:0C124000038819420CBF002001207047F9
-:10124C00202020202020202020282828282820206A
-:10125C002020202020202020202020202020202082
-:10126C00481010101010101010101010101010103A
-:10127C0004040404040404040404101010101010DA
-:10128C001081818181818101010101010101010133
-:10129C0001010101010101010101011010101010E7
-:1012AC001082828282828202020202020202020204
-:1012BC0002020202020202020202021010101020AC
-:1012CC000000000000000000000000000000000012
-:1012DC000000000000000000000000000000000002
-:1012EC0000000000000000000000000000000000F2
-:1012FC0000000000000000000000000000000000E2
-:10130C0000000000000000000000000000000000D1
-:10131C0000000000000000000000000000000000C1
-:10132C0000000000000000000000000000000000B1
-:10133C0000000000000000000000000000000000A1
-:10134C004BB942B9002908BF002802D04FF0FF3139
-:10135C00084600F03BB882B0EC462DE9005000F096
-:10136C001DF8DDF804E002B00CBC70472DE9704F9D
-:10137C00089E14461D468046894600F029F804FB59
-:10138C0001F3A4FB00AB00FB05329344B8EB0A0855
-:10139C0069EB0B09C6E90089BDE8708F2DE9704F28
-:1013AC00089E14461D468046894600F061F900FBF4
-:1013BC0005F5A0FB04AB04FB0154A344B8EB0A08ED
-:1013CC0069EB0B09C6E90089BDE8708F704700BF57
-:1013DC0000292DE9F00FC0F2A1800024002BC0F2EF
-:1013EC009880154606460F46002B3FD18A4258D9A5
-:1013FC00B2FA82F34BB1C3F1200201FA03F720FADF
-:10140C0002F29D4000FA03F61743290CB7FBF1F2E8
-:10141C0001FB1277A8B200FB02F34FEA164C4CEA20
-:10142C000747BB4209D97F1902F1FF3C80F00581C7
-:10143C00BB4240F20281023A2F44FF1AB7FBF1F390
-:10144C0001FB137100FB03F0B6B246EA014188427E
-:10145C0008D9491903F1FF3780F0F180884240F236
-:10146C00EE80023B43EA0242002303E08B420AD99E
-:10147C0000231A461046194614B1404261EB410153
-:10148C00BDE8F00F7047B3FA83F8B8F1000F40F0E5
-:10149C0088808B4202D3824200F2E2800023012238
-:1014AC00E8E712B90123B3FBF2F5B5FA85F2002A8D
-:1014BC003AD17F1B280C1FFA85FC0123B7FBF0F1F6
-:1014CC0000FB11770CFB01F24FEA164848EA07477C
-:1014DC00BA4207D97F1901F1FF3802D2BA4200F2A1
-:1014EC00C4804146BF1AB7FBF0F200FB12700CFB34
-:1014FC0002FCB6B246EA0040844507D9401902F115
-:10150C00FF3702D2844500F2AE803A4642EA0142ED
-:10151C00B0E7E443524263EB430362E7404261EBC2
-:10152C0041014FF0FF3459E79540C2F1200927FAE9
-:10153C0009F126FA09F99740280CB1FBF0F800FBE9
-:10154C0018111FFA85FC0CFB08F349EA07094FEA4E
-:10155C00194747EA01418B4206FA02F608D94919A4
-:10156C0008F1FF327AD28B4278D9A8F102082944CB
-:10157C00C91AB1FBF0F300FB13170CFB03F21FFAB3
-:10158C0089F949EA0747BA4207D97F1903F1FF31B4
-:10159C0060D2BA425ED9023B2F44BF1A43EA0843D9
-:1015AC008CE7C8F1200225FA02F103FA08FC27FAAD
-:1015BC0002F320FA02F207FA08F741EA0C0C4FEAA0
-:1015CC001C49B3FBF9F109FB11331FFA8CFA0AFB26
-:1015DC0001FB17433A0C42EA03439B4505FA08F01A
-:1015EC0008D913EB0C0301F1FF3235D29B4533D9EB
-:1015FC0002396344CBEB0303B3FBF9F209FB12335F
-:10160C000AFB02FABFB247EA0347BA4508D917EBFF
-:10161C000C0702F1FF331BD2BA4519D9023A6744C1
-:10162C0042EA0145A5FB0001CAEB07078F424FF0C8
-:10163C0000030AD305D02A461CE76246FDE63B466A
-:10164C0010E706FA08F68642F5D26A1E002311E767
-:10165C001A46E5E70B46A0E71146CBE7904687E72D
-:10166C004346424606E7023A50E702392F4439E72F
-:10167C002DE9F00F144605460E46002B43D18A4245
-:10168C0053D9B2FA82F757B1C7F1200620FA06F601
-:10169C0001FA07F302FA07F400FA07F51E43210CCE
-:1016AC00B6FBF1F201FB1266A0B200FB02F32F0CA9
-:1016BC0047EA0646B34209D9361902F1FF3780F0E2
-:1016CC00FD80B34240F2FA80023A2644F61AB6FB89
-:1016DC00F1F301FB136100FB03F0ADB245EA0141EC
-:1016EC00884208D9091903F1FF3680F0E980884255
-:1016FC0040F2E680023B43EA0242002310461946C0
-:10170C00BDE8F00F70478B424CD8B3FA83F6002E2D
-:10171C004FD18B4202D3824200F2DD80BDE8F00F44
-:10172C000023012210461946704712B90124B4FB5C
-:10173C00F2F4B4FA84F2002A40F08280091B260CE1
-:10174C00A7B20123B1FBF6F006FB101107FB00F268
-:10175C004FEA154C4CEA01418A4207D9091900F1AC
-:10176C00FF3C02D28A4200F2C8806046891AB1FB63
-:10177C00F6F206FB121107FB02F7ADB245EA014582
-:10178C00AF4208D92C1902F1FF3180F09B80A7429F
-:10179C0040F29880023A42EA004210461946BDE8EF
-:1017AC00F00F704700231A4610461946BDE8F00F9B
-:1017BC007047C6F1200522FA05F703FA06F421FA60
-:1017CC0005F301FA06FB20FA05F53C434FEA1448F1
-:1017DC00B3FBF8FC08FB1C331FFA84F909FB0CFA69
-:1017EC0045EA0B0B4FEA1B4545EA03439A4502FABF
-:1017FC0006F204D91B190CF1FF356FD3AC46CAEBBA
-:10180C000303B3FBF8F508FB153309FB05F91FFAC5
-:10181C008BFB4BEA0347B94504D93F1905F1FF335C
-:10182C0062D31D4645EA0C4CACFB0223C9EB0707FF
-:10183C009F424FF000054AD346D062462B465DE7E7
-:10184C009440C2F1200921FA09FC914020FA09F9CF
-:10185C00260CBCFBF6F806FB18CCA7B207FB08F36A
-:10186C0049EA01094FEA194141EA0C4C634500FA77
-:10187C0002F509D91CEB040C08F1FF323BD263458D
-:10188C0039D9A8F10208A444C3EB0C0CBCFBF6F349
-:10189C0006FB13C107FB03F21FFA89F949EA014160
-:1018AC008A4207D9091903F1FF3022D28A4220D982
-:1018BC00023B2144891A43EA084343E73A4605E7C9
-:1018CC00334618E70A4666E7B0409042B5D20CF1B1
-:1018DC00FF32002312E7334632460FE79A458DD983
-:1018EC00ACF1020C23448AE7B9459AD9023D27444E
-:1018FC0098E70346DEE79046C6E70238214435E711
-:10190C0010B5044608484021FFF794FC0028F9D094
-:10191C0005482146FFF78AFC03484021FFF78AFC63
-:10192C000028F9D010BD00BF00480040014608B5A2
-:10193C000448FFF767FC03480221FFF765FC002809
-:10194C00F9D008BD0038004000B9074803680133DE
-:10195C0008D04368013305D0C069044BC31A584200
-:10196C005841704700207047004000086F57654E83
-:10197C00074B1A69C2F306427F2A07D11869C0F3D4
-:10198C000C00B0F1FF0358425841704700207047DB
-:10199C000028004000F13F4000F57E00800A082836
-:1019AC000FD8084A52F820305BB1013B42F8203086
-:1019BC003BB9012101FA00F0034B1A6B22EA00003B
-:1019CC0018637047200000200038024000F13F40AF
-:1019DC0000F57E00800A08280DD8074A52F82030FE
-:1019EC00591C42F8201033B9012101FA00F0034BC5
-:1019FC001A6B104318637047200000200038024017
-:101A0C0010B50C4C2046FFF7E1FF072001F028FB36
-:101A1C004FF4805100222046FFF786FB042001F092
-:101A2C001FFB2046FFF7B6FF4FF480400021FFF765
-:101A3C0077F810BD0004024010B50B4C01214FF497
-:101A4C008040FFF76DF82046FFF7C0FF20464FF4AB
-:101A5C0080510122FFF768FB072001F001FB2046B3
-:101A6C00FFF798FF10BD00BF0004024008B5FFF758
-:101A7C00E3FF0020FFF75AFF0020FFF757FF00207D
-:101A8C00FFF754FFFFF7BCFFFEF772FEBFF34F8F5B
-:101A9C00044A054BD16801F4E0610B43D360BFF3FA
-:101AAC004F8FFEE700ED00E00400FA05F0B55E256F
-:101ABC006843204BB0FBF1F51A68ADF6DC3D95425E
-:101ACC0034D002AC00214FF43D6220461D60FEF77D
-:101ADC00BEFA1B238DE818001748102140226923F9
-:101AEC0001F0A1FA08238DE818001448602318218E
-:101AFC006A2201F098FA0DF2FA760DF28E7300223A
-:101B0C00AA420DD002F11900C0B2C108012700F0A1
-:101B1C00070007FA00F05F5C013238435854EFE7D6
-:101B2C001233B342EBD1204601F0D5FA0DF6DC3D71
-:101B3C00F0BD00BF08000020943500080E370008E7
-:101B4C002DE9F043ADF6DC3D02AC00214FF43D62D3
-:101B5C0080462046FEF77BFA2C238DE818002022C5
-:101B6C00284818215C2301F05EFA1C2215460F2729
-:101B7C00974007EA0807D740234B242101FB07377E
-:101B8C000DF50366002117F801C00023082B07D0C0
-:101B9C000120984010EA0C0F0CBF0020012003E03C
-:101BAC007818407800F0010078B15819C0B24FEAAB
-:101BBC00D00E4FF0010900F0070009FA00F016F8FA
-:101BCC000E9040EA090006F80E000133092BDDD116
-:101BDC000231242906F11206D5D10B35742DA2F150
-:101BEC000402C4D10E238DE81800102190226D231D
-:101BFC00064801F018FA204601F06DFA0DF6DC3DAE
-:101C0C00BDE8F0838433000883390008C032000833
-:101C1C0010B5ADF6D83D02AC204600214FF43D6224
-:101C2C00FEF715FA1B238DE81800102140226923BA
-:101C3C00044801F0F8F9204601F04DFA0DF6D83DB4
-:101C4C0010BD00BF943500082DE9F74F434E444FAB
-:101C5C0001214FF48040FEF763FF3046FFF7B6FEDC
-:101C6C003846404CFFF7B2FE30460D210522FFF7F7
-:101C7C0060FA052230460F21FFF75BFA3046214609
-:101C8C000125FFF7FEF920233846214623602571F4
-:101C9C00A5714FF0000A01934FF4805BFFF7F1F947
-:101CAC00304621464FF002084FF48049257184F8E4
-:101CBC0006A0C4F800B0FFF7E4F93046214684F8DA
-:101CCC000480C4F80080FFF7DCF921462571A5716A
-:101CDC00C4F80090244C3046FFF7D3F92046FFF7A8
-:101CEC0039F920462149FFF75FFA20462946FFF7CC
-:101CFC007AFA019B384619465246FFF715FA2A46DE
-:101D0C0030464946FFF710FA40462946FEF708FFD1
-:101D1C00A4F5505480232380F92323854FF4F042FB
-:101D2C004FF6FF13E3623046A283294623644246F2
-:101D3C00A4F820B0FFF7FDF929462046A582FEF74E
-:101D4C001FFD3846FFF726FE3046FFF723FE4846B8
-:101D5C005146FEF7E5FE03B0BDE8F08F00040240EB
-:101D6C000008024000000020003800400C00002059
-:101D7C0010B5074C2046FFF729FE20461021FFF72F
-:101D8C00CFF92046FFF706FE012001F069F910BDDE
-:101D9C000000024038B50A4B0C2404FB0034606888
-:101DAC00FFF714FE21896068FFF7B4F905466068F7
-:101DBC00FFF7F0FDD5F1010038BF002038BD00BFA2
-:101DCC007832000810B5064C2046FFF7FFFD204680
-:101DDC001021FFF7A7F92046FFF7DCFD10BD00BF6F
-:101DEC0000000240F0B587B0FFF7C2FD002841D1DA
-:101DFC000320FFF759F807460420FFF755F8424B2C
-:101E0C000A241A68C2F30545C2F30626C2F302136C
-:101E1C0002F00F0204FB0322330906F00F0604FB49
-:101E2C0003662B0905F00F0504FB03533C2505FB4A
-:101E3C00036305FB0323191A44BF01F5A83101F50F
-:101E4C00C07107EB91210320FFF71EF803A8FFF7E1
-:101E5C0098F903A8FEF7F4FE01A8FFF798F901A979
-:101E6C000020FEF731FF02A8FFF797F9002002A926
-:101E7C00FEF794FF0A2442F2107501F04EF910B9E6
-:101E8C00013DFAD107E0214D01F047F908B1013DC0
-:101E9C00FAD1013CEFD10020FEF792FD00214FF268
-:101EAC000400FFF71DF84FF43C50FFF745F8184BB2
-:101EBC0001201A6842F004021A60FEF781FD154BEE
-:101ECC001B7813B1144801F047F9144801F044F998
-:101EDC000020FEF7F9FF08200121FEF7C1FF0121C8
-:101EEC004FF40040FEF7FCFF0D4801F035F9084BAC
-:101EFC001A6842F002021A600A4B1A6942F0040294
-:101F0C001A6130BF07B0F0BD00280040A086010068
-:101F1C0000700040017AFF1F6E37000883370008FD
-:101F2C009837000800ED00E0B0F1006F10B50446E2
-:101F3C000BD20D4801F007F9204601F013F90B48BC
-:101F4C0001F00AF94FF0FF3010BD094A002352F896
-:101F5C00041FA14202D851688C4202D30133072BD3
-:101F6C00F5D1184610BD00BFAC380008A9370008E1
-:101F7C005432000808B5024801F0EEF800BEFEE746
-:101F8C00C237000810B504460A480221FFF73CF995
-:101F9C000028F9D007482146FFF734F905480121FC
-:101FAC00FFF732F90028F9D00248FFF728F9C0B240
-:101FBC0010BD00BF003001402DE9F04F87B001216A
-:101FCC00814600AF0020FFF771FD042001F063F89B
-:101FDC0007F10C0049460C2201F0E9F8FD683C6958
-:101FEC000C2DD7F814B013D0994801F0ACF8284652
-:101FFC0001F0B8F8974801F0A6F8204601F0B2F8C5
-:10200C00954801F0A0F8584601F0ACF8934833E03D
-:10201C00934801F0A1F84FF480500121FEF774FDB4
-:10202C0009F10C09EA46FEF7EDFBA0B06E46254619
-:10203C00C846802D0CD941463046802201F0B7F8B5
-:10204C0030462021FEF7EAFB803D08F18008F0E7DE
-:10205C0025B1304641462A4601F0A9F829463046BA
-:10206C0000F0C6FF002180464FF48050FEF74CFD77
-:10207C00D845D54604D07B4801F06EF80120E3E04A
-:10208C0088B068464946202201F091F86846FFF76F
-:10209C005BFC78607448D54601F05EF87B682BB920
-:1020AC00724801F059F804F5404600E02646002E2F
-:1020BC003BD06F48FFF738FF05466E483044FFF7BA
-:1020CC0033FF002D824630DB00282EDB431B01330F
-:1020DC004FEA430B00205946FFF7E8FCFEF7BEFB26
-:1020EC00654B002603EB45033B6055451BDCF32099
-:1020FC00FEF7CAFB3B68002133F81600FEF7E4FB41
-:10210C00082806F1010608D05C4801F01CF82846A6
-:10211C0001F028F801F00FF805E030465946FFF7BA
-:10212C00C5FC0135E1E7FEF7A7FB554801F014F8B3
-:10213C007B680BB14E4B00E0524B7B6063083B60FD
-:10214C000025A5423CD2661BB6F5803F28BF4FF454
-:10215C0080362EB14C4805EB0901324601F027F8C8
-:10216C00D7F804A0FEF77AFBF320FEF78DFBAA4408
-:10217C004FF0000BB34519D043490BEB0A0011F893
-:10218C000B10FEF7D9FB08280DD0404800F0DBFF00
-:10219C00504600F0E7FF00F0CEFFFEF76DFB3C4829
-:1021AC0000F0DAFF0CE00BF1010BE3E7FEF764FB48
-:1021BC003B68214603EB5500FFF778FC5D44C0E714
-:1021CC00344800F0C0FF204600F0CCFF324800F04D
-:1021DC00C3FF0020FFF7B8FB20B1304800F0BCFF74
-:1021EC00234D03E02E4800F0B7FF264D4FF48050EE
-:1021FC000121A608FEF788FCFEF704FB31462846B1
-:10220C00FEF70CFB04F0030105EB860000F0F0FE7A
-:10221C00002104464FF48050FEF776FC214800F074
-:10222C0092FF404600F09EFF1F4800F08CFF2046B6
-:10223C0000F098FF00F07FFF444504D01B4800F0ED
-:10224C008BFF022000E000201C37BD46BDE8F08F5C
-:10225C00CD370008D6370008E0370008E73700080C
-:10226C00063800082338000846380008593800089A
-:10227C0000400008FF3F0008B03200087138000829
-:10228C008938000800000108440000209C38000830
-:10229C00B5380008C0380008CE380008D53800081A
-:1022AC00FA3800081F39000832390008383900089C
-:1022BC0070B54FF480500121FEF73EFCFFF782FD14
-:1022CC000520164CFFF75EFE002C04F1FF341FDCDA
-:1022DC00FFF74EFDFFF776FD9F20FFF753FEA92079
-:1022EC00FFF750FE0546A920FFF74CFE0646A92035
-:1022FC00FFF748FE3602044646EA0545FFF738FD6F
-:10230C004FF480500021FEF717FC45EA040070BD25
-:10231C00A920FFF737FEC307D6D4D9E70090D00326
-:10232C0008B50446114800F00EFF204600F01AFFD5
-:10233C0000F001FF2046FFF703FC00F0EEFE0C4B13
-:10234C0020F0040018701D4600F0E7FE2B7800F01A
-:10235C00FB00834201D10B2401E0FFF787FB013C1A
-:10236C00F2D04FF47A7000F07BFEF8E7C33B000824
-:10237C004400012080B5464B4FF4C06290B01A6007
-:10238C0001214FF08050FEF7CBFB0120FEF712FB32
-:10239C004048FFF71BFB4FF480200121FEF7C0FBE8
-:1023AC003C480A210722FEF7C4FE072239480B21BC
-:1023BC00FEF7BFFE10AF4FF4806347F8383D0024A2
-:1023CC004FF001080225334839468DF80E408DF840
-:1023DC000F808DF80C508DF80D50FEF752FE4FF417
-:1023EC0000632C48394602938DF80C5004AEFEF76E
-:1023FC0048FE4FF46133049327480C233146ADF863
-:10240C001A30ADF81440ADF81640ADF81840ADF8E0
-:10241C001C40FEF7CDFD41461F48FEF7FBFE1D4854
-:10242C00FFF7B8FA1D4800F08EFE1D4B586F00F0F8
-:10243C0099FE00F080FE7920FEF7C6FB404502D1E4
-:10244C00184800F089FE012000F010FE10B901219F
-:10245C00FEF71AFD4120FEF7B7FB58BB124800F0FF
-:10246C007BFE0120FEF7DEFA47F230544120FEF7E6
-:10247C00ABFBF8B94FF47A7000F0F2FD013CF5D1EA
-:10248C000A4800F069FEFFF7DFFB094837E100BF9F
-:10249C00003C02400008024000480040CF3B0008CE
-:1024AC0000380240DF3B0008EF3B0008073C000807
-:1024BC00114550FE4FF48070FEF708FB0120FEF72B
-:1024CC001DFBFEF7DFFB0020FEF77AFA01214FF42B
-:1024DC008040FEF731FBBB48FFF778FA3046FEF739
-:1024EC0010FE00240125B74831468DF815408DF8B3
-:1024FC0016408DF8174004958DF81450FEF7C1FD69
-:10250C002246B0482946FEF70FFEAE48FFF742FAC6
-:10251C00AD4C04F1300954F8040CFFF757FA30466F
-:10252C00FEF7EFFD236854F8040C4FF00008314619
-:10253C00022504938DF814808DF815508DF81780B2
-:10254C000C34FEF79EFD54F8100CFFF723FA4C45A3
-:10255C00E1D14FF480404146FEF7EEFA4FF4807023
-:10256C0000F084FD002800F0CC804FF4807000F067
-:10257C0087FDFFF737FC954800F0EEFD0220FEF7D3
-:10258C0093FC9349884202D00220FEF77DFC9148CF
-:10259C0000F0D9FD0220FEF787FC00F0E3FD00F00F
-:1025AC00CAFD4FF4804000F061FD90B18A4800F004
-:1025BC00D3FD4FF4804000F063FD082000F060FD77
-:1025CC00102000F05DFD202000F05AFD402000F0AE
-:1025DC0057FDFFF739FBFFF71BFB01214FF4805030
-:1025EC00FEF7AAFA7748FFF7F1F901200146FEF74A
-:1025FC008BFA05210A467348FEF79BFD71480621AC
-:10260C000522FEF796FD05226E480721FEF791FD87
-:10261C0000240225C0236B4839468DF80C508DF8E8
-:10262C000D5002938DF80E408DF80F40FEF729FDEA
-:10263C002023644839468DF80F5002930125FEF78C
-:10264C0020FD102339465F4802938DF80C508DF80D
-:10265C000F50FEF716FD6148FEF77CFC4FF48273B9
-:10266C00ADF812304FF40073ADF81A305B48072305
-:10267C003146ADF82030ADF81040ADF81440ADF84F
-:10268C001640ADF81840ADF81C40ADF81E40FEF7F2
-:10269C008BFD29465148FEF7A6FD4A48FFF77AF90B
-:1026AC00FFF790FBAB20FFF76DFCFFF761FB64209D
-:1026BC0000F0D6FC21464FF48050FEF73DFAFFF7B0
-:1026CC00F7FD2846FEF7F0FB25460490E8B2FFF72D
-:1026DC0061FB98BB70550135042DF7D1049D3DB1BC
-:1026EC003F4800F030FD284600F03CFD00F023FD93
-:1026FC0001202946FEF7C8FB002C3DD03948FFF7D6
-:10270C000FFE2846FEF762F9012814D12846FEF781
-:10271C0067F94FF40060FEF701FC18B1324800F085
-:10272C001BFDB9E0314C00F0F8FC002800F00481EE
-:10273C00013CF8D1B0E000F0B9FC1CE7735D042B50
-:10274C000ADD2B4800F008FD049800F00BFD012079
-:10275C000021FEF799FB0FE00133DBB2042B73551C
-:10276C00B9DD244800F0EFFC284600F0FBFC2248C1
-:10277C0000F0F2FC0124AEE7FFF79AFD1F4B034477
-:10278C00012B01D91E48BAE71E4800F0DCFC0020E2
-:10279C00FEF78AFB00F0E6FC00F0CDFC802000F098
-:1027AC0065FC18B1802000F06BFC73E04FF4003036
-:1027BC0000F05CFC044638B34FF4003000F060FCD1
-:1027CC0004E100BF00000240803200083F3C0008DA
-:1027DC00708641567B3C0008903C0008003001405C
-:1027EC00FE3C0008014550FE243C0008A086010078
-:1027FC00BD3C0008E93C0008F43C0008EA44DFFF5B
-:10280C00024550FE2A3D00080120FFF7C3FAD8B15B
-:10281C002046FFF7BFFAB8B1B74800F09DFC41F273
-:10282C0088340120FFF7B6FA002800F08B800020D6
-:10283C00FFF7B0FA002800F085804FF47A7000F0B2
-:10284C000FFC013CEDD1C1E00020FFF77DF808B191
-:10285C00AA4B00E0AA4B0CCB013301D0013271D151
-:10286C00A84800F079FCB1E0A74800F075FC0820FE
-:10287C0000F006FC102000F003FC202000F000FC0F
-:10288C00402000F0FDFB0024042000F0F9FB002C9C
-:10289C0040F008819D4832E7FFF76AF8002847D0DE
-:1028AC00002001A99A4DFEF757FA3446002039460C
-:1028BC00FEF7B6FA0FCD0FC40FCD0FC495E80F007D
-:1028CC0084E80F009DF8092010A901EB82039DF804
-:1028DC000BE053F8343C40F26D1101FB0E3303EB6B
-:1028EC009E030EF1010E1EF0030F02D1022A88BFC7
-:1028FC0001339DF80A409DF80410013C2344182430
-:10290C0004FB03149DF805103C2202FB04149DF8F3
-:10291C000610032002FB0414FEF7C6FA011903206B
-:10292C00FEF7B2FA04200021FEF7AEFA00F0BEFB6F
-:10293C00784800F011FC1EE6774800F00DFCFFF71C
-:10294C0051FAF5E77D20FEF73FF970B94FF40070AE
-:10295C0000F08CFB48B9714800F0FEFB082000F039
-:10296C008FFB102000F08CFB85E07D20FEF72CF90E
-:10297C0010B16B4800F0F0FB4FF4007000F076FBE8
-:10298C0010B1684800F0E8FB4FF4007000F078FBE1
-:10299C00102000F06BFB48B1634800F0DDFB082011
-:1029AC0000F06EFB102000F06BFB12E0082000F032
-:1029BC005DFB20B15D4800F0CFFB102003E05C48CC
-:1029CC0000F0CAFB082000F066FB54E0594800F008
-:1029DC00C3FB594800F0C0FB4FF40010FFF7ECFAB2
-:1029EC0010B1022828D809E0202000F049FB402033
-:1029FC0000F046FB802000F04EFB1DE0082000F0AC
-:102A0C004AFB102000F047FB202000F02FFB20B9E0
-:102A1C004A4800F0A1FB202009E0402000F026FBF2
-:102A2C0000287FF421AF464800F096FB402000F0D0
-:102A3C0032FB4FF400701AE0012425E7414800F006
-:102A4C008BFB082000F01CFB102000F019FB202051
-:102A5C0000F016FB402000F013FB2046FFF7ACFA09
-:102A6C00022840F0F080082000F015FB102000F048
-:102A7C0012FBFEF7FBFF022000F0F8FA90B10420E5
-:102A8C0000F0F4FA04460028D8D02F4800F064FB7C
-:102A9C00042000F0F5FA022000F0F2FA4FF40040A6
-:102AAC0000F0EEFA4FF4005000F0E0FA04464FF458
-:102ABC00805000F0DBFA400040EA84044FF40060E0
-:102ACC0000F0D4FAE4B22043431C03F0FF03013BB3
-:102ADC004FF40060062B58D8DFE803F03C383C0478
-:102AEC003C383C0000F0CCFA4FF4805000F0C8FAAF
-:102AFC004FF400502EE000BF363D000800400008A7
-:102B0C0000000108683D0008923E0008034550FE95
-:102B1C00283200082F3C0008313F00087B3D00089C
-:102B2C008C3D0008A43D0008C43D0008DA3D0008B7
-:102B3C00F03D0008463F0008063E0008203E000815
-:102B4C00593E0008023F0008CC3E000800F098FAFD
-:102B5C004FF4805000F09FFA45F25550FDF708FFF6
-:102B6C000420FDF70BFF40F6FF70FDF70DFF002072
-:102B7C00FDF7FEFE4FF480500121FDF763FE0020AF
-:102B8C00FEF7E2FE68B9354B0CE000F079FA4FF431
-:102B9C00805000F075FA4FF4005000F071FA304894
-:102BAC00ADE5304B5D6830481E6800F0CCFA284625
-:102BBC0000F0D8FA00F0BFFA00F0BDFA00239A003A
-:102BCC0002F16042013302F561424FF0FF31082BF4
-:102BDC00C2F88010C2F88011F1D1244B00241C6380
-:102BEC005C639C631C645C64FDF702FF204801215C
-:102BFC00FDF7AEFF21461E48FDF7AAFFF12001218B
-:102C0C00FDF7B2FF2146F120FDF7AEFF0120014692
-:102C1C00FDF7B6FF21460120FDF7B2FF1548012153
-:102C2C00FDF7BAFF21461348FDF7B6FF1248012104
-:102C3C00FDF7BEFF10482146FDF7BAFF63B64FF013
-:102C4C00FF3EB5462847042000F01AFA022000F097
-:102C5C0017FA4FF4004000F01EFA23E700000108B9
-:102C6C00044550FE004000081D3F0008003802409B
-:102C7C0000106022FFC9FE36335907000748084A86
-:102C8C0008B50849121AFDF7D9F90748074A002177
-:102C9C00121AFDF7DCF9FFF76DFB00BF00000020F6
-:102CAC0020000020B43F0008200000204800012034
-:102CBC002DE9F04FDDE909AB0E469C4603783B4904
-:102CCC000746C95C01300D07F8D42B2B05D02D2BF2
-:102CDC0004D107464FF0FF3301E007460123397852
-:102CEC0030290ED17978782905D132F0100103D131
-:102CFC000237102207E00AB1082A04D10137082252
-:102D0C0001E002B90A2200200021B84617F8015B45
-:102D1C00A5F13004E4B2092C0DD9A5F14104192C0C
-:102D2C0002D8A5F1370405E0A5F16104192C30D8BF
-:102D3C00A5F15704E4B294422BDA4FEAE27900FB96
-:102D4C0009F502FB0155A0FB0201E4B2294400196C
-:102D5C004FF0000541EB0501BCF1000FD5D0012B64
-:102D6C0006D182457BEB0104CFDA50465946CCE7BD
-:102D7C005C1CCAD1DDE90B89444261EB4105444539
-:102D8C0075EB0909C1DADDE90B01404261EB410148
-:102D9C00BBE70EB1C6F80080DD1700FB05F203FBA4
-:102DAC000122A0FB03011144BDE8F08F4C12000876
-:102DBC002DE9F04F91B01F9E0C463106914680468E
-:102DCC00DDE91A231E9D04D5CDE902234FF0000C3A
-:102DDC001BE0002A73F100071046194602DA504234
-:102DEC0063EB4301002A73F1000ACDE9020107DB12
-:102DFC00B70708D416F0040C07D04FF0200C04E0F1
-:102E0C004FF02D0C01E04FF02B0C16F040070897FB
-:102E1C0014BF704F704FDDE902AB079700271C9869
-:102E2C000137C117CDE90401DDE904230AA93944AE
-:102E3C00099150465946CDF804C0FEF781FA07981F
-:102E4C000999835C504601F8013C5946DDE904239D
-:102E5C00FEF776FA82468B465AEA0B02DDF804C07E
-:102E6C0001D0162FDBD116F0080239461DD01C9B61
-:102E7C00082B02D0102B0ED01CE0DDE902AB1DB9E3
-:102E8C005AEA0B0B13D004E05AEA0B0B12D0BD42DA
-:102E9C0010DC7B1C0FE0DDE902AB5AEA0B0B09D00E
-:102EAC0008982B4648B1582208E02B4606E02A46E3
-:102EBC00012303E02B46002200E078221CF1000BDA
-:102ECC001D98C7EB030A18BF4FF0010BBB42A8BFFC
-:102EDC001F46C01B2AEAEA7ACBEB00000AB1022794
-:102EEC0000E01746C71B16F0010027EAE77701D070
-:102EFC007F4205E0F60603D5013504BFBA44074608
-:102F0C003D46002D0BDD2068013D461C4E453CBF67
-:102F1C00202608F80060206801302060F1E727EADD
-:102F2C00E7703F1ABBF1000F08D02068451C4D45D7
-:102F3C0038BF08F800C02068013020608AB12068D2
-:102F4C00451C4D453CBF302508F800502568681CD1
-:102F5C0002354D45206038BF08F800202268013248
-:102F6C002260BAF1000F0CD022680AF1FF3A501C13
-:102F7C0048453CBF302008F802002268013222602C
-:102F8C00EFE7DDE902AB5AEA0B0B10D17BB919461E
-:102F9C000DE0236801395A1C4A4505D201F1280578
-:102FAC0068462A5C08F80320236801332360002953
-:102FBC00EFD15FB1236801375A1C4A453CBF202230
-:102FCC0008F80320236801332360F2E711B0BDE851
-:102FDC00F08F00BF793F00088A3F00081EF0040FF5
-:102FEC000CBFEFF30880EFF30980FEF7C3BF704707
-:102FFC00032970B505460C4606D98E083146FDF7F7
-:10300C000DFCB6003544A41B14B9FDF715FC70BDBE
-:10301C0000231846EA5C0133A34242EA0020F9D1AE
-:10302C00FDF7F6FB70BD2DE9F0410733DE08079B79
-:10303C004FF0120808FB02320731069F054602EBDF
-:10304C00D1080024BC4209D0122000FB0480294680
-:10305C003246FCF7F3FF01343544F3E7BDE8F08169
-:10306C000623584301387FF4FDAF704710B5044672
-:10307C000020FDF719FF20420CBF0020012010BDDD
-:10308C0010B504460020FDF70FFF20EA04010020D4
-:10309C00FDF7FAFE10BD10B504460020FDF704FF45
-:1030AC0040EA04010020FDF7EFFE10BD1FB501A89A
-:1030BC00FEF767F80723029301A803230393FDF798
-:1030CC00BFFD6846FEF763F869460020FDF7FCFD7E
-:1030DC0005B05DF804FB70B50646FEF7ADFC80202C
-:1030EC00FEF724FCA82420BA90FAA0F0C0B2FEF798
-:1030FC001DFC1125705DFEF719FC15F1FF35F9D299
-:10310C000020FEF713FC013C06F11206EBD1204621
-:10311C00FEF70CFCFEF774FC70BD38B50024254698
-:10312C00E0B2FEF737FEA04001340543042CEDB2AB
-:10313C00F6D1284638BD08B50D20FEF7E1FB0A2074
-:10314C00FEF7DEFB08BD10B5441E14F8010F10B1DC
-:10315C00FEF7D6FBF9E710BD08B5FFF7F4FFFFF754
-:10316C00EAFF08BD1FB530238DF8043078238DF8A5
-:10317C000530072399000F228A400240CA40092AD1
-:10318C0001D8303202E00F2A02D85732D2B200E016
-:10319C00202201A9CC1A13F1FF336272EAD2002368
-:1031AC0008468DF80E30FFF7CEFF04B010BD70B599
-:1031BC0004460D464FF4805001211646FDF7BCFC29
-:1031CC00FEF700FE0520FEF7DDFEA920FEF7DAFE75
-:1031DC00C307FAD4FEF7CCFDFEF7F4FD0320FEF78F
-:1031EC00D1FEC5F30740FEF7CDFEC5F30720FEF771
-:1031FC00C9FEE8B2FEF7C6FE2644B44205D0A920AB
-:10320C00FEF7C0FE04F8010BF7E7FEF7B1FD4FF433
-:10321C0080500021FDF790FC70BD00000000000004
-:10322C001F0000003B0000005A0000007800000066
-:10323C0097000000B5000000D4000000F30000006F
-:10324C0011010000300100004E01000000000008D8
-:10325C00004000080080000800C0000800000108C1
-:10326C00000002080000040800000608653F000882
-:10327C0000080240080000006A3F000800000240FD
-:10328C00040000006D3F00080008024040000000F0
-:10329C00743F0008000002400200000000000240E1
-:1032AC000100000000000800100018002000280099
-:1032BC003000380000000683010000000000000010
-:1032CC0000000000068301000000000C000000005C
-:1032DC000000068301000000000C00000000D878FC
-:1032EC00369B79C0E3D90C8C67DB3C1BF8FD7EBFA9
-:1032FC00FDE0F7FB1FC6EFFB7E1F98CD66B3CD60DC
-:10330C00369B19C66C18660398FD66B3FD60309B3E
-:10331C0019C66F18660398FD66B3FD60309B19C320
-:10332C006F186603980D66B30D60369B19C3601851
-:10333C006603F8FD7EBFFDECF79B19C36F187E0387
-:10334C00D878369B79CCE399998167183C0318009F
-:10335C0000000000000080010000000018000000C8
-:10336C000000000000000000000018000000000039
-:10337C000000000000000000000C0006000000002F
-:10338C00600030000018000300000000C0001800AE
-:10339C00003080010000000080010C000060C000C3
-:1033AC00000000000003060000C0600000000000E8
-:1033BC00000603000080310000000000008C0100BA
-:1033CC0000001B000000000000D8000000000E00F0
-:1033DC00000000000070000000000E000000000063
-:1033EC000070000000001B000000000000D800006E
-:1033FC000080310000000000008C010000C0600063
-:10340C0000000000000603000060C0000000000087
-:10341C0000030600003080010000000080010C0059
-:10342C000018000300000000C0001800000C00068B
-:10343C0000000000600030000000000000000000F0
-:10344C000000000000000000000000000000000070
-:10345C000000000000000000000000000000000060
-:10346C000000000000000000000000000000000050
-:10347C000000000000000000000000000000000040
-:10348C000000000000000000000000000000000030
-:10349C0000000000000000000000000080FFFF01A1
-:1034AC000000000000000000FEFFFF7F0000000095
-:1034BC00000000E07F0000FE07000000000000FE9E
-:1034CC00010000807F0000000000801F0000000051
-:1034DC00F80100000000F00100000000800F000067
-:1034EC0000007C0000000000003E000000000F0007
-:1034FC000000000000F0000000800300000000004D
-:10350C0000C0010000E00000000000000000070007
-:10351C00007000000000000000000E000018000009
-:10352C000000000000001800000C0000000000006B
-:10353C0000003000000600000000000000006000E9
-:10354C0000030000000000000000C000800100002B
-:10355C000000000000008001C0000000000000001E
-:10356C0000000003600000000000000000000006E6
-:10357C0030000000000000000000000C10000000F3
-:10358C0000000000000000080000000000600000C7
-:10359C0003001800000000000000006000000300A1
-:1035AC00180000000000000000600000030018007C
-:1035BC000000000000000060000003001800000084
-:1035CC00000000000060000003001800000000E094
-:1035DC0003001F60F800C30718C0070000F80FC0F5
-:1035EC007F60FE03F31F18F01F00000C1860C06012
-:1035FC0003061B30181830000006303080E1010C37
-:10360C000F60180C60000003601800E3001807C07E
-:10361C001806C0008001400C0062001003801803E3
-:10362C0080008001C00C006600300380190380010B
-:10363C008001C0FCFF670030038019FFFF0180018F
-:10364C00C0FCFF630030038019FFFF008001C00C39
-:10365C00006000300380190300008001C00C006082
-:10366C0000300380190300008001400C0062001040
-:10367C000380180380008003601800C3001806C084
-:10368C001806C000800730308081010C0C60180CCB
-:10369C006000800D1860C000030618303818300028
-:1036AC0080F90FC07F00FE03F01F70F01F0080E157
-:1036BC0003001F00F800C00760C007008001000075
-:1036CC00000000000000000000008001000000006D
-:1036DC00000000000000000080010000000000005D
-:1036EC00000000000000800100000000000000004D
-:1036FC00000000008001000000000000000000003D
-:10370C000000FFFFFFFFFFFFFFFFFFFFFFFF0100B8
-:10371C00000000000000000000800100000000001C
-:10372C00000000000080010000000000000000000C
-:10373C00008001000000000000000000008001007B
-:10374C0000000000000000000080010000000000EC
-:10375C00000000000080FFFFFFFFFFFFFFFFFFFFE7
-:10376C00FFFF4E6F2048572056657273696F6E20AD
-:10377C00696E204F5450007573622077616B6575CC
-:10378C007020737570706F7274656400456E74652B
-:10379C0072696E67207374616E646279002069735C
-:1037AC00206F7574736964652073797374656D200B
-:1037BC00666C6173680048415244204641554C5434
-:1037CC0000446573636C656E20000A4669726D6C0B
-:1037DC00656E20000A5873756D20000A496E76617B
-:1037EC006C6964206669726D7761726520646573BB
-:1037FC006372697074696F6E2100436865636B73E3
-:10380C00756D6D696E67206669726D776172652082
-:10381C0075706461746500496E76616C69642066CC
-:10382C0069726D776172652043524320696E205333
-:10383C00504920666C617368210065726173655F25
-:10384C006F6C645F6669726D77617265004F6C6452
-:10385C0020576F726C64206669726D776172652097
-:10386C0062617365006661696C656420746F2065C4
-:10387C007261736520736563746F7220007772696F
-:10388C0074655F6E65775F6669726D7761726500EE
-:10389C006661696C656420746F2077726974652049
-:1038AC0061646472657373200057652772652064C8
-:1038BC0065616400436865636B73756D6D696E67F4
-:1038CC002000206279746573004E657720576F7203
-:1038DC006C64206669726D7761726520737973749C
-:1038EC00656D5F666C6173685F62617365004F6CD8
-:1038FC006420576F726C64206669726D77617265B3
-:10390C002073797374656D5F666C6173685F626157
-:10391C00736500436865636B73756D202D2077614B
-:10392C006E746564200020676F7420004F757220E0
-:10393C00696E7465726E616C20666C61736820636D
-:10394C006F6E74656E7473206172652062616420A1
-:10395C0028636865636B73756D206661696C65645B
-:10396C0029212054686973206973207265616C6C1D
-:10397C00792062616421007C00FE00FF01C701C751
-:10398C0001C701C701C701C701C701C701C701C7EB
-:10399C0001C701C701FF01FE007C0038003C003E5E
-:1039AC00003E003800380038003800380038003845
-:1039BC00003800380038003800FE00FE00FE007CA5
-:1039CC0000FE00FF01C701C701C001C001E000F00B
-:1039DC000078003C001E000E000F000700FF01FFE6
-:1039EC0001FF017C00FE00FF01C701C701C001C03F
-:1039FC0001F8007800F800C001C001C001C701C780
-:103A0C0001FF01FE007C00E000E000F000F000F897
-:103A1C0000F800F800FC00EC00EE00E600FF01FFEF
-:103A2C0001FF01E000E000E000E000FF00FF00FF0C
-:103A3C00000700070007007F00FF00FF01C701C05F
-:103A4C0001C001C701C701C701FF01FE007C007C5A
-:103A5C0000FE00FF01C701C701070007007700FF48
-:103A6C0000FF01C701C701C701C701C701FF01FE64
-:103A7C00007C00FF01FF01FF01E000E0007000701E
-:103A8C0000700038003800380038001C001C001C86
-:103A9C00001C001C001C007C00FE00FF01C701C7BD
-:103AAC0001C701C701FE007C00FE00C701C701C7AA
-:103ABC0001C701C701FF01FE007C007C00FE00FF76
-:103ACC0001C701C701C701C701C701FF01FE01DC26
-:103ADC0001C001C001C701C701FF01FE007C00004D
-:103AEC00000000000000007C00FE00FF01C701C7C1
-:103AFC0001F001FC01CE01C701C701E701FF01DFA5
-:103B0C0001CE010700070007000700E700F701FFDF
-:103B1C0001CF01C701C701C701C701C701C701CF49
-:103B2C0001FF01F701E70000000000000000007C2D
-:103B3C0000FE00FF01C701C70107000700070007CF
-:103B4C0000C701C701FF01FE007C00C001C001C01D
-:103B5C0001C001CE01DF01FF01E701C701C701C7A9
-:103B6C0001C701C701C701E701FF01DF01CE010059
-:103B7C00000000000000007C00FE00FF01C701C730
-:103B8C0001C701FF01FF010700C701C701FF01FECB
-:103B9C00007C00E000F000F8003800FE00FE00FEA3
-:103BAC000038003800380038003800380038003849
-:103BBC0000380038003800534144205741544348E2
-:103BCC003A20005265736574205265676973746599
-:103BDC0072200042726F776E206F7574207265735D
-:103BEC006574005374617274696E67204C53452080
-:103BFC006F7363696C6C61746F72004C5345206F0A
-:103C0C007363696C6C61746F7220646964206E6F8D
-:103C1C0074207374617274005553422077616B6524
-:103C2C007570006C656176696E67207374616E6483
-:103C3C00627900205F5F5F5F5F5F202020205F5F05
-:103C4C000D0A2F5F20205F5F2F205F5F2F202F0D2D
-:103C5C000A202F202F2020202F5F20205F5F2F0D88
-:103C6C000A2F5F2F20202020202F5F2F0D0A0042CB
-:103C7C006F6F746C6F616465722076657273696FB7
-:103C8C006E3A20004C617374206669726D776172B4
-:103C9C006520626F6F742077617320737461626C3E
-:103CAC00653B20636C65617220737472696B65731C
-:103CBC0000537475636B20627574746F6E2072653B
-:103CCC0067697374657220697320696E76616C69BB
-:103CDC00642C20636C656172696E672E004275748A
-:103CEC00746F6E2069642000697320737475636B44
-:103CFC002100427574746F6E207761732070757338
-:103D0C00686564206F6E20626F6F742E204275742C
-:103D1C00746F6E20636F756E7465723A2000426F1B
-:103D2C006F7420626974733A2000486F6C6420646D
-:103D3C006F776E205550202B204241434B20666FED
-:103D4C0072203520736563732E20746F20666F723A
-:103D5C0063652D626F6F7420505246004669726D18
-:103D6C0077617265206973206572617365640042C6
-:103D7C006F6F74696E67206E6F726D616C6C790019
-:103D8C005761746368646F67206361757365642041
-:103D9C006120726573657400536F66747761726528
-:103DAC00206661696C75726520636175736564204A
-:103DBC006120726573657400426F6F74206661696F
-:103DCC006C65642C20737472696B65203300426FD0
-:103DDC006F74206661696C65642C20737472696BF6
-:103DEC0065203200426F6F74206661696C65642CCB
-:103DFC0020737472696B652031004C6F6164696E5D
-:103E0C0067207265636F76657279206669726D776B
-:103E1C00617265004661696C656420746F206C6F1B
-:103E2C006164207265636F76657279206669726D64
-:103E3C00776172652C20737472696B65206F6E6587
-:103E4C002E2054727920616761696E2E004661697B
-:103E5C006C656420746F206C6F6164207265636F95
-:103E6C0076657279206669726D776172652C207344
-:103E7C007472696B652074776F2E2054727920618F
-:103E8C006761696E2E004661696C656420746F20F1
-:103E9C006C6F6164207265636F76657279206669F8
-:103EAC00726D776172652C20737472696B65207406
-:103EBC00687265652E205341442057415443480095
-:103ECC004F75722070726576696F757320666972B2
-:103EDC006D776172652075706461746520666169C7
-:103EEC006C65642C2061626F7274696E67207570EA
-:103EFC00646174652E004E6577206669726D77611A
-:103F0C00726520697320617661696C61626C6521F0
-:103F1C0000426F6F74696E67206669726D776172AB
-:103F2C00652040200072657475726E696E6720742E
-:103F3C006F207374616E64627900466F7263652DD5
-:103F4C00626F6F74696E67207265636F76657279E4
-:103F5C00206D6F64652E2E2E004261636B005570D0
-:103F6C000053656C65637400446F776E00303132BA
-:103F7C0033343536373839414243444546003031C5
-:103F8C0032333435363738396162636465660028FC
-:103F9C006E756C6C29000000000001020304010224
-:083FAC000304060708090000E8
-:103FB40000A0000002020000FFFFFFFF00C0040198
-:103FC40000000000000000021000000007000000D4
-:040000050800134C90
-:00000001FF
diff --git a/bin/boot/wscript b/bin/boot/wscript
deleted file mode 100644
index e7cef80c19..0000000000
--- a/bin/boot/wscript
+++ /dev/null
@@ -1,27 +0,0 @@
-def configure(cfg):
- variant = ''
- if cfg.options.nowatchdog:
- variant = 'nowatchdog_'
-
- if cfg.options.board in ('snowy_bb2', 'snowy_s3', 'spalding_bb2'):
- bootloader_board = 'snowy_dvt'
- elif cfg.is_silk():
- bootloader_board = 'silk'
- elif cfg.is_cutts():
- bootloader_board = 'robert_bb'
- else:
- bootloader_board = cfg.options.board
-
- boot_file_pattern = '%sboot_%s@*.hex' % (variant, bootloader_board)
- boot_node = cfg.path.ant_glob(boot_file_pattern)
-
- if not boot_node:
- cfg.end_msg('Not found')
- elif len(boot_node) > 1:
- cfg.fatal('Multiple bootloader binaries matching "%s": %s' % (
- boot_file_pattern, ', '.join(str(n) for n in boot_node)))
- else:
- cfg.env.BOOTLOADER_HEX = boot_node[0].abspath()
- cfg.end_msg(cfg.env.BOOTLOADER_HEX)
-
-# vim:filetype=python
diff --git a/bin/prf/recovery_bb2-3.7-prf-alpha9.bin b/bin/prf/recovery_bb2-3.7-prf-alpha9.bin
deleted file mode 100644
index 26929a10d4..0000000000
Binary files a/bin/prf/recovery_bb2-3.7-prf-alpha9.bin and /dev/null differ
diff --git a/bin/prf/recovery_ev2_4-3.7-prf-alpha9.bin b/bin/prf/recovery_ev2_4-3.7-prf-alpha9.bin
deleted file mode 100644
index dc1799056a..0000000000
Binary files a/bin/prf/recovery_ev2_4-3.7-prf-alpha9.bin and /dev/null differ
diff --git a/bin/prf/recovery_snowy_dvt_v3.0.2-prf.bin b/bin/prf/recovery_snowy_dvt_v3.0.2-prf.bin
deleted file mode 100644
index d8872be12a..0000000000
Binary files a/bin/prf/recovery_snowy_dvt_v3.0.2-prf.bin and /dev/null differ
diff --git a/bin/prf/recovery_snowy_evt2_v3.0.2-prf.bin b/bin/prf/recovery_snowy_evt2_v3.0.2-prf.bin
deleted file mode 100644
index 61d4d6b6cd..0000000000
Binary files a/bin/prf/recovery_snowy_evt2_v3.0.2-prf.bin and /dev/null differ
diff --git a/bin/prf/recovery_snowy_s3_v3.0.3-prf.bin b/bin/prf/recovery_snowy_s3_v3.0.3-prf.bin
deleted file mode 100644
index 6d6456e845..0000000000
Binary files a/bin/prf/recovery_snowy_s3_v3.0.3-prf.bin and /dev/null differ
diff --git a/bin/prf/recovery_spalding_v3.2.0-prf5.bin b/bin/prf/recovery_spalding_v3.2.0-prf5.bin
deleted file mode 100644
index e2899b9084..0000000000
Binary files a/bin/prf/recovery_spalding_v3.2.0-prf5.bin and /dev/null differ
diff --git a/bin/prf/recovery_v1_5-3.7-prf-alpha9.bin b/bin/prf/recovery_v1_5-3.7-prf-alpha9.bin
deleted file mode 100644
index 0c66908dcc..0000000000
Binary files a/bin/prf/recovery_v1_5-3.7-prf-alpha9.bin and /dev/null differ
diff --git a/bin/prf/recovery_v2_0-3.7-prf-alpha9.bin b/bin/prf/recovery_v2_0-3.7-prf-alpha9.bin
deleted file mode 100644
index aef34c0800..0000000000
Binary files a/bin/prf/recovery_v2_0-3.7-prf-alpha9.bin and /dev/null differ
diff --git a/boards/asterix/Kconfig b/boards/asterix/Kconfig
new file mode 100644
index 0000000000..d6c3508f21
--- /dev/null
+++ b/boards/asterix/Kconfig
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_ASTERIX
+ bool
+ default y
+ select BOARD_FAMILY_ASTERIX
diff --git a/boards/asterix/Kconfig.defconfig b/boards/asterix/Kconfig.defconfig
new file mode 100644
index 0000000000..90fc53715a
--- /dev/null
+++ b/boards/asterix/Kconfig.defconfig
@@ -0,0 +1,5 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "asterix"
diff --git a/boards/asterix/asterix.yml b/boards/asterix/asterix.yml
new file mode 100644
index 0000000000..4395475674
--- /dev/null
+++ b/boards/asterix/asterix.yml
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+runners:
+ - openocd
+ - nrfutil
diff --git a/boards/asterix/defconfig b/boards/asterix/defconfig
new file mode 100644
index 0000000000..a849c34272
--- /dev/null
+++ b/boards/asterix/defconfig
@@ -0,0 +1,80 @@
+# asterix board configuration
+
+CONFIG_SOC_NRF52=y
+
+CONFIG_HAL_NORDIC=y
+CONFIG_HAL_NORDIC_NRF52840=y
+
+CONFIG_PLATFORM_FLINT=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_1=y
+
+CONFIG_I2C=y
+CONFIG_I2C_NRF5=y
+
+CONFIG_UART=y
+CONFIG_UART_NRF5=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_PWM=y
+
+CONFIG_VIBE=y
+CONFIG_VIBE_DRV2604=y
+
+CONFIG_PMIC=y
+CONFIG_PMIC_NPM1300=y
+
+CONFIG_AMBIENT_LIGHT=y
+CONFIG_AMBIENT_LIGHT_OPT3001=y
+
+CONFIG_MIC=y
+CONFIG_MIC_NRF5=y
+
+CONFIG_SPEAKER=y
+CONFIG_SPEAKER_DA7212=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_STUB=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_SHARP_LS013B7DH01_NRF5=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_GD25LQ255E=y
+
+CONFIG_OTP=y
+CONFIG_OTP_FLASH=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_PMIC=y
+
+CONFIG_PRESSURE=y
+CONFIG_PRESSURE_BMP390=y
+
+CONFIG_ACCEL_LSM6DSO=y
+CONFIG_MAG=y
+CONFIG_MAG_MMC5603NJ=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NRF5=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_NRF5=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_NRF5=y
+
+CONFIG_PWM=y
+CONFIG_PWM_NRF5=y
+
+CONFIG_RTC=y
+CONFIG_RTC_NRF5=y
+
+CONFIG_RNG=y
+CONFIG_RNG_STUB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_STUB=y
+
+CONFIG_ACCEL_SENSITIVITY=y
+CONFIG_ORIENTATION_MANAGER=y
diff --git a/boards/asterix/support/openocd.cfg b/boards/asterix/support/openocd.cfg
new file mode 100644
index 0000000000..639dd54eda
--- /dev/null
+++ b/boards/asterix/support/openocd.cfg
@@ -0,0 +1,20 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+source [find interface/cmsis-dap.cfg]
+transport select swd
+
+source [find target/nrf52.cfg]
+
+adapter speed 10000
+reset_config none
+
+$_TARGETNAME configure -rtos FreeRTOS
+$_TARGETNAME configure -event gdb-attach {
+ echo "Halting target because GDB is attaching..."
+ halt
+}
+$_TARGETNAME configure -event gdb-detach {
+ echo "Resuming target because GDB is detaching..."
+ resume
+}
diff --git a/boards/getafix/Kconfig b/boards/getafix/Kconfig
new file mode 100644
index 0000000000..5727419a81
--- /dev/null
+++ b/boards/getafix/Kconfig
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_GETAFIX
+ bool
+ default y
+ select BOARD_FAMILY_GETAFIX
diff --git a/boards/getafix/Kconfig.defconfig b/boards/getafix/Kconfig.defconfig
new file mode 100644
index 0000000000..2a85155b80
--- /dev/null
+++ b/boards/getafix/Kconfig.defconfig
@@ -0,0 +1,5 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "getafix"
diff --git a/boards/getafix/Kconfig.dvt b/boards/getafix/Kconfig.dvt
new file mode 100644
index 0000000000..3f4eb3c360
--- /dev/null
+++ b/boards/getafix/Kconfig.dvt
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_GETAFIX_DVT
+ bool
+ default y
diff --git a/boards/getafix/Kconfig.dvt2 b/boards/getafix/Kconfig.dvt2
new file mode 100644
index 0000000000..44e208bb05
--- /dev/null
+++ b/boards/getafix/Kconfig.dvt2
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_GETAFIX_DVT2
+ bool
+ default y
diff --git a/boards/getafix/Kconfig.evt b/boards/getafix/Kconfig.evt
new file mode 100644
index 0000000000..9459bca960
--- /dev/null
+++ b/boards/getafix/Kconfig.evt
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_GETAFIX_EVT
+ bool
+ default y
diff --git a/boards/getafix/defconfig b/boards/getafix/defconfig
new file mode 100644
index 0000000000..937f5b8c26
--- /dev/null
+++ b/boards/getafix/defconfig
@@ -0,0 +1,85 @@
+# getafix board configuration
+
+CONFIG_SOC_SF32LB52=y
+
+CONFIG_HAL_SIFLI=y
+CONFIG_HAL_SIFLI_SF32LB52=y
+
+CONFIG_PLATFORM_GABBRO=y
+
+CONFIG_PBLBOOT=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_8=y
+
+CONFIG_I2C=y
+CONFIG_I2C_SF32LB=y
+
+CONFIG_UART=y
+CONFIG_UART_SF32LB=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_AW9364E=y
+CONFIG_VIBE=y
+
+CONFIG_PMIC=y
+CONFIG_PMIC_NPM1300=y
+
+CONFIG_AMBIENT_LIGHT=y
+CONFIG_AMBIENT_LIGHT_W1160=y
+
+CONFIG_MIC=y
+CONFIG_MIC_SF32LB=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_SF32LB=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_JDI_SF32LB=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_GD25Q256E=y
+
+CONFIG_OTP=y
+CONFIG_OTP_FLASH=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_PMIC=y
+
+CONFIG_TOUCH=y
+CONFIG_TOUCH_CST816=y
+
+CONFIG_ACCEL_LIS2DW12=y
+CONFIG_ACCEL_LIS2DW12_WK_DUR_DEFAULT=1
+CONFIG_ACCEL_LIS2DW12_WK_THS_MIN=1
+CONFIG_ACCEL_LIS2DW12_WK_THS_MAX=40
+CONFIG_ACCEL_LIS2DW12_WK_THS_DEFAULT=16
+CONFIG_ACCEL_LIS2DW12_SCALE_MG=4000
+CONFIG_ACCEL_LIS2DW12_FIFO_THRESHOLD=32
+CONFIG_MAG=y
+CONFIG_MAG_MMC5603NJ=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_SF32LB=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_SF32LB=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_SF32LB=y
+
+CONFIG_PWM=y
+CONFIG_PWM_SF32LB=y
+
+CONFIG_RTC=y
+CONFIG_RTC_SF32LB=y
+
+CONFIG_RNG=y
+CONFIG_RNG_SF32LB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_SF32LB=y
+
+CONFIG_ACCEL_SENSITIVITY=y
+CONFIG_APP_SCALING=y
+CONFIG_ORIENTATION_MANAGER=y
+CONFIG_MODDABLE_XS=y
diff --git a/boards/getafix/defconfig.dvt b/boards/getafix/defconfig.dvt
new file mode 100644
index 0000000000..54ba3d0c27
--- /dev/null
+++ b/boards/getafix/defconfig.dvt
@@ -0,0 +1,3 @@
+# getafix dvt board revision configuration
+
+CONFIG_VIBE_AW8623X=y
diff --git a/boards/getafix/defconfig.dvt2 b/boards/getafix/defconfig.dvt2
new file mode 100644
index 0000000000..a7a4262aea
--- /dev/null
+++ b/boards/getafix/defconfig.dvt2
@@ -0,0 +1,3 @@
+# getafix dvt2 board revision configuration
+
+CONFIG_VIBE_AW86225=y
diff --git a/boards/getafix/defconfig.evt b/boards/getafix/defconfig.evt
new file mode 100644
index 0000000000..2a234d2a3b
--- /dev/null
+++ b/boards/getafix/defconfig.evt
@@ -0,0 +1,4 @@
+# getafix evt board revision configuration
+
+CONFIG_VIBE_AW8623X=y
+CONFIG_ACCEL_LIS2DW12_DISABLE_ADDR_PULLUP=y
diff --git a/boards/getafix/getafix.yml b/boards/getafix/getafix.yml
new file mode 100644
index 0000000000..61173cc357
--- /dev/null
+++ b/boards/getafix/getafix.yml
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+revisions:
+ - evt
+ - dvt
+ - dvt2
+
+runners:
+ - sftool
diff --git a/boards/obelix/Kconfig b/boards/obelix/Kconfig
new file mode 100644
index 0000000000..0125fa99f2
--- /dev/null
+++ b/boards/obelix/Kconfig
@@ -0,0 +1,7 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_OBELIX
+ bool
+ default y
+ select BOARD_FAMILY_OBELIX
diff --git a/boards/obelix/Kconfig.bb2 b/boards/obelix/Kconfig.bb2
new file mode 100644
index 0000000000..6c45a09ebe
--- /dev/null
+++ b/boards/obelix/Kconfig.bb2
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_OBELIX_BB2
+ bool
+ default y
diff --git a/boards/obelix/Kconfig.defconfig b/boards/obelix/Kconfig.defconfig
new file mode 100644
index 0000000000..1f34714f76
--- /dev/null
+++ b/boards/obelix/Kconfig.defconfig
@@ -0,0 +1,5 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "obelix"
diff --git a/boards/obelix/Kconfig.dvt b/boards/obelix/Kconfig.dvt
new file mode 100644
index 0000000000..c7b31f6d38
--- /dev/null
+++ b/boards/obelix/Kconfig.dvt
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_OBELIX_DVT
+ bool
+ default y
diff --git a/boards/obelix/Kconfig.pvt b/boards/obelix/Kconfig.pvt
new file mode 100644
index 0000000000..3854bce530
--- /dev/null
+++ b/boards/obelix/Kconfig.pvt
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_OBELIX_PVT
+ bool
+ default y
diff --git a/boards/obelix/defconfig b/boards/obelix/defconfig
new file mode 100644
index 0000000000..969caf4de5
--- /dev/null
+++ b/boards/obelix/defconfig
@@ -0,0 +1,93 @@
+# obelix board configuration
+
+CONFIG_SOC_SF32LB52=y
+
+CONFIG_HAL_SIFLI=y
+CONFIG_HAL_SIFLI_SF32LB52=y
+
+CONFIG_PLATFORM_EMERY=y
+
+CONFIG_PBLBOOT=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_8=y
+
+CONFIG_I2C=y
+CONFIG_I2C_SF32LB=y
+
+CONFIG_UART=y
+CONFIG_UART_SF32LB=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_AW2016=y
+CONFIG_VIBE=y
+CONFIG_VIBE_AW86225=y
+
+CONFIG_PMIC=y
+CONFIG_PMIC_NPM1300=y
+
+CONFIG_AMBIENT_LIGHT=y
+CONFIG_AMBIENT_LIGHT_W1160=y
+
+CONFIG_MIC=y
+CONFIG_MIC_SF32LB=y
+
+CONFIG_SPEAKER=y
+CONFIG_SPEAKER_SF32LB=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_SF32LB=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_JDI_SF32LB=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_GD25Q256E=y
+
+CONFIG_OTP=y
+CONFIG_OTP_FLASH=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_PMIC=y
+
+CONFIG_TOUCH=y
+CONFIG_TOUCH_CST816=y
+
+CONFIG_HRM=y
+CONFIG_HRM_GH3X2X=y
+
+CONFIG_ACCEL_LIS2DW12=y
+CONFIG_ACCEL_LIS2DW12_WK_DUR_DEFAULT=1
+CONFIG_ACCEL_LIS2DW12_WK_THS_MIN=1
+CONFIG_ACCEL_LIS2DW12_WK_THS_MAX=40
+CONFIG_ACCEL_LIS2DW12_WK_THS_DEFAULT=16
+CONFIG_ACCEL_LIS2DW12_SCALE_MG=4000
+CONFIG_ACCEL_LIS2DW12_FIFO_THRESHOLD=32
+CONFIG_MAG=y
+CONFIG_MAG_MMC5603NJ=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_SF32LB=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_SF32LB=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_SF32LB=y
+
+CONFIG_PWM=y
+CONFIG_PWM_SF32LB=y
+
+CONFIG_RTC=y
+CONFIG_RTC_SF32LB=y
+
+CONFIG_RNG=y
+CONFIG_RNG_SF32LB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_SF32LB=y
+
+CONFIG_DYNAMIC_BACKLIGHT=y
+CONFIG_ACCEL_SENSITIVITY=y
+CONFIG_APP_SCALING=y
+CONFIG_ORIENTATION_MANAGER=y
+CONFIG_MODDABLE_XS=y
diff --git a/boards/obelix/defconfig.bb2 b/boards/obelix/defconfig.bb2
new file mode 100644
index 0000000000..67d9f178d4
--- /dev/null
+++ b/boards/obelix/defconfig.bb2
@@ -0,0 +1,4 @@
+# obelix bb2 board revision configuration
+
+CONFIG_IS_BIGBOARD=y
+CONFIG_ACCEL_LIS2DW12_DISABLE_ADDR_PULLUP=y
diff --git a/boards/obelix/defconfig.dvt b/boards/obelix/defconfig.dvt
new file mode 100644
index 0000000000..172b709209
--- /dev/null
+++ b/boards/obelix/defconfig.dvt
@@ -0,0 +1,3 @@
+# obelix dvt board revision configuration
+
+CONFIG_ACCEL_LIS2DW12_DISABLE_ADDR_PULLUP=y
diff --git a/boards/obelix/defconfig.pvt b/boards/obelix/defconfig.pvt
new file mode 100644
index 0000000000..7a2a0e5baf
--- /dev/null
+++ b/boards/obelix/defconfig.pvt
@@ -0,0 +1 @@
+# obelix pvt board revision configuration
diff --git a/boards/obelix/obelix.yml b/boards/obelix/obelix.yml
new file mode 100644
index 0000000000..22af6a4da3
--- /dev/null
+++ b/boards/obelix/obelix.yml
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+revisions:
+ - bb2
+ - dvt
+ - pvt
+
+runners:
+ - sftool
diff --git a/boards/qemu_emery/Kconfig b/boards/qemu_emery/Kconfig
new file mode 100644
index 0000000000..3668d9d46d
--- /dev/null
+++ b/boards/qemu_emery/Kconfig
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_QEMU_EMERY
+ bool
+ default y
diff --git a/boards/qemu_emery/Kconfig.defconfig b/boards/qemu_emery/Kconfig.defconfig
new file mode 100644
index 0000000000..30e26a7faf
--- /dev/null
+++ b/boards/qemu_emery/Kconfig.defconfig
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "qemu_emery"
+
+config QEMU_MACHINE
+ default "pebble-emery"
diff --git a/boards/qemu_emery/defconfig b/boards/qemu_emery/defconfig
new file mode 100644
index 0000000000..8241ae5fe6
--- /dev/null
+++ b/boards/qemu_emery/defconfig
@@ -0,0 +1,60 @@
+# qemu_emery board configuration
+
+CONFIG_SOC_QEMU=y
+CONFIG_CORTEX_M33=y
+
+CONFIG_PLATFORM_EMERY=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_8=y
+
+CONFIG_UART=y
+CONFIG_UART_QEMU=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_QEMU=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_QEMU=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_QEMU=y
+
+CONFIG_TOUCH=y
+CONFIG_TOUCH_QEMU=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_QEMU=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_QEMU=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_QEMU=y
+CONFIG_BACKLIGHT_QEMU_COLOR=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_QEMU=y
+
+CONFIG_PWM=y
+CONFIG_PWM_QEMU=y
+
+CONFIG_RTC=y
+CONFIG_RTC_QEMU=y
+
+CONFIG_RNG=y
+CONFIG_RNG_STUB=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_STUB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_STUB=y
+
+CONFIG_MIC=y
+CONFIG_MIC_QEMU=y
+
+CONFIG_SPEAKER=y
+CONFIG_SPEAKER_QEMU=y
+
+CONFIG_APP_SCALING=y
+CONFIG_MODDABLE_XS=y
diff --git a/boards/qemu_flint/Kconfig b/boards/qemu_flint/Kconfig
new file mode 100644
index 0000000000..9325595309
--- /dev/null
+++ b/boards/qemu_flint/Kconfig
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_QEMU_FLINT
+ bool
+ default y
diff --git a/boards/qemu_flint/Kconfig.defconfig b/boards/qemu_flint/Kconfig.defconfig
new file mode 100644
index 0000000000..5243dba93d
--- /dev/null
+++ b/boards/qemu_flint/Kconfig.defconfig
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "qemu_flint"
+
+config QEMU_MACHINE
+ default "pebble-flint"
diff --git a/boards/qemu_flint/defconfig b/boards/qemu_flint/defconfig
new file mode 100644
index 0000000000..64989eabd7
--- /dev/null
+++ b/boards/qemu_flint/defconfig
@@ -0,0 +1,53 @@
+# qemu_flint board configuration
+
+CONFIG_SOC_QEMU=y
+CONFIG_CORTEX_M4=y
+
+CONFIG_PLATFORM_FLINT=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_1=y
+
+CONFIG_UART=y
+CONFIG_UART_QEMU=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_QEMU=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_QEMU=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_QEMU=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_QEMU=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_QEMU=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_QEMU=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_QEMU=y
+
+CONFIG_PWM=y
+CONFIG_PWM_QEMU=y
+
+CONFIG_RTC=y
+CONFIG_RTC_QEMU=y
+
+CONFIG_RNG=y
+CONFIG_RNG_STUB=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_STUB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_STUB=y
+
+CONFIG_MIC=y
+CONFIG_MIC_QEMU=y
+
+CONFIG_SPEAKER=y
+CONFIG_SPEAKER_QEMU=y
diff --git a/boards/qemu_gabbro/Kconfig b/boards/qemu_gabbro/Kconfig
new file mode 100644
index 0000000000..08e42953c7
--- /dev/null
+++ b/boards/qemu_gabbro/Kconfig
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_QEMU_GABBRO
+ bool
+ default y
diff --git a/boards/qemu_gabbro/Kconfig.defconfig b/boards/qemu_gabbro/Kconfig.defconfig
new file mode 100644
index 0000000000..8ca0e56bff
--- /dev/null
+++ b/boards/qemu_gabbro/Kconfig.defconfig
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: 2026 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
+
+config BOARD_FAMILY_NAME
+ default "qemu_gabbro"
+
+config QEMU_MACHINE
+ default "pebble-gabbro"
diff --git a/boards/qemu_gabbro/defconfig b/boards/qemu_gabbro/defconfig
new file mode 100644
index 0000000000..7ded6692d4
--- /dev/null
+++ b/boards/qemu_gabbro/defconfig
@@ -0,0 +1,56 @@
+# qemu_gabbro board configuration
+
+CONFIG_SOC_QEMU=y
+CONFIG_CORTEX_M33=y
+
+CONFIG_PLATFORM_GABBRO=y
+
+CONFIG_SCREEN_COLOR_DEPTH_BITS_8=y
+
+CONFIG_UART=y
+CONFIG_UART_QEMU=y
+
+CONFIG_BACKLIGHT=y
+CONFIG_BACKLIGHT_QEMU=y
+
+CONFIG_DISPLAY=y
+CONFIG_DISPLAY_QEMU=y
+
+CONFIG_FLASH=y
+CONFIG_FLASH_QEMU=y
+
+CONFIG_BATTERY=y
+CONFIG_BATTERY_QEMU=y
+
+CONFIG_TOUCH=y
+CONFIG_TOUCH_QEMU=y
+
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_QEMU=y
+
+CONFIG_EXTI=y
+CONFIG_EXTI_QEMU=y
+
+CONFIG_GPIO=y
+CONFIG_GPIO_QEMU=y
+
+CONFIG_PWM=y
+CONFIG_PWM_QEMU=y
+
+CONFIG_RTC=y
+CONFIG_RTC_QEMU=y
+
+CONFIG_RNG=y
+CONFIG_RNG_STUB=y
+
+CONFIG_TEMPERATURE=y
+CONFIG_TEMPERATURE_STUB=y
+
+CONFIG_CPUMODE=y
+CONFIG_CPUMODE_STUB=y
+
+CONFIG_MIC=y
+CONFIG_MIC_QEMU=y
+
+CONFIG_APP_SCALING=y
+CONFIG_MODDABLE_XS=y
diff --git a/checkers/MutexChecker.cpp b/checkers/MutexChecker.cpp
deleted file mode 100644
index b7f65d6b7f..0000000000
--- a/checkers/MutexChecker.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-// Copyright 2024 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "clang/StaticAnalyzer/Core/Checker.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
-#include "clang/StaticAnalyzer/Core/CheckerRegistry.h"
-#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
-
-using namespace clang;
-using namespace ento;
-
-namespace std {
- void terminate( void ) _NOEXCEPT {
- abort();
- }
-}
-
-/* This analyzer suffers from the major limitation that most of the mutexes in Pebble are globals,
- * so all symbols and MemRegions refering to the mutexes are invalidated every time an unknown
- * function is called. This analyzer instead associates mutexes with the declaration of their
- * variables, which has the obvious limitation of not catching when mutexes are passed as
- * arguments (which fortunately never? happens in pebble).
- */
-
-class MutexState {
- private:
- bool locked;
- bool recursive;
- unsigned lockCount;
- public:
- MutexState(bool isLocked, bool isRecursive, unsigned startCount)
- :
- locked(isLocked),
- recursive(isRecursive),
- lockCount(startCount)
- {}
-
- MutexState getLocked() const {
- if (recursive) {
- if (locked) {
- // Preserve the first lock function (it should be the last one to unlock)
- return MutexState(true, true, lockCount + 1);
- }
- else {
- return MutexState(true, true, lockCount + 1);
- }
- }
- else {
- return MutexState(true, false, 0);
- }
- }
-
- MutexState getUnlocked(void) const {
- if (recursive) {
- // If lockCount is one, we unlock
- return MutexState(lockCount > 1, true, lockCount - 1);
- }
- else {
- return MutexState(false, false, 0);
- }
- }
-
- bool isLocked(void) const {
- return locked;
- }
-
- bool isRecursive(void) const {
- return recursive;
- }
-
- bool operator==(const MutexState &other) const {
- return locked == other.locked && recursive == other.recursive &&
- lockCount == other.lockCount;
- }
-
- void Profile(llvm::FoldingSetNodeID &ID) const {
- ID.AddBoolean(locked);
- ID.AddBoolean(recursive);
- ID.AddInteger(lockCount);
- }
-};
-
-// Map mutex declarations to state info
-REGISTER_MAP_WITH_PROGRAMSTATE(MutexMap, const Decl *, MutexState);
-
-// Hold an ordered list of the mutexes to catch lock order reversal
-REGISTER_LIST_WITH_PROGRAMSTATE(MutexList, const Decl *);
-
-namespace {
- class MutexChecker : public Checker {
- std::unique_ptr NoUnlockBugType;
- std::unique_ptr DoubleLockBugType;
- std::unique_ptr DoubleUnlockBugType;
- std::unique_ptr TooManyUnlocksBugType;
- std::unique_ptr UnlockNoLockBugType;
- std::unique_ptr LockReversalBugType;
-
- void reportError(const std::unique_ptr &bugType, StringRef msg, CheckerContext &C) const {
- ExplodedNode *endNode = C.generateSink();
- if (!endNode) {
- return;
- }
- BugReport *bug = new BugReport(*bugType, msg, endNode);
- C.emitReport(bug);
- }
-
- ProgramStateRef lockMutex(const Decl *mutexDecl, const MutexState *curMutex,
- ProgramStateRef state, bool recursive = false) const {
-
- state = state->add(mutexDecl);
- if (curMutex) {
- MutexState lockedMutex = curMutex->getLocked();
- return state->set(mutexDecl, lockedMutex);
- }
- else {
- MutexState newMutex(true, recursive, recursive ? 1 : 0);
- return state->set(mutexDecl, newMutex);
- }
- }
-
- const Decl * getMutexDecl(const Expr *argExpr) const {
- const Expr *strippedExpr = argExpr->IgnoreParenCasts();
- const DeclRefExpr *ref = dyn_cast(strippedExpr);
- if (ref) {
- return ref->getDecl();
- }
- // If it wasn't a DeclRef maybe it was a member?
- const MemberExpr *member = dyn_cast(strippedExpr);
- if (member) {
- return member->getMemberDecl();
- }
-
- return NULL;
- }
-
- void handleLock(StringRef funcName, const CallEvent &call, CheckerContext &C) const {
- const Decl *mutexDecl = getMutexDecl(call.getArgExpr(0));
-
- if (!mutexDecl) {
- return;
- }
-
- ProgramStateRef state = C.getState();
-
- const MutexState *curMutex = state->get(mutexDecl);
-
- if (funcName.equals("mutex_lock") || funcName.equals("mutex_lock_with_lr")) {
- if (curMutex) {
- if (curMutex->isLocked()) {
- reportError(DoubleLockBugType, "This lock was already locked", C);
- return;
- }
- }
- state = lockMutex(mutexDecl, curMutex, state);
- C.addTransition(state);
- }
- else if (funcName.equals("mutex_lock_with_timeout")) {
- if (curMutex) {
- if (curMutex->isLocked()) {
- reportError(DoubleLockBugType, "This lock was already locked", C);
- return;
- }
- }
- // diverge into two states, one where we get the mutex and one
- // where we don't
- ProgramStateRef lockedState, timeoutState;
-
- DefinedSVal retVal = call.getReturnValue().castAs();
- std::tie(lockedState, timeoutState) = state->assume(retVal);
-
- lockedState = lockMutex(mutexDecl, curMutex, lockedState);
-
- C.addTransition(lockedState);
- C.addTransition(timeoutState);
- }
- else if (funcName.equals("mutex_lock_recursive")) {
- state = lockMutex(mutexDecl, curMutex, state, true);
- C.addTransition(state);
- }
- else if (funcName.equals("mutex_lock_recursive_with_timeout") ||
- funcName.equals("mutex_lock_recursive_with_timeout_and_lr")) {
- ProgramStateRef lockedState, timeoutState;
-
- DefinedSVal retVal = call.getReturnValue().castAs();
- std::tie(lockedState, timeoutState) = state->assume(retVal);
-
- lockedState = lockMutex(mutexDecl, curMutex, lockedState, true);
-
- C.addTransition(lockedState);
- C.addTransition(timeoutState);
- }
- }
-
- void handleUnlock(StringRef funcName, const CallEvent &call, CheckerContext &C) const {
- if (!(funcName.equals("mutex_unlock") || funcName.equals("mutex_unlock_recursive"))) {
- return;
- }
- ProgramStateRef state = C.getState();
-
- const Decl *mutexDecl = getMutexDecl(call.getArgExpr(0));
- const MutexState *curMutex = state->get(mutexDecl);
-
- // If it isn't in the map, we never locked it
- if (!curMutex) {
- reportError(UnlockNoLockBugType, "Mutex was never locked", C);
- return;
- }
- // If it is in the map but unlocked, it was unlocked twice
- if (!curMutex->isLocked()) {
- if (curMutex->isRecursive()) {
- reportError(TooManyUnlocksBugType, "Recursive mutex already fully unlocked", C);
- }
- else {
- reportError(DoubleUnlockBugType, "Mutex already unlocked", C);
- }
- return;
- }
-
- const Decl *lastDecl = state->get().getHead();
-
- if (mutexDecl != lastDecl) {
- reportError(LockReversalBugType, "This was not the most recently acquired lock", C);
- return;
- }
-
- state = state->set(state->get().getTail());
- state = state->set(mutexDecl, curMutex->getUnlocked());
- C.addTransition(state);
- }
-
- public:
- MutexChecker(void)
- : NoUnlockBugType(new BugType(this, "Failure to call unlock", "Pebble Mutex Plugin")),
- DoubleLockBugType(new BugType(this, "Double Lock", "Pebble Mutex Plugin")),
- DoubleUnlockBugType(new BugType(this, "Double Unlock", "Pebble Mutex Plugin")),
- TooManyUnlocksBugType(new BugType(this, "More unlocks than locks", "Pebble Mutex Plugin")),
- UnlockNoLockBugType(new BugType(this, "Unlock called before lock", "Pebble Mutex Plugin")),
- LockReversalBugType(new BugType(this, "Lock order reversal", "Pebble Mutex Plugin"))
- {}
-
- void checkPostCall(const CallEvent &call, CheckerContext &C) const {
- const IdentifierInfo *identInfo = call.getCalleeIdentifier();
- if(!identInfo) {
- return;
- }
- StringRef funcName = identInfo->getName();
- if (funcName.startswith("mutex_lock")) {
- handleLock(funcName, call, C);
- }
- else if (funcName.startswith("mutex_unlock")) {
- handleUnlock(funcName, call, C);
- }
- }
-
- void checkEndFunction(CheckerContext &C) const {
- ProgramStateRef state = C.getState();
-
- if (C.inTopFrame()) {
- // This path ends once this function ends
- for (auto mutexPair : state->get()) {
- if (mutexPair.second.isLocked()) {
- reportError(NoUnlockBugType, "Mutex still locked at end of path", C);
- return;
- }
- }
- }
- }
- };
-}
-
-extern "C" const char clang_analyzerAPIVersionString[] = CLANG_ANALYZER_API_VERSION_STRING;
-
-extern "C" void clang_registerCheckers(CheckerRegistry ®istry) {
- registry.addChecker("pebble.MutexChecker", "Checker for use of mutex_lock()/mutex_unlock()");
-}
diff --git a/checkers/SyscallSecurityChecker.cpp b/checkers/SyscallSecurityChecker.cpp
deleted file mode 100644
index 396c2db6ee..0000000000
--- a/checkers/SyscallSecurityChecker.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2024 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "clang/StaticAnalyzer/Core/Checker.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h"
-#include "clang/StaticAnalyzer/Core/CheckerRegistry.h"
-#include "clang/StaticAnalyzer/Core/BugReporter/BugType.h"
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ADT/StringSet.h"
-
-using namespace clang;
-using namespace ento;
-
-namespace std {
- void terminate( void ) _NOEXCEPT {
- abort();
- }
-}
-
-// Need to specialize for any custom types used in traits
-// Look in include/clang/StaticAnalyzer/Core/PathSensitive/ProgramStateTrait.h
-namespace clang {
- namespace ento {
- template <> struct ProgramStatePartialTrait {
- typedef const FunctionDecl * data_type;
-
- static inline data_type MakeData(void *const* p) {
- return p ? (const FunctionDecl *)*p : data_type();
- }
-
- static inline void *MakeVoidPtr(data_type d) {
- return const_cast(d);
- }
- };
- }
-}
-
-/* Ultimately this would work better / be more thorough if it made use of the Analyzer's
- * taint checking, but there is no infrastructure to remove taint at the moment.
- */
-
-REGISTER_TRAIT_WITH_PROGRAMSTATE(CurrentSyscallState, const FunctionDecl *);
-// Args are tracked by their MemRegion
-REGISTER_SET_WITH_PROGRAMSTATE(TaintedArgsState, const MemRegion *);
-
-namespace {
- class SyscallSecurityChecker :
- public Checker< eval::Call, check::PreCall, check::Location, check::Bind, check::EndFunction > {
-
- std::unique_ptr NoBoundsCheckBugType;
- std::unique_ptr UnsafeCallBugType;
-
- llvm::StringSet<> unsafeFunctions {};
-
- const FunctionDecl * getCurrentSyscall(const ProgramStateRef state) const {
- return state->get();
- }
-
- bool inSyscall(const ProgramStateRef state) const {
- return !!getCurrentSyscall(state);
- }
-
- ProgramStateRef setCurrentSyscall(const ProgramStateRef state, const FunctionDecl *FD) const {
- return state->set(FD);
- }
-
- bool isValTainted(const SVal &arg, const ProgramStateRef state) const {
- const MemRegion *MR = arg.getAsRegion();
- if (!MR) {
- return false;
- }
- const MemRegion *baseMR = MR->getBaseRegion();
-
- return state->contains(baseMR);
- }
-
- void reportUnsanitizedUse(const SVal &arg, const ProgramStateRef state, CheckerContext &C) const {
- ExplodedNode *errNode = C.generateSink();
- if (!errNode) {
- // Already reported an error here
- return;
- }
- BugReport *R = new BugReport(*NoBoundsCheckBugType,
- "Used an unsanitized argument from syscall", errNode);
- R->markInteresting(arg);
- C.emitReport(R);
- }
-
- public:
- SyscallSecurityChecker(void)
- : NoBoundsCheckBugType(new BugType(this, "Failed to check bounds", "Pebble Syscall Plugin")),
- UnsafeCallBugType(new BugType(this, "Syscall used dangerous function", "Pebble Syscall Plugin"))
- {
- StringRef funcs[] = { "task_malloc", "task_zalloc", "task_calloc", "app_malloc", "app_zalloc", "app_calloc" };
-
- // It would be more efficient to look up the IdentifierInfos for each of these and compare against that
- for (StringRef func : funcs) {
- unsafeFunctions.insert(func);
- }
- }
-
- bool evalCall(const CallExpr *call, CheckerContext &C) const {
- if (!C.getCalleeName(call).equals("syscall_internal_elevate_privilege")) {
- return false;
- }
- // Always return true from syscall_internal_elevate_privilege
- // so the analyzer always thinks privileges have been elevated
-
- ProgramStateRef state = C.getState();
-
- SVal ret = C.getSValBuilder().makeTruthVal(true);
- state = state->BindExpr(call, C.getLocationContext(), ret);
-
- C.addTransition(state);
- return true;
- }
-
- void checkPreCall(const CallEvent &call, CheckerContext &C) const {
- const IdentifierInfo *identInfo = call.getCalleeIdentifier();
- if(!identInfo) {
- return;
- }
- StringRef funcName = identInfo->getName();
-
- ProgramStateRef state = C.getState();
-
- if (funcName.equals("syscall_internal_elevate_privilege")) {
- const LocationContext *LCtx = C.getLocationContext();
- const FunctionDecl *FD = dyn_cast(LCtx->getDecl());
- if (!FD) {
- llvm::errs() << "Privileges elevated outside of function?\n";
- return;
- }
-
- ExplodedNode *pred = NULL;
-
- // If we're not at the top level, we generate two new transitions, one for the current syscall
- // executing normally, and one which simulates execution starting at this syscall.
- // This is important, because if a syscall is called by another function, the syscall
- // will not be treated as an entry point by the analyzer.
-
- if (!C.inTopFrame()) {
- C.addTransition(state);
- state = C.getStateManager().getInitialState(LCtx);
- // Get the first node in the state graph
- pred = C.getPredecessor();
- while (pred->getFirstPred()) {
- pred = pred->getFirstPred();
- }
- }
-
- for (unsigned i = 0; i < FD->getNumParams(); i++) {
- // We only care about tracking pointer arguments
- const ParmVarDecl *ParamDecl = FD->getParamDecl(i);
- if (ParamDecl->getType()->isPointerType()) {
- // Find the MemRegion associated with the parameter.
- // Seems very roundabout, but it works...
- // Remember to look at state->getRegion
- Loc lValue = state->getLValue(ParamDecl, LCtx);
- SVal valRegion = state->getSVal(lValue);
- if (valRegion == UnknownVal()) {
- llvm::errs() << "Failed to get argument SymbolRef\n";
- continue;
- }
- const MemRegion *MR = valRegion.getAsRegion();
- if (!MR) {
- llvm::errs() << "No region for ptr argument\n";
- continue;
- }
- state = state->add(MR);
- }
- }
- state = setCurrentSyscall(state, FD);
- C.addTransition(state, pred, nullptr);
- }
- else if (inSyscall(state)) {
- if (funcName.equals("syscall_assert_userspace_buffer")) {
- const MemRegion *MR = call.getArgSVal(0).getAsRegion();
-
- state = state->remove(MR);
- }
- else if (funcName.equals("memory_layout_is_cstring_in_region") ||
- funcName.equals("memory_layout_is_pointer_in_region")) {
- const MemRegion *MR = call.getArgSVal(1).getAsRegion();
-
- state = state->remove(MR);
- }
- // Make sure the syscall isn't calling an unsafe function
- else if (unsafeFunctions.count(funcName)) {
- ExplodedNode *errNode = C.generateSink();
- if (!errNode) {
- // Already reported an error here
- return;
- }
- BugReport *R = new BugReport(*UnsafeCallBugType,
- "This function shouldn't be called from privileged code", errNode);
- C.emitReport(R);
- return;
- }
- else { // Any other function, just want to make sure it isn't getting the unsanitized args
- for (unsigned i = 0; i < call.getNumArgs(); i++) {
- SVal argVal = call.getArgSVal(i);
- if (isValTainted(argVal, state)) {
- reportUnsanitizedUse(argVal, state, C);
- return;
- }
- }
- }
- C.addTransition(state);
- }
- }
-
- void checkLocation(SVal loc, bool isLoad, const Stmt *S, CheckerContext &C) const {
- ProgramStateRef state = C.getState();
-
- if (isValTainted(loc, state)) {
- reportUnsanitizedUse(loc, state, C);
- }
- }
-
- void checkBind(SVal loc, SVal val, const Stmt *S, CheckerContext &C) const {
- ProgramStateRef state = C.getState();
-
- if (isValTainted(val, state)) {
- reportUnsanitizedUse(val, state, C);
- }
- }
-
- void checkEndFunction(CheckerContext &C) const {
- ProgramStateRef state = C.getState();
-
- const Decl *D = C.getLocationContext()->getDecl();
- const FunctionDecl *FD = dyn_cast(D);
- if (!FD) {
- // Not sure why this would ever be the case...
- llvm::errs() << "Path ended outside of function?\n";
- return;
- }
-
- if (FD != getCurrentSyscall(state)) {
- return;
- }
-
- // Since we are effectively emulating every syscall as an entry point from
- // the analyzer's perspective, once the syscall is done, end the path.
- C.generateSink();
- }
- };
-}
-
-extern "C" const char clang_analyzerAPIVersionString[] = CLANG_ANALYZER_API_VERSION_STRING;
-
-extern "C" void clang_registerCheckers(CheckerRegistry ®istry) {
- registry.addChecker("pebble.SyscallSecurityChecker", "Checker that makes sure pointer arguments to syscalls are sanitized");
-}
diff --git a/checkers/test-programs/mutex-test.c b/checkers/test-programs/mutex-test.c
deleted file mode 100644
index 8964497ea2..0000000000
--- a/checkers/test-programs/mutex-test.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-#include
-
-struct Mutex;
-struct RecursiveMutex;
-
-typedef struct Mutex * restrict mutex_t;
-typedef struct RecursiveMutex * recursive_mutex_t;
-
-extern void mutex_lock(mutex_t);
-extern void mutex_unlock(mutex_t);
-
-extern bool mutex_lock_with_timeout(mutex_t);
-
-extern void mutex_lock_recursive(recursive_mutex_t);
-extern void mutex_unlock_recursive(recursive_mutex_t);
-
-static mutex_t global_lock = 0;
-static mutex_t global_lock2;
-mutex_t recursive_lock;
-
-void nounlock() {
- mutex_lock(global_lock);
-}
-
-void nolock() {
- mutex_unlock(global_lock);
-}
-
-void normal() {
- mutex_lock(global_lock);
- mutex_unlock(global_lock);
-}
-
-struct handle {
- mutex_t m;
-} m_wrapper;
-
-extern int do_stuff(struct handle * h);
-
-void structthing(struct handle * h) {
- mutex_lock(h->m);
- do_stuff(h);
- mutex_unlock(h->m);
-}
-
-extern int do_stuff2();
-
-void stuff() {
- mutex_lock(global_lock);
-
- do_stuff2();
-
- mutex_unlock(global_lock);
-}
-
-void stuff2() {
- mutex_lock(m_wrapper.m);
-
- do_stuff2();
-
- mutex_unlock(m_wrapper.m);
-}
-
-void nest2() {
- mutex_lock(global_lock);
- printf("blah %p", global_lock);
- mutex_unlock(global_lock);
-}
-
-void nest() {
- nest2();
-}
-
-void cond(void *glob_ptr) {
- mutex_lock(global_lock);
-
- while (glob_ptr) {
- printf("blah %p", glob_ptr);
- }
-
- mutex_unlock(global_lock);
-}
-
-void timeout() {
- mutex_lock_with_timeout(global_lock);
-
- mutex_unlock(global_lock);
-}
-
-void good_timeout() {
- if (mutex_lock_with_timeout(global_lock)) {
- mutex_unlock(global_lock);
- }
-}
-
-void stupid_timeout() {
- if (!mutex_lock_with_timeout(global_lock)) {
- mutex_unlock(global_lock);
- }
-}
-
-void reversal() {
- mutex_lock(global_lock);
- mutex_lock(global_lock2);
-
- mutex_unlock(global_lock);
- mutex_unlock(global_lock2);
-}
-
-
-// Trying to repro the false positives unsuccessfully...
-extern bool decision();
-
-inline void __attribute__((always_inline)) locker() {
- mutex_lock(global_lock);
-}
-
-inline void __attribute__((always_inline)) unlocker() {
- mutex_unlock(global_lock);
-}
-
-static inline void __attribute__((always_inline)) lock_wrap() {
- locker();
- if (decision()) {
- unlocker();
- }
-}
-
-static inline void __attribute__((always_inline)) unlock_wrap() {
- unlocker();
-}
-
-void lockme() {
- lock_wrap();
- unlock_wrap();
-}
diff --git a/checkers/test-programs/syscall-test.c b/checkers/test-programs/syscall-test.c
deleted file mode 100644
index 29d8b2343b..0000000000
--- a/checkers/test-programs/syscall-test.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include
-#include
-#include
-
-extern bool syscall_internal_elevate_privilege();
-extern void syscall_assert_userspace_buffer(const void * check_buffer, int size);
-
-extern void * app_malloc(unsigned size);
-
-void do_stuff(void * buffer, int size) {
- strncpy(buffer, "Woooooooo", size);
-}
-
-void good_syscall(void * buffer, int size) {
- syscall_internal_elevate_privilege();
-
- syscall_assert_userspace_buffer(buffer, size);
-
- do_stuff(buffer, size);
-}
-
-void bad_syscall(void * buffer, int size) {
- syscall_internal_elevate_privilege();
- do_stuff(buffer, size);
-}
-
-void stupid_syscall(void * buffer, int size) {
- void * stupid = (char *)buffer + 1;
- syscall_internal_elevate_privilege();
- do_stuff(stupid, size);
-}
-
-void not_syscall(void * buffer, int size) {
- do_stuff(buffer, size);
-}
-
-void nested_syscall(void * buffer, int size) {
- syscall_internal_elevate_privilege();
- syscall_assert_userspace_buffer(buffer, size);
- bad_syscall(buffer, size);
- good_syscall(buffer, size);
-}
-
-void bad_nested_syscall(void * buffer, int size) {
- syscall_internal_elevate_privilege();
- bad_syscall(buffer, size);
-}
-
-void hidden_bad_syscall(void * buffer, int size) {
- syscall_internal_elevate_privilege();
- do_stuff(buffer, size);
-}
-
-void if_syscall(void * buffer, int size) {
- if (syscall_internal_elevate_privilege()) {
- syscall_assert_userspace_buffer(buffer, size);
- }
- do_stuff(buffer, size);
-}
-
-void wrapper() {
- void * buffer = NULL;
- int size = 0;
-
- good_syscall(buffer, size);
- // This tests to make sure analysis continues through good_syscall
- hidden_bad_syscall(buffer, size);
-}
-
-bool cond(const char *font_key) {
- return &cond == font_key;
-}
-
-void conditional_syscall(const char *font_key) {
- syscall_internal_elevate_privilege();
-
- if (font_key) {
- if (!cond(font_key)) {
- do_stuff(font_key, 5);
- }
- }
-}
-
-void store_syscall(char * buf, int size) {
- syscall_internal_elevate_privilege();
-
- buf[0] = 'a';
- char * new = buf;
-
- do_stuff(new, size);
-
-}
-
-void load_syscall(char * buf, int size) {
- syscall_internal_elevate_privilege();
-
- char test = buf[0];
-
- do_stuff(&test, size);
-}
-
-void bind_syscall(char * buf, int size) {
- syscall_internal_elevate_privilege();
-
- char * new = buf;
-
- do_stuff(new, size);
-}
-
-void malloc_syscall() {
- syscall_internal_elevate_privilege();
- void *buf = app_malloc(5);
-
- syscall_assert_userspace_buffer(buf, 5);
-
- do_stuff(buf, 5);
-}
diff --git a/checkers/wscript b/checkers/wscript
deleted file mode 100644
index 7614f78ebb..0000000000
--- a/checkers/wscript
+++ /dev/null
@@ -1,70 +0,0 @@
-from os import path
-
-def options(opt):
- opt.load('compiler_cxx')
- opt.add_option('--checker', action='store', default='all')
-
-def configure(conf):
- conf.env.CXX = 'clang++'
- conf.load('compiler_cxx')
-
- conf.env.append_value('DEFINES', ['__STDC_CONSTANT_MACROS',
- '__STDC_LIMIT_MACROS'])
-
- conf.check_cfg(msg='Checking for llvm config',
- path='llvm-config',
- package='',
- args='--cxxflags --ldflags --libs --system-libs',
- uselib_store='LLVM')
-
- clang_libs = ['clang',
- 'clangARCMigrate',
- 'clangAST',
- 'clangASTMatchers',
- 'clangAnalysis',
- 'clangApplyReplacements',
- 'clangBasic',
- 'clangCodeGen',
- 'clangDriver',
- 'clangDynamicASTMatchers',
- 'clangEdit',
- 'clangFormat',
- 'clangFrontend',
- 'clangFrontendTool',
- 'clangIndex',
- 'clangLex',
- 'clangParse',
- 'clangQuery',
- 'clangRename',
- 'clangRewrite',
- 'clangRewriteFrontend',
- 'clangSema',
- 'clangSerialization',
- 'clangStaticAnalyzerCheckers',
- 'clangStaticAnalyzerCore',
- 'clangStaticAnalyzerFrontend',
- 'clangTooling',
- 'clangToolingCore']
-
- conf.check_cxx(msg='Checking for clang++',
- uselib_store='CLANG',
- use=['LLVM'],
- lib=clang_libs)
-
-def build(bld):
- checkers = []
-
- if bld.options.checker == 'all':
- checkers = bld.path.ant_glob('*.cpp')
- else:
- checkers = [ bld.path.make_node(bld.options.checker) ]
-
- for checker in checkers:
- source = [ checker ]
- target = checker.change_ext('.dylib')
- bld.shlib(source=source,
- target=target,
- use=['CLANG', 'LLVM'],
- cppflags=['-fno-rtti', '-std=c++11', '-fPIC'])
-
-# vim:filetype=python
diff --git a/docs/Makefile b/docs/Makefile
index 2852d7aa6d..002375c331 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1,16 +1,5 @@
-# Copyright 2025 Core Devices LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# SPDX-FileCopyrightText: 2025 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
# Minimal makefile for Sphinx documentation
#
diff --git a/docs/conf.py b/docs/conf.py
index 189d7026c1..d68b29fccf 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,16 +1,5 @@
-# Copyright 2025 Core Devices LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
+# SPDX-FileCopyrightText: 2025 Core Devices LLC
+# SPDX-License-Identifier: Apache-2.0
# Configuration file for the Sphinx documentation builder.
#
diff --git a/docs/development/building_fw.md b/docs/development/building_fw.md
new file mode 100644
index 0000000000..125eb7128c
--- /dev/null
+++ b/docs/development/building_fw.md
@@ -0,0 +1,49 @@
+# Building firmware
+
+Before building, make sure you've configured {doc}`./waf <../development/options>`. Then, run the following:
+
+```shell
+./waf build
+```
+
+## Loading firmware with a firmware development kit
+
+Before attempting to flash, check the documentation for each {doc}`board <../boards/index>` on how to prepare and connect your watch for programming.
+
+You can flash the built firmware by running:
+
+```shell
+./pbl flash
+```
+
+In some cases, you may have to specify the `--tty $SERIAL_ADAPTER` option where `$SERIAL_ADAPTER` is the path for your serial adapter, e.g. `/dev/ttyACM0`, `/dev/tty.usbmodem1102`, etc.
+
+If flashing for the first time, you will also need to flash resources.
+Some boards support direct resource programming by passing the `--resources` option.
+The alternative is to flash while the firmware is running via the serial port using:
+
+```shell
+./pbl image_resources --tty $SERIAL_ADAPTER
+```
+
+When both firmware and resources are flashed, you should observe the watch booting into the main application.
+You can also see the logs by opening the console:
+
+```shell
+./pbl console --tty $SERIAL_ADAPTER
+```
+
+Try sending `help` to get a list of available console commands.
+
+## Loading firmware via Bluetooth
+
+If you don't have a firmware development kit, you may bundle a `.pbz` file for sideloading
+onto your sealed watch:
+
+```shell
+./waf bundle
+```
+
+The resulting `.pbz` file will be located in the `build/` directory. Transfer this file
+to the device paired to your watch, then, in the Pebble app, enable `Settings -> Show debug options`.
+Go back to the Devices tab, tap your watch, then `Firmware Update Debug -> Sideload FW`, and select the `.pbz` file.
diff --git a/docs/development/getting_started.md b/docs/development/getting_started.md
new file mode 100644
index 0000000000..071b5430b0
--- /dev/null
+++ b/docs/development/getting_started.md
@@ -0,0 +1,144 @@
+# Prerequisites
+
+Follow this guide to:
+
+- Set up a command-line PebbleOS development environment
+- Get the source code
+
+## PebbleOS SDK
+
+Install the [PebbleOS SDK](https://github.com/coredevices/PebbleOS-SDK), which
+bundles the ARM GNU toolchain, Pebble QEMU, and other tools:
+
+```shell
+curl -LsSf https://github.com/coredevices/PebbleOS-SDK/releases/latest/download/pebbleos-sdk-installer.sh | sh
+```
+
+## System-level dependencies
+
+A series of system-level dependencies are required.
+Follow the next steps to install them.
+
+:::::{tab-set}
+:sync-group: os
+
+::::{tab-item} Ubuntu 24.04 LTS
+:sync: ubuntu
+
+1. Update first:
+
+```shell
+sudo apt update
+```
+
+2. Install required dependencies
+
+```shell
+sudo apt install \
+ bison \
+ clang \
+ flex \
+ gcc \
+ gcc-multilib \
+ gettext \
+ git \
+ gperf \
+ libfreetype6-dev \
+ libglib2.0-dev \
+ libgtk-3-dev \
+ libncurses-dev \
+ librsvg2-bin \
+ make \
+ openocd \
+ python3-dev \
+ python3-venv
+```
+
+::::
+
+::::{tab-item} Fedora 44
+
+1. Upgrade first:
+
+```shell
+sudo dnf upgrade --refresh
+```
+
+2. Install required dependencies
+
+```shell
+sudo dnf install \
+ clang \
+ dash \
+ freetype-devel \
+ gcc \
+ glib2-devel \
+ gtk3-devel \
+ librsvg2-tools \
+ nodejs \
+ python-devel
+```
+
+::::
+
+::::{tab-item} macOS
+
+1. Install [brew](https://brew.sh/).
+
+2. Install dependencies:
+
+```shell
+brew install librsvg python openocd
+```
+
+3. Link `brew` Python:
+
+```shell
+brew link python@3
+```
+
+::::
+
+:::::
+
+## Get the source code
+
+You can clone the PebbleOS repository by running:
+
+```shell
+git clone --recurse-submodules https://github.com/coredevices/pebbleos
+```
+
+Once cloned, enter the `pebbleos` directory before continuing:
+
+```shell
+cd pebbleos
+```
+
+## Python dependencies
+
+A series of additional Python dependencies are also required.
+Follow the next steps to install them in a [Python virtual environment](https://docs.python.org/3/library/venv.html).
+
+1. Create a new virtual environment:
+
+```shell
+python3 -m venv .venv
+```
+
+2. Activate the virtual environment:
+
+```shell
+source .venv/bin/activate
+```
+
+```{tip}
+Remember to activate the virtual environment before every time you start working!
+```
+
+3. Install dependencies
+
+```shell
+pip install -r requirements.txt
+```
+
diff --git a/docs/development/moddable.md b/docs/development/moddable.md
new file mode 100644
index 0000000000..7ae5dc0712
--- /dev/null
+++ b/docs/development/moddable.md
@@ -0,0 +1,26 @@
+# Moddable JS Engine
+
+PebbleOS supports the [Moddable SDK](https://github.com/pebble-dev/moddable)'s XS JavaScript engine.
+The Moddable integration provides a lightweight sandbox for runningJavaScript applications and watchfaces on Pebble hardware.
+
+## Building with Moddable
+
+Moddable is enabled by default on platforms whose board defconfig sets
+`CONFIG_MODDABLE_XS=y`. You can override this at configure time by
+passing `-DCONFIG_MODDABLE_XS=y` or `-DCONFIG_MODDABLE_XS=n` to
+`./waf configure`. PRF (recovery) builds always disable the engine.
+
+## Installable applications
+
+The JavaScript is stored in a resource. A small native C application bootstraps JavaScript execution by calling `moddable_createMachine`.
+
+The JavaScript itself is a Moddable SDK **mod**, which is a precompiled collection of modules.
+The modules are compiled using the `mcrun` tool in the Moddable SDK. See Moddable's [Pebble Examples repository](https://github.com/moddable-OpenSource/pebble-examples) for further details.
+The Pebble resource containing the precompiled mod is currently loaded into RAM for execution; eventually, it should be executed directly from flash (this is what the Moddable SDK does on most platforms).
+
+## Sandbox
+
+The JavaScript in installable applications runs inside a lightweight sandbox, which can limit access to certain JavaScript global variables and modules.
+
+Installable applications can be either a normal application or a watchface.
+The sandbox prevents watchfaces from subscribing to the Pebble hardware buttons (which is slightly redundant since PebbleOS also blocks them — but PebbleOS blocks them silently, whereas the sandbox throws an exception, which is more clear to developers).
diff --git a/docs/development/options.md b/docs/development/options.md
index e08734faa4..4da1191747 100644
--- a/docs/development/options.md
+++ b/docs/development/options.md
@@ -1,34 +1,82 @@
# Configuration Options
-When configuring the build (`./waf configure ...`) there are several options you can enable or tune.
+When configuring the build (`./pbl configure ...`) there are several options you can enable or tune.
Below you will find a list of the most relevant ones.
+## Choosing your target
+
+There are a number of target boards to choose from when building PebbleOS. You can do so by
+using the (`--board`) flag followed by:
+
+:`asterix`: (Core Devices) Pebble 2 Duo
+:`obelix@bb2`, `obelix@dvt`, `obelix@pvt`: (Core Devices) Pebble Time 2
+:`getafix@evt`, `getafix@dvt`, `getafix@dvt2`: (Core Devices) Pebble Round 2
+:`qemu_emery`, `qemu_flint`, `qemu_gabbro`: dedicated QEMU targets (see {doc}`qemu`)
+
+Keep in mind that some targets may not currently compile as-is.
+
+## Variant
+
+:`--variant`:
+ Build variant, `normal` (main firmware) or `prf` (recovery firmware).
+
+## Release build
+
+:`-DCONFIG_RELEASE=y`:
+ Build a release-mode firmware. Strips debug aids, enables shipping
+ defaults (e.g. Memfault crash reporting), and reduces battery usage
+ compared to a debug build. Pass this to `./waf configure`.
+
## Main features
-:`--nojs`:
- Disable Javascript support
+:`-DCONFIG_MODDABLE_XS=y` / `-DCONFIG_MODDABLE_XS=n`:
+ Force the Moddable SDK's XS JavaScript engine on or off, overriding
+ the board defconfig. Pass to `./waf configure`. See {doc}`moddable`.
+ PRF (recovery) builds always disable the engine regardless of this
+ value.
+
+## Manufacturing
+
+:`-DCONFIG_MFG=y`:
+ Enable manufacturing-only functionality in the PRF build.
## Debugging
-:`--nowatchdog`:
+:`-DCONFIG_NO_WATCHDOG=y`:
Disable watchdog
-:`--nostop`:
- Disable STOP mode (STM32 specific)
+:`-DCONFIG_NOSTOP=y`:
+ Disable STOP mode
-:`--nosleep`:
- Disable sleep mode (STM32 specific)
+:`-DCONFIG_NOSLEEP=y`:
+ Disable sleep mode
## Flashing
-:`--openocd-jtag`:
- Choose alternative flash/debug probe when using OpenOCD runner.
+The `flash`, `run` and `debug` commands talk to a connected device through a
+*runner*. Each board declares its supported runners in its board manifest
+(e.g. `boards//.yml`) and the first one is used by default. For
+the OpenOCD runner, the probe and target configuration lives in the board's
+`support/openocd.cfg`.
+
+:`--runner`:
+ Override the board's default runner for `flash`/`run`/`debug`.
+
+:`--tty`:
+ Serial port used by the `sftool` runner.
+
+:`--resources`:
+ Also flash system resources alongside the firmware (`sftool` runner).
## Logging
-:`--log-level`:
- Default log level.
+:`-DCONFIG_DEFAULT_LOG_LEVEL_=y`:
+ Default log level, where `` is one of `ERROR`, `WARNING`,
+ `INFO`, `DEBUG` (default) or `DEBUG_VERBOSE`.
-:`--nohash`:
+:`-DCONFIG_LOG_HASHED=n`:
Disable log messages hashing.
This will increase ROM usage, but will not require a dictionary file to decode logs.
+
+These and many more options can also be browsed and changed interactively with
+`./waf menuconfig` after configuring.
diff --git a/docs/development/prf.md b/docs/development/prf.md
deleted file mode 100644
index c4fac18cd6..0000000000
--- a/docs/development/prf.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# PRF
-
-PRF (Pebble Recovery Firmware) is a special firmware image available for recovery purposes.
-It allows connecting from a phone to, for example, flash a new firmware image even if the main firmware is broken or unavailable.
-
-## Building
-
-Once a project is configured, PRF image can be built by running:
-
-```shell
-./waf build_prf
-```
-
-## Flashing
-
-The PRF image can be flashed directly into the application area by running:
-
-```shell
-./waf flash_prf
-```
-
-This is useful when developing PRF features because the watch will boot directly to PRF.
-To flash it to the external flash, so it can be used regularly, run:
-
-```shell
-./waf image_recovery
-```
-
-Append `--tty` option if needed.
-In such case, PRF will need to be copied to the main flash to run.
-This can be done by pressing {kbd}`BACK` + {kbd}`UP` + {kbd}`MIDDLE` when
-booting, or holding {kbd}`BACK` for 7-10s while in the main application.
-
-## Console
-
-You can interact with PRF console by running:
-
-```shell
-./waf console_prf
-```
diff --git a/docs/development/qemu.md b/docs/development/qemu.md
index 8ef9c85a24..ff40f28cf7 100644
--- a/docs/development/qemu.md
+++ b/docs/development/qemu.md
@@ -1,100 +1,38 @@
# QEMU
```{important}
-QEMU is only available for STM32 targets
+Some platforms have dedicated QEMU board targets: `qemu_emery`, `qemu_flint`,
+and `qemu_gabbro`.
```
## Getting QEMU
-The same QEMU binary found in the SDK can be used to build and develop the firmware.
-Below you can also find a detailed guide on how to build it from source if you need to do so (e.g. on Apple Silicon).
-
-### Building from source
-
-1. Install OS-level pre-requisites:
-
-:::::{tab-set}
-:sync-group: os
-
-::::{tab-item} Ubuntu 24.04 LTS
-:sync: ubuntu
-
-```shell
-sudo apt install autoconf libglib2.0-dev libpixman-1-dev
-```
-
-::::
-
-::::{tab-item} macOS
-:sync: macos
-
-```shell
-brew install autoconf glib pixman
-```
-
-::::
-:::::
-
-2. Install `pyenv` following [this guide](https://github.com/pyenv/pyenv?tab=readme-ov-file#installation) (steps A-D).
-3. Install Python 2.7:
-
-```shell
-pyenv install 2.7
-```
-
-4. Activate Python 2.7 on the current shell:
-
-```shell
-pyenv local 2.7
-```
-
-5. Clone QEMU
-
-```shell
-git clone --recurse-submodules https://github.com/pebble-dev/qemu
-cd qemu
-```
-
-6. Configure QEMU:
-
-```shell
-./configure \
- --disable-werror \
- --enable-debug \
- --target-list="arm-softmmu" \
- --extra-cflags=-DSTM32_UART_NO_BAUD_DELAY
-```
-
-7. Build QEMU:
-
-```shell
-make
-```
-
-8. Make sure to make it available on your `PATH`:
-
-```shell
-export PATH=$PWD/arm-softmmu:$PATH
-```
+The QEMU binary ships with the [PebbleOS SDK](https://github.com/coredevices/PebbleOS-SDK).
## Build
The steps here are similar that of real hardware:
```shell
-./waf configure --board=$BOARD --qemu
-./waf build
-./waf qemu_image_spi
+./pbl configure --board=$BOARD
+./pbl build
```
-where `$BOARD` is any STM32 based board.
+where `$BOARD` is one of the dedicated QEMU boards (`qemu_emery`,
+`qemu_flint`, `qemu_gabbro`).
## Run
You can launch QEMU with the built image using:
```shell
-./waf qemu
+./pbl qemu
+```
+
+The flash image is rebuilt by default on every launch. To keep the existing flash image (e.g. to preserve stored apps), pass `--keep-flash-image`:
+
+```shell
+./pbl qemu --keep-flash-image
```
## Console
@@ -102,7 +40,7 @@ You can launch QEMU with the built image using:
You can launch a console using:
```shell
-./waf qemu_console
+./pbl console
```
## Debug
@@ -110,5 +48,5 @@ You can launch a console using:
You can debug with GDB using:
```shell
-./waf qemu_gdb
+./pbl debug
```
diff --git a/docs/getting_started.md b/docs/getting_started.md
deleted file mode 100644
index e39d6f401e..0000000000
--- a/docs/getting_started.md
+++ /dev/null
@@ -1,179 +0,0 @@
-# 🚀 Getting Started
-
-Follow this guide to:
-
-- Set up a command-line PebbleOS development environment
-- Get the source code
-- Build, flash, and run PebbleOS on a watch with programming port access
-
-## Pre-requisites
-
-First download the Arm GNU toolchain `arm-none-eabi` 14.2.Rel1 from [here](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads).
-Make sure to make it available on your path `PATH` and then check GCC version is reported correctly:
-
-```shell
-$ arm-none-eabi-gcc --version
-arm-none-eabi-gcc (Arm GNU Toolchain 14.2.Rel1 (Build arm-14.52)) 14.2.1 20241119
-Copyright (C) 2024 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-```
-
-A series of system-level dependencies are required.
-Follow the next steps to install them.
-
-:::::{tab-set}
-:sync-group: os
-
-::::{tab-item} Ubuntu 24.04 LTS
-:sync: ubuntu
-
-1. Update package list:
-
-```shell
-sudo apt update
-```
-
-2. Install required dependencies
-
-```shell
-sudo apt install clang gcc gcc-multilib git gettext python3-dev python3-venv openocd
-```
-
-::::
-
-::::{tab-item} macOS
-:sync: macos
-
-1. Install [brew](https://brew.sh/).
-
-2. Install dependencies:
-
-```shell
-brew install python openocd
-```
-
-3. Link `brew` Python:
-
-```shell
-brew link python@3
-```
-
-::::
-
-:::::
-
-If building with Javascript support enabled (default), install Emscripten:
-
-:::::{tab-set}
-:sync-group: os
-
-::::{tab-item} Ubuntu 24.04 LTS
-:sync: ubuntu
-
-1. Install Emscripten SDK as detailed [here](https://emscripten.org/docs/getting_started/downloads.html).
- Pick version `4.0.7` instead of `latest` when running `./emsdk install` or `./emsdk activate`.
- To conveniently access Emscripten SDK tools, the activate command will offer some suggestions.
- It is recommended to follow them.
-::::
-
-::::{tab-item} macOS
-:sync: macos
-
-1. Install Emscripten using `brew`:
-
-```shell
-brew install emscripten
-```
-
-Note that `brew` does not seem to offer all Emscripten versions.
-Versions 4.0.x should work fine.
-If `brew` versions cause issues, consider using [Emscripten SDK](https://emscripten.org/docs/getting_started/downloads.html) instead.
-
-::::
-:::::
-
-## Get the source code
-
-You can clone the PebbleOS repository by running:
-
-```shell
-git clone --recurse-submodules https://github.com/coredevices/pebbleos
-```
-
-Once cloned, enter the `pebbleos` directory before continuing:
-
-```shell
-cd pebbleos
-```
-
-## Python dependencies
-
-A series of additional Python dependencies are also required.
-Follow the next steps to install them in a [Python virtual environment](https://docs.python.org/3/library/venv.html).
-
-1. Create a new virtual environment:
-
-```shell
-python3 -m venv .venv
-```
-
-2. Activate the virtual environment:
-
-```shell
-source .venv/bin/activate
-```
-
-```{tip}
-Remember to activate the virtual environment before every time you start working!
-```
-
-3. Install dependencies
-
-```shell
-pip install -r requirements.txt
-```
-
-## Building
-
-1. Configure the project:
-
-```shell
-./waf configure --board $BOARD
-```
-
-where `$BOARD` is any of the supported boards, e.g. `asterix` (Core 2 Duo), `snowy_bb2` (Pebble Time), ...
-
-2. Build:
-
-```shell
-./waf build
-```
-
-## Flashing
-
-Before attempting to flash, check the documentation for each {doc}`board ` on how to prepare and connect your watch for programming.
-
-You can flash the built firmware (including pre-compiled bootloader) by running:
-
-```shell
-./waf flash
-```
-
-If flashing for the first time, your watch will reboot into PRF or a _sad watch_ state if PRF is missing, indicating that resources need to be flashed:
-
-```shell
-./waf image_resources --tty $SERIAL_ADAPTER
-```
-
-where `$SERIAL_ADAPTER` is the path for your serial adapter, e.g. `/dev/ttyACM0`, `/dev/tty.usbmodem1102`, etc.
-If using a board with a built-in FTDI programmer, the `--tty` argument can be removed.
-
-At this point you should observe the watch booting into the main application.
-You can also see the logs by opening the console:
-
-```shell
-./waf console --tty $SERIAL_ADAPTER
-```
-
-Try sending `help` to get a list of available console commands.
diff --git a/docs/index.md b/docs/index.md
index 924db30071..a4cd2bd47b 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -28,7 +28,7 @@ PebbleOS is a lightweight, power-efficient operating system originally developed
It supports custom watchfaces and apps using C and JavaScript.
Optimized for memory-in-pixel (MIP) displays and long battery life, it features Bluetooth sync, a timeline interface, and a strong developer ecosystem through an open SDK.
-```{button-ref} getting_started
+```{button-ref} development/getting_started
:ref-type: doc
:color: primary
:class: sd-rounded-pill float-left
@@ -49,19 +49,17 @@ Get started
:gutter: 3
:::{grid-item-card}
-:link: getting_started
+:link: development/getting_started
:link-type: doc
-:class-header: bg-light
-🚀 Getting Started
+🚀 Prerequisites
^^^
-Learn how to build PebbleOS from source!
+Set up your environment to build PebbleOS from source!
:::
:::{grid-item-card}
:link: https://github.com/coredevices/pebbleos
-:class-header: bg-light
⌚ Browse the sources
^^^
@@ -72,7 +70,6 @@ Browse the PebbleOS sources!
:::{grid-item-card}
:link: reference/external
:link-type: doc
-:class-header: bg-light
📖 Reference
^^^
@@ -82,17 +79,15 @@ Learn more about PebbleOS: podcasts, developer documents and more!
::::
-```{toctree}
-:hidden:
-getting_started.md
-```
```{toctree}
:hidden:
:caption: 🛠️ Development
+development/getting_started.md
development/options.md
-development/prf.md
+development/building_fw.md
development/qemu.md
+development/moddable.md
```
```{toctree}
diff --git a/docs/legacy/porting-bluetooth.md b/docs/legacy/porting-bluetooth.md
index 4f59f92c42..1a953587f5 100644
--- a/docs/legacy/porting-bluetooth.md
+++ b/docs/legacy/porting-bluetooth.md
@@ -163,7 +163,6 @@ Implemented both by classic and BLE. Used for factory test. Probably
needs to exist for production test in the future, but
* bt_driver_test_selftest -- implemented
-* bt_driver_test_mfi_chip_selftest -- not implemented on LE-only
* hc_endpoint_logging_set_level -- not implemented on TI
* hc_endpoint_logging_get_level -- not implemented on TI
* bt_driver_core_dump -- not implemented on TI
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000000..f0847516db
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1769318308,
+ "narHash": "sha256-Mjx6p96Pkefks3+aA+72lu1xVehb6mv2yTUUqmSet6Q=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "1cd347bf3355fce6c64ab37d3967b4a2cb4b878c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-25.11",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000000..872fed6f87
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,154 @@
+{
+ description = "Development environment for PebbleOS";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
+ };
+
+ outputs =
+ { self, nixpkgs }:
+ let
+ sdkVersion = "0.1.6";
+ sdkBundles = {
+ aarch64-darwin = {
+ osArch = "darwin-aarch64";
+ sha256 = "d389ecf084c168f6b18edfec972be8790521e81750d6fbfc352275206839bec2";
+ };
+ aarch64-linux = {
+ osArch = "linux-aarch64";
+ sha256 = "3c5f87380d7498ccaaa4ade45c105e97fa39aa71dec6b615d924e490978acb60";
+ };
+ x86_64-linux = {
+ osArch = "linux-x86_64";
+ sha256 = "a93d33f479154f96351590709af57ef79465ebee07c06f5e264a086eb1ca55b6";
+ };
+ };
+ forSupportedSystems = nixpkgs.lib.genAttrs (builtins.attrNames sdkBundles);
+ in
+ {
+ devShells = forSupportedSystems (
+ system:
+ let
+ pkgs = import nixpkgs { inherit system; };
+ bundle = sdkBundles.${system};
+ pebbleos-sdk = pkgs.stdenv.mkDerivation {
+ pname = "pebbleos-sdk";
+ version = sdkVersion;
+ src = pkgs.fetchurl {
+ url = "https://github.com/coredevices/PebbleOS-SDK/releases/download/v${sdkVersion}/pebbleos-sdk-${sdkVersion}-${bundle.osArch}.tar.gz";
+ sha256 = bundle.sha256;
+ };
+
+ nativeBuildInputs = pkgs.lib.optionals pkgs.stdenv.isLinux [
+ pkgs.autoPatchelfHook
+ ];
+ buildInputs = pkgs.lib.optionals pkgs.stdenv.isLinux (with pkgs; [
+ # arm-none-eabi host binaries (matches nixpkgs gcc-arm-embedded)
+ ncurses6
+ ncurses5 # aarch64-linux toolchain gdb links ABI-5 ncurses/tinfo
+ libxcrypt-legacy
+ xz
+ zstd
+ # qemu-pebble host binaries
+ glib
+ pixman
+ zlib
+ stdenv.cc.cc.lib
+ SDL2
+ libpng
+ alsa-lib
+ libpulseaudio
+ # sftool host binary
+ systemdLibs
+ ]);
+
+ dontConfigure = true;
+ dontBuild = true;
+ dontStrip = true;
+
+ installPhase = ''
+ runHook preInstall
+ bash install.sh --prefix "$out" --defaults --force
+ # gdb-py variants need a Python 3.8 not packaged in nixpkgs.
+ rm -f "$out"/arm-none-eabi/bin/arm-none-eabi-gdb-py \
+ "$out"/arm-none-eabi/bin/arm-none-eabi-gdb-add-index-py
+ # Surface every SDK binary under $out/bin so PATH inclusion picks them up.
+ mkdir -p "$out/bin"
+ for d in arm-none-eabi/bin qemu/bin sftool; do
+ [ -d "$out/$d" ] || continue
+ for f in "$out/$d"/*; do
+ [ -f "$f" ] && [ -x "$f" ] && ln -sf "$f" "$out/bin/$(basename "$f")"
+ done
+ done
+ runHook postInstall
+ '';
+ };
+ in
+ {
+ default = pkgs.mkShellNoCC {
+ hardeningDisable = [ "fortify" ]; # waf expects unoptimized builds
+ nativeBuildInputs = with pkgs; [
+ pkg-config
+ ];
+ buildInputs = with pkgs; [
+ pebbleos-sdk
+ gettext
+ git
+ librsvg
+ nodejs
+ openocd
+ protobuf
+ python313
+ ] ++ lib.optionals stdenv.isLinux [
+ # multilib clang (i686 sysroot for -m32 test builds) is x86-only
+ (if stdenv.hostPlatform.isx86_64 then clang_multi else clang)
+ gcc
+ # Required for Moddable build
+ dash
+ glib
+ gtk3
+ ];
+ shellHook = ''
+ # Ensure that apple command line tools are installed on macOS
+ ${pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
+ # Verify Apple Command Line Tools are installed
+ if ! /usr/bin/xcrun --find clang &> /dev/null; then
+ echo "❌ Error: Apple Command Line Tools not found!"
+ echo " Please install with: xcode-select --install"
+ exit 1
+ fi
+ echo "✓ Apple CLT found: $(/usr/bin/clang --version | head -1)"
+
+ # Moddable's mac/tools.mk generates launcher scripts via
+ # `echo '...\n...'` and depends on `\n` being expanded. macOS
+ # /bin/sh (bash 3.2, XSI-compliant in POSIX mode) does this,
+ # but Nix's bash 5.x — picked up as `sh` via PATH — does not,
+ # producing scripts with a malformed shebang. Pin make's SHELL
+ # to /bin/sh so the recipe runs under the expected shell.
+ export MAKEFLAGS="SHELL=/bin/sh"
+ ''}
+ # Disable pyenv to avoid conflicts
+ export PYENV_VERSION=system
+ unset PYENV_ROOT
+
+ # Prepare the python venv
+ export VENV_DIR=".venv"
+ if [ ! -d "$VENV_DIR" ]; then
+ echo "Creating virtual environment..."
+ python -m venv "$VENV_DIR"
+ source "$VENV_DIR/bin/activate"
+ if [ -f "requirements.txt" ]; then
+ echo "Installing Python dependencies..."
+ pip install -r requirements.txt
+ fi
+ else
+ source "$VENV_DIR/bin/activate"
+ fi
+
+ echo "Python virtual environment activated."
+ '';
+ };
+ }
+ );
+ };
+}
diff --git a/include/bluetooth/analytics.h b/include/bluetooth/analytics.h
new file mode 100644
index 0000000000..6bcbf32e2c
--- /dev/null
+++ b/include/bluetooth/analytics.h
@@ -0,0 +1,35 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+#include "util/attributes.h"
+
+#include
+#include
+
+#define NUM_LE_CHANNELS 37
+
+typedef struct PACKED LEChannelMap {
+ uint8_t byte0;
+ uint8_t byte1;
+ uint8_t byte2;
+ uint8_t byte3;
+ uint8_t byte4;
+} LEChannelMap;
+
+bool bt_driver_analytics_get_connection_quality(const BTDeviceInternal *address,
+ uint8_t *link_quality_out, int8_t *rssi_out);
+
+bool bt_driver_analytics_collect_ble_parameters(const BTDeviceInternal *addr,
+ LEChannelMap *le_chan_map_res);
+
+void bt_driver_analytics_external_collect_chip_specific_parameters(void);
+
+void bt_driver_analytics_external_collect_bt_chip_heartbeat(void);
+
+//! Returns true iff there are connection event stats to report
+bool bt_driver_analytics_get_conn_event_stats(SlaveConnEventStats *stats);
diff --git a/include/bluetooth/bas.h b/include/bluetooth/bas.h
new file mode 100644
index 0000000000..1746402a2e
--- /dev/null
+++ b/include/bluetooth/bas.h
@@ -0,0 +1,9 @@
+/* SPDX-FileCopyrightText: 2025 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Sends the battery measurement to all subscribed & connected devices.
+void bt_driver_bas_handle_update(uint8_t percent);
diff --git a/src/include/bluetooth/bluetooth_types.h b/include/bluetooth/bluetooth_types.h
similarity index 94%
rename from src/include/bluetooth/bluetooth_types.h
rename to include/bluetooth/bluetooth_types.h
index 82a880c4e3..c3dc8e800b 100644
--- a/src/include/bluetooth/bluetooth_types.h
+++ b/include/bluetooth/bluetooth_types.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/include/bluetooth/bonding_sync.h b/include/bluetooth/bonding_sync.h
similarity index 76%
rename from src/include/bluetooth/bonding_sync.h
rename to include/bluetooth/bonding_sync.h
index 19e2e089e1..9cb54802c3 100644
--- a/src/include/bluetooth/bonding_sync.h
+++ b/include/bluetooth/bonding_sync.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/bluetooth/bt_driver_advert.h b/include/bluetooth/bt_driver_advert.h
new file mode 100644
index 0000000000..50fc2d46f1
--- /dev/null
+++ b/include/bluetooth/bt_driver_advert.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+#include
+
+bool bt_driver_advert_advertising_enable(uint32_t min_interval_ms, uint32_t max_interval_ms);
+
+void bt_driver_advert_advertising_disable(void);
+
+bool bt_driver_advert_client_get_tx_power(int8_t *tx_power);
+
+bool bt_driver_advert_set_advertising_data(const BLEAdData *ad_data);
diff --git a/include/bluetooth/bt_driver_comm.h b/include/bluetooth/bt_driver_comm.h
new file mode 100644
index 0000000000..eaace7d52d
--- /dev/null
+++ b/include/bluetooth/bt_driver_comm.h
@@ -0,0 +1,18 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef struct CommSession CommSession;
+
+//! Figures out the optimal thread to execute `bt_driver_run_send_next_job` on
+//! and schedules a job to do so
+bool bt_driver_comm_schedule_send_next_job(CommSession *session);
+
+//! @return The PebbleTask that is used with bt_driver_comm_schedule_send_next_job() to perform
+//! the sending of pending data.
+bool bt_driver_comm_is_current_task_send_next_task(void);
+
+extern void bt_driver_run_send_next_job(CommSession *session, bool is_callback);
diff --git a/include/bluetooth/conn_event_stats.h b/include/bluetooth/conn_event_stats.h
new file mode 100644
index 0000000000..b967ec422a
--- /dev/null
+++ b/include/bluetooth/conn_event_stats.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef struct SlaveConnEventStats {
+ uint32_t num_conn_events; // BLE Connection Events that have elapsed
+ uint32_t num_conn_events_skipped; // The number of events the controller never tried to listen for
+ uint32_t num_sync_errors; // Events where slave did not see a packet from Master
+ uint32_t num_type_errors;
+ uint32_t num_len_errors;
+ uint32_t num_crc_errors; // Events that ended due to a packet CRC error
+ uint32_t num_mic_errors; // Events that ended due to a packet MIC error
+} SlaveConnEventStats;
diff --git a/include/bluetooth/dis.h b/include/bluetooth/dis.h
new file mode 100644
index 0000000000..45e37c9b1d
--- /dev/null
+++ b/include/bluetooth/dis.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "util/attributes.h"
+
+// The reason the headers that define these lengths aren't included is because this header
+// is included by the various number of bt_driver implementations. They don't know what "mfg"
+// is, etc.
+// NOTE: These sizes are asserted in a .c file to be in sync with the FW
+#define MODEL_NUMBER_LEN (10) // MFG_HW_VERSION_SIZE + 1
+#define MANUFACTURER_LEN (18) // sizeof("Pebble Technology")
+#define SERIAL_NUMBER_LEN (13) // MFG_SERIAL_NUMBER_SIZE + 1
+#define FW_REVISION_LEN (32) // FW_METADATA_VERSION_TAG_BYTES)
+#define SW_REVISION_LEN (8) // Fmt: xx.xxx\0
+
+typedef struct PACKED DisInfo {
+ char model_number[MODEL_NUMBER_LEN];
+ char manufacturer[MANUFACTURER_LEN];
+ char serial_number[SERIAL_NUMBER_LEN];
+ char fw_revision[FW_REVISION_LEN];
+ char sw_revision[SW_REVISION_LEN];
+} DisInfo;
diff --git a/src/include/bluetooth/gap_le_connect.h b/include/bluetooth/gap_le_connect.h
similarity index 86%
rename from src/include/bluetooth/gap_le_connect.h
rename to include/bluetooth/gap_le_connect.h
index e101f39b8f..5f470e11d1 100644
--- a/src/include/bluetooth/gap_le_connect.h
+++ b/include/bluetooth/gap_le_connect.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include
diff --git a/include/bluetooth/gap_le_device_name.h b/include/bluetooth/gap_le_device_name.h
new file mode 100644
index 0000000000..da356de950
--- /dev/null
+++ b/include/bluetooth/gap_le_device_name.h
@@ -0,0 +1,14 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "comm/ble/gap_le_connection.h"
+
+//! Bluetooth LE GAP Device name APIs
+void bt_driver_gap_le_device_name_request_all(void);
+void bt_driver_gap_le_device_name_request(const BTDeviceInternal *address);
+
+//! The caller is expected to have implemented:
+//! ctx will be kernel_free()'d
+void bt_driver_store_device_name_kernelbg_cb(void *ctx);
diff --git a/include/bluetooth/gap_le_scan.h b/include/bluetooth/gap_le_scan.h
new file mode 100644
index 0000000000..f40e22824a
--- /dev/null
+++ b/include/bluetooth/gap_le_scan.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "comm/ble/gap_le_scan.h"
+
+//! Returns true on success, false on failure
+bool bt_driver_start_le_scan(bool active_scan, bool use_white_list_filter, bool filter_dups,
+ uint16_t scan_interval_ms, uint16_t scan_window_ms);
+
+//! Returns true on success, false on failure
+bool bt_driver_stop_le_scan(void);
+
+extern void bt_driver_cb_le_scan_handle_report(const GAPLERawAdReport *data, int length);
diff --git a/src/include/bluetooth/gatt.h b/include/bluetooth/gatt.h
similarity index 87%
rename from src/include/bluetooth/gatt.h
rename to include/bluetooth/gatt.h
index 6ace2d2229..bb0d6fb802 100644
--- a/src/include/bluetooth/gatt.h
+++ b/include/bluetooth/gatt.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -113,7 +100,8 @@ void bt_driver_gatt_acknowledge_indication(uint32_t connection_id, uint32_t tran
// TODO: This will probably need to be changed for the Dialog chip (doesn't have transaction ids)
void bt_driver_gatt_respond_read_subscription(uint32_t transaction_id, uint16_t response_code);
-void bt_driver_gatt_send_changed_indication(uint32_t connection_id, const ATTHandleRange *data);
+void bt_driver_gatt_send_changed_indication(const BTDeviceInternal *device,
+ const ATTHandleRange *data);
BTErrno bt_driver_gatt_write_without_response(GAPLEConnection *connection,
diff --git a/include/bluetooth/gatt_discovery.h b/include/bluetooth/gatt_discovery.h
new file mode 100644
index 0000000000..46a0429966
--- /dev/null
+++ b/include/bluetooth/gatt_discovery.h
@@ -0,0 +1,30 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include
+
+#include
+
+typedef struct GAPLEConnection GAPLEConnection;
+typedef struct GATTService GATTService;
+typedef struct GATTServiceNode GATTServiceNode;
+
+BTErrno bt_driver_gatt_start_discovery_range(
+ const GAPLEConnection *connection, const ATTHandleRange *data);
+BTErrno bt_driver_gatt_stop_discovery(GAPLEConnection *connection);
+
+//! It's possible we are disconnected or the stack gets torn down while in the
+//! middle of a discovery. This routine gets invoked if the connection gets
+//! torn down or goes away so that the implementation can clean up any tracking
+//! it has waiting for a discovery to complete
+void bt_driver_gatt_handle_discovery_abandoned(void);
+
+//! gatt_service_discovery callbacks
+//! cb returns true iff the driver completed, false if a discovery retry was initiated
+extern bool bt_driver_cb_gatt_client_discovery_complete(GAPLEConnection *connection, BTErrno errno);
+extern void bt_driver_cb_gatt_client_discovery_handle_indication(
+ GAPLEConnection *connection, GATTService *service_discovered, BTErrno error);
diff --git a/src/include/bluetooth/gatt_service_types.h b/include/bluetooth/gatt_service_types.h
similarity index 84%
rename from src/include/bluetooth/gatt_service_types.h
rename to include/bluetooth/gatt_service_types.h
index cabc906b60..753105c36c 100644
--- a/src/include/bluetooth/gatt_service_types.h
+++ b/include/bluetooth/gatt_service_types.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/bluetooth/hci_types.h b/include/bluetooth/hci_types.h
new file mode 100644
index 0000000000..b57a6192fb
--- /dev/null
+++ b/include/bluetooth/hci_types.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef enum {
+ HciStatusCode_Success = 0x00,
+ HciStatusCode_UnknownConnectionIdentifier = 0x02,
+ HciStatusCode_VS_Base = 0x50,
+ HciStatusCode_Max = UINT16_MAX
+} HciStatusCode;
+
+#ifndef __clang__
+_Static_assert(sizeof(HciStatusCode) == 2, "packed structs expect the status code to be 2 bytes!");
+#endif
+
+// disconnect reasons are just status codes
+typedef HciStatusCode HciDisconnectReason;
diff --git a/include/bluetooth/hrm_service.h b/include/bluetooth/hrm_service.h
new file mode 100644
index 0000000000..69792ba120
--- /dev/null
+++ b/include/bluetooth/hrm_service.h
@@ -0,0 +1,30 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include
+
+typedef struct {
+ uint16_t bpm;
+ bool is_on_wrist;
+} BleHrmServiceMeasurement;
+
+//! @return True if the BT driver lib supports exposing the GATT HRM service.
+bool bt_driver_is_hrm_service_supported(void);
+
+//! Adds or removes the HRM service from the GATT database, notifying any connected devices
+//! by sending a "Service Changed" indication for the mutated handle range.
+void bt_driver_hrm_service_enable(bool enable);
+
+//! Sends the Heart Rate Measurement to all subscribed & connected devices.
+void bt_driver_hrm_service_handle_measurement(const BleHrmServiceMeasurement *measurement,
+ const BTDeviceInternal *permitted_devices,
+ size_t num_permitted_devices);
+
+//! Called when a connected device (un)subscribes to the GATT HRM service's "Heart Rate Measurement"
+//! characteristic.
+extern void bt_driver_cb_hrm_service_update_subscription(const BTDeviceInternal *device,
+ bool is_subscribed);
diff --git a/include/bluetooth/id.h b/include/bluetooth/id.h
new file mode 100644
index 0000000000..bc9d6e8a81
--- /dev/null
+++ b/include/bluetooth/id.h
@@ -0,0 +1,29 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+void bt_driver_id_set_local_device_name(const char device_name[BT_DEVICE_NAME_BUFFER_SIZE]);
+
+void bt_driver_id_copy_local_identity_address(BTDeviceAddress *addr_out);
+
+//! Configures the local address that the BT driver should use "on-air".
+//! @note This address and the identity address are different things!
+//! @note bt_lock() is held when this call is made.
+//! @param allow_cycling True if the controller is allowed to cycle the address (implies address
+//! pinning is *not* used!)
+//! @param pinned_address The address to use, or NULL for "don't care".
+void bt_driver_set_local_address(bool allow_cycling,
+ const BTDeviceAddress *pinned_address);
+
+//! Copies a human-readable string of freeform info that uniquely identifies the Bluetooth chip.
+//! Used by MFG for part tracking purposes.
+//! @param[out] dest Buffer into which to copy the info.
+//! @param[in] dest_size Size of dest in bytes.
+void bt_driver_id_copy_chip_info_string(char *dest, size_t dest_size);
+
+//! Generates a new private resolvable address using the current IRK (as passed with the
+//! bt_driver_start() call when setting up the stack).
+bool bt_driver_id_generate_private_resolvable_address(BTDeviceAddress *address_out);
diff --git a/include/bluetooth/init.h b/include/bluetooth/init.h
new file mode 100644
index 0000000000..4b21c26d95
--- /dev/null
+++ b/include/bluetooth/init.h
@@ -0,0 +1,38 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+
+#include
+#include
+
+#include
+
+typedef struct PACKED BTDriverConfig {
+ SM128BitKey root_keys[SMRootKeyTypeNum];
+ DisInfo dis_info;
+ BTDeviceAddress identity_addr;
+ bool is_hrm_supported_and_enabled;
+} BTDriverConfig;
+
+//! Function that performs one-time initialization of the BT Driver.
+//! The main FW is expected to call this once at boot.
+void bt_driver_init(void);
+
+//! Starts the Bluetooth stack.
+//! @return True if the stack started successfully.
+bool bt_driver_start(BTDriverConfig *config);
+
+//! Stops the Bluetooth stack.
+//! @return True if the stack stopped successfully.
+void bt_driver_stop(void);
+
+//! Powers down the BT controller if has yet to be used
+void bt_driver_power_down_controller_on_boot(void);
+
+//! Invoked by the BT driver each time the host (re-)synchronizes with the controller.
+//! Consumers can use this to refresh controller state that gets wiped on a host reset
+//! (e.g. advertising data and parameters).
+extern void bt_driver_handle_host_resynced(void);
diff --git a/include/bluetooth/mtu.h b/include/bluetooth/mtu.h
new file mode 100644
index 0000000000..94b90cda84
--- /dev/null
+++ b/include/bluetooth/mtu.h
@@ -0,0 +1,7 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+// See NimBLE BLE_ATT_PREFERRED_MTU setting
+#define ATT_MAX_SUPPORTED_MTU 256
\ No newline at end of file
diff --git a/include/bluetooth/pairability.h b/include/bluetooth/pairability.h
new file mode 100644
index 0000000000..96c65c42c7
--- /dev/null
+++ b/include/bluetooth/pairability.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+void bt_driver_le_pairability_set_enabled(bool enabled);
diff --git a/src/include/bluetooth/pairing_confirm.h b/include/bluetooth/pairing_confirm.h
similarity index 77%
rename from src/include/bluetooth/pairing_confirm.h
rename to include/bluetooth/pairing_confirm.h
index 6db6328beb..0285ce3c6b 100644
--- a/src/include/bluetooth/pairing_confirm.h
+++ b/include/bluetooth/pairing_confirm.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/include/bluetooth/pebble_bt.h b/include/bluetooth/pebble_bt.h
similarity index 80%
rename from src/include/bluetooth/pebble_bt.h
rename to include/bluetooth/pebble_bt.h
index eaca330c2a..4dff3683be 100644
--- a/src/include/bluetooth/pebble_bt.h
+++ b/include/bluetooth/pebble_bt.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/include/bluetooth/pebble_pairing_service.h b/include/bluetooth/pebble_pairing_service.h
similarity index 95%
rename from src/include/bluetooth/pebble_pairing_service.h
rename to include/bluetooth/pebble_pairing_service.h
index 2f5e45127b..b916e565f7 100644
--- a/src/include/bluetooth/pebble_pairing_service.h
+++ b/include/bluetooth/pebble_pairing_service.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/bluetooth/qemu_transport.h b/include/bluetooth/qemu_transport.h
new file mode 100644
index 0000000000..6744edc9ff
--- /dev/null
+++ b/include/bluetooth/qemu_transport.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+//! Called by the QEMU serial driver whenever Pebble Protocol data is received.
+void qemu_transport_handle_received_data(const uint8_t *data, uint32_t length);
+
+//! Called by qemu version of comm_init() to tell ISPP that it is connected
+void qemu_transport_set_connected(bool is_connected);
+void qemu_transport_close_session();
+
+bool qemu_transport_is_connected(void);
diff --git a/src/include/bluetooth/responsiveness.h b/include/bluetooth/responsiveness.h
similarity index 79%
rename from src/include/bluetooth/responsiveness.h
rename to include/bluetooth/responsiveness.h
index ab77cbf879..8f8cdf7b02 100644
--- a/src/include/bluetooth/responsiveness.h
+++ b/include/bluetooth/responsiveness.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/include/bluetooth/sm_types.h b/include/bluetooth/sm_types.h
similarity index 75%
rename from src/include/bluetooth/sm_types.h
rename to include/bluetooth/sm_types.h
index 73ec458e3e..2326b8daf0 100644
--- a/src/include/bluetooth/sm_types.h
+++ b/include/bluetooth/sm_types.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/bluetooth/temp.h b/include/bluetooth/temp.h
new file mode 100644
index 0000000000..b22496367e
--- /dev/null
+++ b/include/bluetooth/temp.h
@@ -0,0 +1,7 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Should be called when a BT Classic disconnection occurs
+void reconnect_android_update_disconnect_time(void);
diff --git a/src/include/logging/binary_logging.h b/include/logging/binary_logging.h
similarity index 91%
rename from src/include/logging/binary_logging.h
rename to include/logging/binary_logging.h
index ffe72a2f1e..815ef0ef07 100644
--- a/src/include/logging/binary_logging.h
+++ b/include/logging/binary_logging.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/include/logging/log_hashing.h b/include/logging/log_hashing.h
similarity index 94%
rename from src/include/logging/log_hashing.h
rename to include/logging/log_hashing.h
index d8d294a7ef..f01573adda 100644
--- a/src/include/logging/log_hashing.h
+++ b/include/logging/log_hashing.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
/************************************************************************************************
* New Logging
@@ -59,6 +46,9 @@
* internally consistent.
* - .log_string
* which is a list of representing the log strings from the source code.
+ * Entries of the form "MODULE::", emitted by PBL_LOG_MODULE_DEFINE /
+ * PBL_LOG_MODULE_DECLARE, are metadata mapping a source file to its log module; they are
+ * never referenced by a token.
*
* Note: this code must be compiled with -Os or the codesize will explode!
*
@@ -87,7 +77,7 @@
#include
#include "util/attributes.h"
-#define NEW_LOG_VERSION "0101"
+#define NEW_LOG_VERSION "0102"
#define LOG_STRINGS_SECTION_ADDRESS 0xC0000000
diff --git a/src/fw/services/common/accel_manager.h b/include/pbl/services/accel_manager.h
similarity index 78%
rename from src/fw/services/common/accel_manager.h
rename to include/pbl/services/accel_manager.h
index bfd35a3da5..6bed0c4e11 100644
--- a/src/fw/services/common/accel_manager.h
+++ b/include/pbl/services/accel_manager.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -24,14 +11,14 @@
#include
-#define ACCEL_LOG_DEBUG(fmt, args...) PBL_LOG_D(LOG_DOMAIN_ACCEL, LOG_LEVEL_DEBUG, fmt, ## args)
-
typedef void (*AccelDataReadyCallback)(void *context);
typedef struct AccelManagerState AccelManagerState;
-#if PLATFORM_ASTERIX || PLATFORM_OBELIX
+#if defined(CONFIG_BOARD_FAMILY_ASTERIX) || defined(CONFIG_BOARD_FAMILY_OBELIX)
static const unsigned int ACCEL_MAX_SAMPLES_PER_UPDATE = 26 * 2; // wake every 2 seconds -- lsm6dso is 26Hz
+#elif defined(CONFIG_BOARD_FAMILY_GETAFIX)
+static const unsigned int ACCEL_MAX_SAMPLES_PER_UPDATE = 26 * 2; // wake every 2 seconds -- FIXME(GETAFIX): review
#else
static const unsigned int ACCEL_MAX_SAMPLES_PER_UPDATE = 25;
#endif
@@ -40,6 +27,10 @@ static const unsigned int ACCEL_MAX_SAMPLES_PER_UPDATE = 25;
void accel_manager_init(void);
void accel_manager_enable(bool on);
+// Enable or disable the kernel's shake subscription used for the motion backlight feature.
+// When disabled, the accelerometer shake detection is only active if apps have subscribed.
+void accel_manager_set_motion_backlight_enabled(bool enabled);
+
// Peek interface
///////////////////////////////////////////////////////////
@@ -83,12 +74,14 @@ bool sys_accel_manager_consume_samples(AccelManagerState *state, uint32_t sample
// Functions for internal use
///////////////////////////////////////////////////////////
-bool accel_manager_run_selftest(void);
-bool gyro_manager_run_selftest(void);
-
// Set whether the accelerometer should be in a sensitive state in order to trigger an accel tap
// event from any small movements
void accel_enable_high_sensitivity(bool high_sensitivity);
+// Update the motion sensitivity based on user preference (0-100%)
+// Only available on Asterix/Obelix platforms
+// 100 = most sensitive, 0 = least sensitive
+void accel_manager_update_sensitivity(uint8_t sensitivity_percent);
+
// lightweight call to determine if the watch is idle
bool accel_is_idle(void);
diff --git a/include/pbl/services/accel_manager_types.h b/include/pbl/services/accel_manager_types.h
new file mode 100644
index 0000000000..30f96c2056
--- /dev/null
+++ b/include/pbl/services/accel_manager_types.h
@@ -0,0 +1,46 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+//! Valid accelerometer sampling rates, in Hz
+typedef enum {
+ //! 10 HZ sampling rate
+ ACCEL_SAMPLING_10HZ = 10,
+ //! 25 HZ sampling rate [Default]
+ ACCEL_SAMPLING_25HZ = 25,
+ //! 50 HZ sampling rate
+ ACCEL_SAMPLING_50HZ = 50,
+ //! 100 HZ sampling rate
+ ACCEL_SAMPLING_100HZ = 100,
+} AccelSamplingRate;
+
+//! A single accelerometer sample for all three axes
+typedef struct __attribute__((__packed__)) {
+ //! acceleration along the x axis
+ int16_t x;
+ //! acceleration along the y axis
+ int16_t y;
+ //! acceleration along the z axis
+ int16_t z;
+} AccelRawData;
+
+//! A single accelerometer sample for all three axes including timestamp and
+//! vibration rumble status.
+typedef struct __attribute__((__packed__)) AccelData {
+ //! acceleration along the x axis
+ int16_t x;
+ //! acceleration along the y axis
+ int16_t y;
+ //! acceleration along the z axis
+ int16_t z;
+
+ //! true if the watch vibrated when this sample was collected
+ bool did_vibrate;
+
+ //! timestamp, in milliseconds
+ uint64_t timestamp;
+} AccelData;
diff --git a/src/fw/services/normal/activity/activity.h b/include/pbl/services/activity/activity.h
similarity index 95%
rename from src/fw/services/normal/activity/activity.h
rename to include/pbl/services/activity/activity.h
index 818461db4b..4efa9d812c 100644
--- a/src/fw/services/normal/activity/activity.h
+++ b/include/pbl/services/activity/activity.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -63,9 +50,20 @@ typedef struct PACKED HeartRatePreferences {
uint8_t zone3_threshold;
} HeartRatePreferences;
+// HRM measurement interval options
+typedef enum {
+ HRMonitoringInterval_10Min = 0,
+ HRMonitoringInterval_30Min,
+ HRMonitoringInterval_1Hour,
+ HRMonitoringInterval_Disabled,
+ HRMonitoringIntervalCount,
+} HRMonitoringInterval;
+
// Activity HRM Settings Struct, for storing to prefs
typedef struct PACKED ActivityHRMSettings {
bool enabled;
+ uint8_t measurement_interval; // HRMonitoringInterval value
+ bool activity_tracking_enabled; // HR tracking during detected activities (walk/run)
} ActivityHRMSettings;
// Default values, taken from http://www.cdc.gov/nchs/fastats/body-measurements.htm
@@ -96,6 +94,8 @@ typedef struct PACKED ActivityHRMSettings {
#define ACTIVITY_HRM_DEFAULT_PREFERENCES { \
.enabled = true, \
+ .measurement_interval = HRMonitoringInterval_10Min, \
+ .activity_tracking_enabled = false, \
}
// We consider values outside of this range to be invalid
@@ -410,6 +410,22 @@ uint8_t activity_prefs_heart_get_zone3_threshold(void);
//! Return true if the HRM is enabled, false if not
bool activity_prefs_heart_rate_is_enabled(void);
+#ifdef CONFIG_HRM
+//! Get the HRM measurement interval setting
+//! @return the current HRMonitoringInterval value
+HRMonitoringInterval activity_prefs_get_hrm_measurement_interval(void);
+
+//! Set the HRM measurement interval
+//! @param interval the desired HRMonitoringInterval value
+void activity_prefs_set_hrm_measurement_interval(HRMonitoringInterval interval);
+
+//! Return true if HR tracking during detected activities (walk/run) is enabled
+bool activity_prefs_hrm_activity_tracking_is_enabled(void);
+
+//! Enable or disable HR tracking during detected activities (walk/run)
+void activity_prefs_set_hrm_activity_tracking_enabled(bool enabled);
+#endif
+
//! Get the current and (optionally) historical values for a given metric. The caller passes
//! in a pointer to an array that will be filled in with the results (current value for today at
//! index 0, yesterday's at index 1, etc.)
diff --git a/src/fw/services/normal/activity/activity_algorithm.h b/include/pbl/services/activity/activity_algorithm.h
similarity index 94%
rename from src/fw/services/normal/activity/activity_algorithm.h
rename to include/pbl/services/activity/activity_algorithm.h
index 2298f4cd40..fe3d94621c 100644
--- a/src/fw/services/normal/activity/activity_algorithm.h
+++ b/include/pbl/services/activity/activity_algorithm.h
@@ -1,25 +1,12 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include
#include
#include "applib/accel_service.h"
-#include "services/normal/activity/activity.h"
+#include "pbl/services/activity/activity.h"
#define ACTIVITY_ALGORITHM_MAX_SAMPLES 25
diff --git a/include/pbl/services/activity/activity_calculators.h b/include/pbl/services/activity/activity_calculators.h
new file mode 100644
index 0000000000..81a3759430
--- /dev/null
+++ b/include/pbl/services/activity/activity_calculators.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+// ------------------------------------------------------------------------------------------------
+// Compute distance (in millimeters) covered by the taking the given number of steps in the given
+// amount of time.
+uint32_t activity_private_compute_distance_mm(uint32_t steps, uint32_t ms);
+
+
+// ------------------------------------------------------------------------------------------------
+// Compute active calories (in calories, not kcalories) covered by going the given distance in
+// the given amount of time.
+uint32_t activity_private_compute_active_calories(uint32_t distance_mm, uint32_t ms);
+
+// ------------------------------------------------------------------------------------------------
+// Compute resting calories (in calories, not kcalories) within the elapsed time given
+uint32_t activity_private_compute_resting_calories(uint32_t elapsed_minutes);
diff --git a/src/fw/services/normal/activity/activity_insights.h b/include/pbl/services/activity/activity_insights.h
similarity index 84%
rename from src/fw/services/normal/activity/activity_insights.h
rename to include/pbl/services/activity/activity_insights.h
index 29ddcd7b59..a5d2dd9d07 100644
--- a/src/fw/services/normal/activity/activity_insights.h
+++ b/include/pbl/services/activity/activity_insights.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -107,9 +94,6 @@ void activity_insights_test_push_summary_pins(void);
//! Used by test apps: Pushes the 2 rewards to the watch
void activity_insights_test_push_rewards(void);
-//! Used by test apps: Pushes the day 1, 4 and 10 insights
-void activity_insights_test_push_day_insights(void);
-
//! Used by test apps: Pushes a run and a walk notification
void activity_insights_test_push_walk_run_sessions(void);
diff --git a/src/fw/services/normal/activity/activity_private.h b/include/pbl/services/activity/activity_private.h
similarity index 91%
rename from src/fw/services/normal/activity/activity_private.h
rename to include/pbl/services/activity/activity_private.h
index 0d10b1ab30..d4bcb80735 100644
--- a/src/fw/services/normal/activity/activity_private.h
+++ b/include/pbl/services/activity/activity_private.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -22,8 +9,8 @@
#include "applib/event_service_client.h"
#include "kernel/events.h"
#include "os/mutex.h"
-#include "services/normal/data_logging/data_logging_service.h"
-#include "services/normal/settings/settings_file.h"
+#include "pbl/services/data_logging/data_logging_service.h"
+#include "pbl/services/settings/settings_file.h"
#include "system/hexdump.h"
#include "system/logging.h"
#include "util/attributes.h"
@@ -32,7 +19,7 @@
#include
#define ACTIVITY_LOG_DEBUG(fmt, args...) \
- PBL_LOG_D(LOG_DOMAIN_ACTIVITY, LOG_LEVEL_DEBUG, fmt, ## args)
+ PBL_LOG_D_DBG(LOG_DOMAIN_ACTIVITY, fmt, ## args)
#define ACTIVITY_HEXDUMP(data, length) \
PBL_HEXDUMP_D(LOG_DOMAIN_DATA_ACTIVITY, LOG_LEVEL_DEBUG, data, length)
@@ -64,25 +51,29 @@ typedef uint16_t ActivityScalarStore;
// part of the next day's sleep
#define ACTIVITY_LAST_SLEEP_MINUTE_OF_DAY (21 * MINUTES_PER_HOUR)
-// Default HeartRate sampling period (Must take a sample every X seconds by default)
-#define ACTIVITY_DEFAULT_HR_PERIOD_SEC (10 * SECONDS_PER_MINUTE)
+// Default HeartRate sampling ON time
+#define ACTIVITY_DEFAULT_HR_ON_TIME_SEC (60)
-// Default HeartRate sampling ON time (Stays on for X seconds every
-// ACTIVITY_DEFAULT_HR_PERIOD_SEC seconds)
-#define ACTIVITY_DEFAULT_HR_ON_TIME_SEC (SECONDS_PER_MINUTE)
+// Turn off the HR device after we've received X good quality samples
+#define ACTIVITY_MIN_NUM_GOOD_SAMPLES_SHORT_CIRCUIT (10)
-// Turn off the HR device after we've received X number of thresholded samples
-#define ACTIVITY_MIN_NUM_SAMPLES_SHORT_CIRCUIT (15)
+// Turn off the HR device after we've received X excellent quality samples
+#define ACTIVITY_MIN_NUM_EXCELLENT_SAMPLES_SHORT_CIRCUIT (5)
// The minimum number of samples needed before we can approximate the user's HR zone
-#define ACTIVITY_MIN_NUM_SAMPLES_FOR_HR_ZONE (10)
-
-#define ACTIVITY_MIN_HR_QUALITY_THRESH (HRMQuality_Good)
+#define ACTIVITY_MIN_NUM_SAMPLES_FOR_HR_ZONE (5)
// HRM Subscription values during ON and OFF periods
#define ACTIVITY_HRM_SUBSCRIPTION_ON_PERIOD_SEC (1)
#define ACTIVITY_HRM_SUBSCRIPTION_OFF_PERIOD_SEC (SECONDS_PER_DAY)
+// After this many seconds without an HRM event, the cached worn-status is considered stale and
+// the sleep algorithm falls back to its accel-based not-worn heuristics. Sized to comfortably
+// cover the default HRMonitoringInterval_10Min cycle (~11 min) — at the longer 30/60-min
+// intervals the cache will simply expire between bursts and sleep detection won't lean on a
+// stale on-wrist reading.
+#define ACTIVITY_HRM_OFFWRIST_STALE_SEC (15 * SECONDS_PER_MINUTE)
+
// Max number of stored HR samples to compute the median
#define ACTIVITY_MAX_HR_SAMPLES (3 * SECONDS_PER_MINUTE)
@@ -320,12 +311,15 @@ typedef struct {
// (from time_get_uptime_seconds)
uint16_t num_samples; // number of samples in the past minute
- uint16_t num_quality_samples; // number of samples in the past minute that have met our
- // quality threshold ACTIVITY_MIN_HR_QUALITY_THRESH
- // NOTE: Used to short circuit
- // our HR polling when enough samples have been taken
+ uint16_t num_good_quality_samples; // number of samples in the past minute with good quality
+ uint16_t num_excellent_samples; // number of samples in the past minute with excellent quality
uint8_t samples[ACTIVITY_MAX_HR_SAMPLES]; // HR Samples stored
uint8_t weights[ACTIVITY_MAX_HR_SAMPLES]; // HR Sample Weights
+
+ // Worn status from the most recent HRM BPM event. last_quality_event_utc is 0 if we've never
+ // received one. Used by sleep tracking to suppress detection while the watch is off-wrist.
+ time_t last_quality_event_utc;
+ bool last_quality_was_offwrist;
} ActivityHRSupport;
typedef struct {
@@ -524,6 +518,16 @@ void activity_metrics_prv_reset_hr_stats(void);
void activity_metrics_prv_add_median_hr_sample(PebbleHRMEvent *hrm_event, time_t now_utc,
time_t now_uptime);
+//! Record the worn status reported by the HRM. Called once per BPM event.
+//! @param[in] now_utc current UTC time
+//! @param[in] is_offwrist true if the event's HRMQuality was HRMQuality_OffWrist
+void activity_metrics_prv_set_hrm_worn_status(time_t now_utc, bool is_offwrist);
+
+//! Returns true if the HRM has recently reported the watch is off-wrist. The most recent BPM
+//! event must have been HRMQuality_OffWrist and must have arrived within the last
+//! ACTIVITY_HRM_OFFWRIST_STALE_SEC seconds, otherwise this returns false.
+bool activity_metrics_prv_is_hrm_offwrist(time_t now_utc);
+
//! Returns the number of steps the user has taken so far today (since midnight)
uint32_t activity_metrics_prv_get_steps(void);
diff --git a/src/fw/services/normal/activity/health_util.h b/include/pbl/services/activity/health_util.h
similarity index 91%
rename from src/fw/services/normal/activity/health_util.h
rename to include/pbl/services/activity/health_util.h
index 866276511a..d90b70b450 100644
--- a/src/fw/services/normal/activity/health_util.h
+++ b/include/pbl/services/activity/health_util.h
@@ -1,26 +1,14 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "applib/ui/layer.h"
-#include "apps/system_apps/timeline/text_node.h"
+#include "apps/system/timeline/text_node.h"
#include
#include
+#include
//! The maximum number of text nodes needed in a text node container
#define MAX_TEXT_NODES 5
diff --git a/include/pbl/services/activity/hr_util.h b/include/pbl/services/activity/hr_util.h
new file mode 100644
index 0000000000..11ba8e8ebe
--- /dev/null
+++ b/include/pbl/services/activity/hr_util.h
@@ -0,0 +1,22 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef enum HRZone {
+ HRZone_Zone0,
+ HRZone_Zone1,
+ HRZone_Zone2,
+ HRZone_Zone3,
+
+ HRZoneCount,
+ HRZone_Max = HRZone_Zone3,
+} HRZone;
+
+//! Returns the HR Zone for a given BPM
+HRZone hr_util_get_hr_zone(int bpm);
+
+//! Returns whether the BPM should be considered elevated
+bool hr_util_is_elevated(int bpm);
diff --git a/src/fw/services/normal/activity/insights_settings.h b/include/pbl/services/activity/insights_settings.h
similarity index 90%
rename from src/fw/services/normal/activity/insights_settings.h
rename to include/pbl/services/activity/insights_settings.h
index 5f5aa02924..c4dc2fbf01 100644
--- a/src/fw/services/normal/activity/insights_settings.h
+++ b/include/pbl/services/activity/insights_settings.h
@@ -1,23 +1,10 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "activity.h"
-#include "services/normal/filesystem/pfs.h"
+#include "pbl/services/filesystem/pfs.h"
#include "util/attributes.h"
#define ACTIVITY_INSIGHTS_SETTINGS_SLEEP_REWARD "sleep_reward"
diff --git a/include/pbl/services/activity/kraepelin/activity_algorithm_kraepelin.h b/include/pbl/services/activity/kraepelin/activity_algorithm_kraepelin.h
new file mode 100644
index 0000000000..defff900bf
--- /dev/null
+++ b/include/pbl/services/activity/kraepelin/activity_algorithm_kraepelin.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/time/time.h"
+#include "kraepelin_algorithm.h"
+
+// We divide the raw light sensor reading by this factor before storing it into AlgDlsMinuteData
+#define ALG_RAW_LIGHT_SENSOR_DIVIDE_BY 16
+
+// Nap constraints, also used by unit tests
+// A sleep session in this range is always considered "primary" (not nap) sleep
+// ... if it ends after this minute in the evening
+#define ALG_PRIMARY_EVENING_MINUTE (21 * MINUTES_PER_HOUR) // 9pm
+// ... or starts before this minute in the morning
+#define ALG_PRIMARY_MORNING_MINUTE (12 * MINUTES_PER_HOUR) // 12pm
+
+// A sleep session outside of the primary range is considered a nap if it is less than
+// this duration, otherwise it is considered a primary sleep session
+#define ALG_MAX_NAP_MINUTES (3 * MINUTES_PER_HOUR)
+
+// Max number of hours of past data we process to figure out sleep for "today". If a sleep
+// cycle *ends* after midnight today, then we still count it as today's sleep. That means the
+// start of the sleep cycle could have started more than 24 hours ago.
+#define ALG_SLEEP_HISTORY_HOURS_FOR_TODAY 36
diff --git a/src/fw/services/normal/activity/kraepelin/kraepelin_algorithm.h b/include/pbl/services/activity/kraepelin/kraepelin_algorithm.h
similarity index 94%
rename from src/fw/services/normal/activity/kraepelin/kraepelin_algorithm.h
rename to include/pbl/services/activity/kraepelin/kraepelin_algorithm.h
index a8c6909434..1c91214e67 100644
--- a/src/fw/services/normal/activity/kraepelin/kraepelin_algorithm.h
+++ b/include/pbl/services/activity/kraepelin/kraepelin_algorithm.h
@@ -125,7 +125,10 @@ uint32_t kalg_analyze_finish_epoch(KAlgState *state);
// @param[in] steps number of steps taken in the last minute
// @param[in] vmc VMC for the last minute
// @param[in] orientation average orientation for the last minute
-// @param[in] plugged_in true if watch is plugged into charger
+// @param[in] definitely_not_worn true if the watch is definitely not being worn this minute
+// (caller passes "plugged into charger" OR'd with any other definite
+// not-worn hints such as a recent HRM off-wrist reading). Treated as a
+// hard "not worn" signal for sleep detection.
// @param[in] resting_calories number of resting calories burned in the last minute
// @param[in] active_calories number of active calories burned in the last minute
// @param[in] distance_mm distance covered in millimeters in the last minute
@@ -133,7 +136,8 @@ uint32_t kalg_analyze_finish_epoch(KAlgState *state);
// session that it finds.
// @param[in] context passed to the sessions_cb
void kalg_activities_update(KAlgState *state, time_t utc_now, uint16_t steps, uint16_t vmc,
- uint8_t orientation, bool plugged_in, uint32_t resting_calories,
+ uint8_t orientation, bool definitely_not_worn,
+ uint32_t resting_calories,
uint32_t active_calories, uint32_t distance_mm, bool shutting_down,
KAlgActivitySessionCallback sessions_cb, void *context);
diff --git a/src/fw/services/normal/activity/workout_service.h b/include/pbl/services/activity/workout_service.h
similarity index 80%
rename from src/fw/services/normal/activity/workout_service.h
rename to include/pbl/services/activity/workout_service.h
index 37e1cda6a5..743f23afc3 100644
--- a/src/fw/services/normal/activity/workout_service.h
+++ b/include/pbl/services/activity/workout_service.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/alarms/alarm.h b/include/pbl/services/alarms/alarm.h
similarity index 81%
rename from src/fw/services/normal/alarms/alarm.h
rename to include/pbl/services/alarms/alarm.h
index dc709cfb0e..bdc702984c 100644
--- a/src/fw/services/normal/alarms/alarm.h
+++ b/include/pbl/services/alarms/alarm.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -53,6 +40,14 @@ typedef enum AlarmType {
AlarmTypeCount,
} AlarmType;
+//! Built-in alarm tones, played on speaker hardware when sound is enabled.
+typedef enum AlarmTone {
+ AlarmTone_Reveille = 0,
+ AlarmTone_Beacon,
+ AlarmTone_Bell,
+ AlarmTone_Chime,
+} AlarmTone;
+
typedef struct AlarmInfo {
int hour; //
+
+#define PBL_ANALYTICS_KEY(key_name) PBL_ANALYTICS_KEY__##key_name
+
+enum pbl_analytics_key {
+#define PBL_ANALYTICS_METRIC_DEFINE_UNSIGNED(key) \
+ PBL_ANALYTICS_KEY(key),
+#define PBL_ANALYTICS_METRIC_DEFINE_SIGNED(key) \
+ PBL_ANALYTICS_KEY(key),
+#define PBL_ANALYTICS_METRIC_DEFINE_SCALED_UNSIGNED(key, scale) \
+ PBL_ANALYTICS_KEY(key),
+#define PBL_ANALYTICS_METRIC_DEFINE_SCALED_SIGNED(key, scale) \
+ PBL_ANALYTICS_KEY(key),
+#define PBL_ANALYTICS_METRIC_DEFINE_TIMER(key) \
+ PBL_ANALYTICS_KEY(key),
+#define PBL_ANALYTICS_METRIC_DEFINE_STRING(key, len) \
+ PBL_ANALYTICS_KEY(key),
+ #include "analytics.def"
+#undef PBL_ANALYTICS_METRIC_DEFINE_UNSIGNED
+#undef PBL_ANALYTICS_METRIC_DEFINE_SIGNED
+#undef PBL_ANALYTICS_METRIC_DEFINE_SCALED_UNSIGNED
+#undef PBL_ANALYTICS_METRIC_DEFINE_SCALED_SIGNED
+#undef PBL_ANALYTICS_METRIC_DEFINE_TIMER
+#undef PBL_ANALYTICS_METRIC_DEFINE_STRING
+ PBL_ANALYTICS_KEY_COUNT,
+};
+
+void pbl_analytics_init(void);
+
+void sys_pbl_analytics_set_signed(enum pbl_analytics_key key, int32_t signed_value);
+
+void sys_pbl_analytics_set_unsigned(enum pbl_analytics_key key, uint32_t unsigned_value);
+
+void sys_pbl_analytics_set_string(enum pbl_analytics_key key, const char *value);
+
+void sys_pbl_analytics_timer_start(enum pbl_analytics_key key);
+
+void sys_pbl_analytics_timer_stop(enum pbl_analytics_key key);
+
+void sys_pbl_analytics_add(enum pbl_analytics_key key, int32_t amount);
+
+#define PBL_ANALYTICS_SET_SIGNED(key_name, signed_value) \
+ sys_pbl_analytics_set_signed(PBL_ANALYTICS_KEY(key_name), signed_value)
+
+#define PBL_ANALYTICS_SET_UNSIGNED(key_name, unsigned_value) \
+ sys_pbl_analytics_set_unsigned(PBL_ANALYTICS_KEY(key_name), unsigned_value)
+
+#define PBL_ANALYTICS_SET_STRING(key_name, value) \
+ sys_pbl_analytics_set_string(PBL_ANALYTICS_KEY(key_name), value)
+
+#define PBL_ANALYTICS_TIMER_START(key_name) \
+ sys_pbl_analytics_timer_start(PBL_ANALYTICS_KEY(key_name))
+
+#define PBL_ANALYTICS_TIMER_STOP(key_name) \
+ sys_pbl_analytics_timer_stop(PBL_ANALYTICS_KEY(key_name))
+
+#define PBL_ANALYTICS_ADD(key_name, amount) \
+ sys_pbl_analytics_add(PBL_ANALYTICS_KEY(key_name), amount)
diff --git a/include/pbl/services/analytics/backend.h b/include/pbl/services/analytics/backend.h
new file mode 100644
index 0000000000..6db2a66814
--- /dev/null
+++ b/include/pbl/services/analytics/backend.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "analytics.h"
+
+#include
+
+struct pbl_analytics_backend_ops {
+ void (*set_signed)(enum pbl_analytics_key key, int32_t signed_value);
+ void (*set_unsigned)(enum pbl_analytics_key key, uint32_t unsigned_value);
+ void (*set_string)(enum pbl_analytics_key key, const char *value);
+ void (*timer_start)(enum pbl_analytics_key key);
+ void (*timer_stop)(enum pbl_analytics_key key);
+ void (*add)(enum pbl_analytics_key key, int32_t amount);
+};
\ No newline at end of file
diff --git a/include/pbl/services/animation_service.h b/include/pbl/services/animation_service.h
new file mode 100644
index 0000000000..52421c1682
--- /dev/null
+++ b/include/pbl/services/animation_service.h
@@ -0,0 +1,22 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include "kernel/pebble_tasks.h"
+
+//! @file animation_service.h
+//! Manage the system resources used by the applib/animation module.
+
+//! Register the timer to fire in N ms. When it fires, the animation_private_timer_callback()
+//! will be called and passed the AnimationState for that task.
+void animation_service_timer_schedule(uint32_t ms);
+
+//! Acknowledge that we received an event sent by the animation timer
+void animation_service_timer_event_received(void);
+
+//! Destroy the animation resoures used by the given task. Called by the process_manager when a
+// process exits
+void animation_service_cleanup(PebbleTask task);
diff --git a/include/pbl/services/app_cache.h b/include/pbl/services/app_cache.h
new file mode 100644
index 0000000000..4143bc3165
--- /dev/null
+++ b/include/pbl/services/app_cache.h
@@ -0,0 +1,43 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "process_management/app_install_types.h"
+#include "system/status_codes.h"
+
+#include
+#include
+
+//! @file app_cache.c
+//! AppCache
+//!
+//! The AppCache keeps track of a cache of the applications that have binaries that reside on the
+//! watch. When an app's binaries are removed from the watch, the entry with the same AppInstallId
+//! is removed from the AppCache.
+//!
+//! When the app storage space has run out, a call to the app cache will retrieve the entry that
+//! needs to be removed.
+
+//! Initializes the AppCache
+void app_cache_init(void);
+
+//! Adds a blank entry with the given AppInstallId and total size to the AppCache
+status_t app_cache_add_entry(AppInstallId app_id, uint32_t total_size);
+
+//! Removes an entry with the given AppInstallId from the AppCache
+status_t app_cache_remove_entry(AppInstallId app_id);
+
+//! Checks whether an entry with the given AppInstallId is in the AppCache.
+bool app_cache_entry_exists(AppInstallId app_id);
+
+//! Increments data stored about an entry with the given AppInstallId in the AppCache
+status_t app_cache_app_launched(AppInstallId app_id);
+
+//! Ask the app cache to free up n bytes in case other parts of the system need room in the
+//! filesystem
+status_t app_cache_free_up_space(uint32_t bytes_needed);
+
+//! Clears the entire AppCache
+//! NOTE: Must be called from PebbleTask_KernelBackground
+void app_cache_flush(void);
diff --git a/include/pbl/services/app_fetch_endpoint.h b/include/pbl/services/app_fetch_endpoint.h
new file mode 100644
index 0000000000..ab09731f71
--- /dev/null
+++ b/include/pbl/services/app_fetch_endpoint.h
@@ -0,0 +1,44 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/uuid.h"
+#include "kernel/events.h"
+#include "process_management/app_install_types.h"
+
+typedef enum {
+ AppFetchResultSuccess,
+ AppFetchResultTimeoutError,
+ AppFetchResultGeneralFailure,
+ AppFetchResultPhoneBusy,
+ AppFetchResultUUIDInvalid,
+ AppFetchResultNoBluetooth,
+ AppFetchResultPutBytesFailure,
+ AppFetchResultNoData,
+ AppFetchResultUserCancelled,
+ AppFetchResultIncompatibleJSFailure,
+} AppFetchResult;
+
+typedef struct {
+ AppFetchResult error;
+ AppInstallId id;
+} AppFetchError;
+
+void app_fetch_binaries(const Uuid *uuid, AppInstallId app_id, bool has_worker);
+
+//! @param app_id The AppInstallId of the fetch to be cancelled.
+//! NOTE: If `app_id` is INSTALL_ID_INVALID, it will cancel the fetch regardless of AppInstallId
+void app_fetch_cancel(AppInstallId app_id);
+
+//! @param app_id The AppInstallId of the fetch to be cancelled.
+//! NOTE: If `app_id` is INSTALL_ID_INVALID, it will cancel the fetch regardless of AppInstallId
+//! NOTE: Must be called from PebbleTask_KernelBackground
+void app_fetch_cancel_from_system_task(AppInstallId app_id);
+
+bool app_fetch_in_progress(void);
+
+//! Put Bytes handler. Used for keeping track of progress and cleanup events
+void app_fetch_put_bytes_event_handler(PebblePutBytesEvent *pb_event);
+
+AppFetchError app_fetch_get_previous_error(void);
diff --git a/include/pbl/services/app_glances/app_glance_service.h b/include/pbl/services/app_glances/app_glance_service.h
new file mode 100644
index 0000000000..91d69320bc
--- /dev/null
+++ b/include/pbl/services/app_glances/app_glance_service.h
@@ -0,0 +1,49 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/blob_db/app_glance_db_private.h"
+#include "pbl/services/timeline/attribute.h"
+#include "util/attributes.h"
+#include "util/time/time.h"
+#include "util/uuid.h"
+
+typedef enum AppGlanceSliceType {
+ AppGlanceSliceType_IconAndSubtitle = 0,
+
+ AppGlanceSliceTypeCount
+} AppGlanceSliceType;
+
+//! We name this "internal" so it won't conflict with the AppGlanceSlice struct we export in the SDK
+#if UNITTEST
+// Memory comparisons in unit tests won't work unless we pack the struct
+typedef struct PACKED AppGlanceSliceInternal {
+#else
+typedef struct AppGlanceSliceInternal {
+#endif
+ AppGlanceSliceType type;
+ time_t expiration_time;
+ union {
+ //! Add more structs to this union as we introduce new app glance slice types
+ struct {
+ uint32_t icon_resource_id;
+ char template_string[ATTRIBUTE_APP_GLANCE_SUBTITLE_MAX_LEN + 1];
+ } icon_and_subtitle;
+ };
+} AppGlanceSliceInternal;
+
+typedef struct AppGlance {
+ size_t num_slices;
+ AppGlanceSliceInternal slices[APP_GLANCE_DB_MAX_SLICES_PER_GLANCE];
+} AppGlance;
+
+//! Initializes an AppGlance.
+void app_glance_service_init_glance(AppGlance *glance);
+
+//! Initializes the app glance service.
+void app_glance_service_init(void);
+
+//! Returns true if the current slice was successfully copied to slice_out.
+//! Returns false if all slices in the glance have expired or if an error occurred.
+bool app_glance_service_get_current_slice(const Uuid *app_uuid, AppGlanceSliceInternal *slice_out);
diff --git a/src/fw/services/normal/app_inbox_service.h b/include/pbl/services/app_inbox_service.h
similarity index 88%
rename from src/fw/services/normal/app_inbox_service.h
rename to include/pbl/services/app_inbox_service.h
index 248e0ff004..ed2533f33c 100644
--- a/src/fw/services/normal/app_inbox_service.h
+++ b/include/pbl/services/app_inbox_service.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/app_message/app_message_sender.h b/include/pbl/services/app_message/app_message_sender.h
new file mode 100644
index 0000000000..eebcce5157
--- /dev/null
+++ b/include/pbl/services/app_message/app_message_sender.h
@@ -0,0 +1,66 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/app_outbox_service.h"
+#include "pbl/services/comm_session/protocol.h"
+#include "pbl/services/comm_session/session.h"
+#include "pbl/services/comm_session/session_send_queue.h"
+
+#include
+
+//! This module uses AppOutbox to get Pebble Protocol outbound messages from the app.
+//! It does not keep any static state inside this module, all the state is stored by the app outbox
+//! service. It's really just a piece of glue code between app_outbox.c and session_send_queue.c
+
+
+//! Enum that "inherits" from AppOutboxStatus and defines app-message-sender-specific status
+//! values in the user range:
+typedef enum {
+ AppMessageSenderErrorSuccess = AppOutboxStatusSuccess,
+ AppMessageSenderErrorDisconnected = AppOutboxStatusConsumerDoesNotExist,
+ AppMessageSenderErrorDataTooShort = AppOutboxStatusUserRangeStart,
+ AppMessageSenderErrorEndpointDisallowed,
+
+ NumAppMessageSenderError,
+} AppMessageSenderError;
+
+_Static_assert((NumAppMessageSenderError - 1) <= AppOutboxStatusUserRangeEnd,
+ "AppMessageSenderError value can't be bigger than AppOutboxStatusUserRangeEnd");
+
+//! @note This is the data structure for the `consumer_data` of the AppOutboxMessage.
+//! app_message_sender.c assumes this struct is always contained within the AppOutboxMessage
+//! struct.
+typedef struct {
+ SessionSendQueueJob send_queue_job;
+
+ CommSession *session;
+ PebbleProtocolHeader header;
+
+ size_t consumed_length;
+} AppMessageSendJob;
+
+_Static_assert(offsetof(AppMessageSendJob, send_queue_job) == 0,
+ "send_queue_job must be first member, due to the way session_send_queue.c works");
+
+//! Structure of `data` in outbox_message (in app's memory space)
+//! @note None of these fields can be trusted / used as is, they need to be sanitized.
+typedef struct {
+ //! Can be NULL to "auto select" the session based on the UUID of the running app.
+ CommSession *session;
+
+ //! Padding for future use
+ uint8_t padding[6];
+
+ uint16_t endpoint_id;
+ uint8_t payload[];
+} AppMessageAppOutboxData;
+
+#if !UNITTEST
+_Static_assert(sizeof(AppMessageAppOutboxData) <= 12,
+ "Can't grow AppMessageAppOutboxData beyond 12 bytes, can break apps!");
+#endif
+
+//! To be called once during boot. This registers this module with app_outbox_service.
+void app_message_sender_init(void);
diff --git a/src/fw/services/normal/app_outbox_service.h b/include/pbl/services/app_outbox_service.h
similarity index 88%
rename from src/fw/services/normal/app_outbox_service.h
rename to include/pbl/services/app_outbox_service.h
index fab3e702e7..515ffc570b 100644
--- a/src/fw/services/normal/app_outbox_service.h
+++ b/include/pbl/services/app_outbox_service.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/audio_endpoint.h b/include/pbl/services/audio_endpoint.h
new file mode 100644
index 0000000000..89dd255d24
--- /dev/null
+++ b/include/pbl/services/audio_endpoint.h
@@ -0,0 +1,37 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+//! Endpoint for transferring audio data between the watch and phone
+//! https://pebbletechnology.atlassian.net/wiki/pages/viewpage.action?pageId=491698
+
+//! Session identifier passed to endpoint functions
+typedef uint16_t AudioEndpointSessionId;
+#define AUDIO_ENDPOINT_SESSION_INVALID_ID (0)
+
+//! Function signature of the callback to handle stop transfer message received from phone
+typedef void (*AudioEndpointStopTransferCallback)(AudioEndpointSessionId session_id);
+
+//! Create a session for transferring audio data from watch to phone
+//! @param stop_transfer Callback to handle stop transfer message received from phone.
+//! @return Session identifier to pass to other endpoint functions
+AudioEndpointSessionId audio_endpoint_setup_transfer(AudioEndpointStopTransferCallback stop_transfer);
+
+//! Add a frame of audio data to session's internal buffer
+//! @param session_id Session identifier returned by audio_endpoint_start_transfer
+//! @param frame Pointer to frame of encoded audio data
+//! @param frame_size Size of frame of encoded audio data in bytes
+void audio_endpoint_add_frame(AudioEndpointSessionId session_id, uint8_t *frame,
+ uint8_t frame_size);
+
+//! Stop transferring audio data from watch to phone
+//! @param session_id Session identifier returned by audio_endpoint_setup_transfer
+void audio_endpoint_stop_transfer(AudioEndpointSessionId session_id);
+
+//! Cancel a transfer session without sending a stop transfer message
+//! @param session_id Session identifier returned by audio_endpoint_setup_transfer
+void audio_endpoint_cancel_transfer(AudioEndpointSessionId session_id);
diff --git a/include/pbl/services/audio_endpoint_private.h b/include/pbl/services/audio_endpoint_private.h
new file mode 100644
index 0000000000..a0e6702527
--- /dev/null
+++ b/include/pbl/services/audio_endpoint_private.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+
+#include
+#include
+
+typedef enum {
+ MsgIdDataTransfer = 0x02,
+ MsgIdStopTransfer = 0x03,
+} MsgId;
+
+typedef struct PACKED {
+ MsgId msg_id;
+ AudioEndpointSessionId session_id;
+ uint8_t frame_count;
+ uint8_t frames[];
+} DataTransferMsg;
+
+typedef struct PACKED {
+ MsgId msg_id;
+ AudioEndpointSessionId session_id;
+} StopTransferMsg;
diff --git a/include/pbl/services/battery/battery_curve.h b/include/pbl/services/battery/battery_curve.h
new file mode 100644
index 0000000000..2214c5c9d2
--- /dev/null
+++ b/include/pbl/services/battery/battery_curve.h
@@ -0,0 +1,41 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+#include
+#include
+
+// Handles battery mV <-> % conversion
+
+typedef enum {
+ BATTERY_CURVE_COMPENSATE_STATUS_LED,
+ BATTERY_CURVE_COMPENSATE_COUNT
+} BatteryCurveVoltageCompensationKey;
+
+//! Set compensation value to be applied to battery voltage when calculating percentage charge.
+//! For example, if an LED is constantly on, the voltage being measured is going to drop due to the
+//! internal resistance of the battery.
+void battery_curve_set_compensation(BatteryCurveVoltageCompensationKey key, int mv);
+
+void battery_curve_set_full_voltage(uint16_t voltage);
+
+#if UNITTEST
+//! Restore the discharge curve mutated by battery_curve_set_full_voltage().
+//! For test isolation only; not built into production firmware.
+void battery_curve_reset_for_tests(void);
+#endif
+
+//! Returns the corresponding battery percentage as a ratio32.
+uint32_t battery_curve_sample_ratio32_charge_percent(uint32_t battery_mv, bool is_charging);
+
+uint32_t battery_curve_lookup_percent_by_voltage(uint32_t battery_mv, bool is_charging);
+
+int32_t battery_curve_lookup_percent_with_scaling_factor(
+ int battery_mv, bool is_charging, uint32_t scaling_factor);
+
+uint32_t battery_curve_get_hours_remaining(uint32_t percent_remaining);
+
+uint32_t battery_curve_get_percent_remaining(uint32_t hours);
+
+// This is used by unit tests and QEMU
+uint32_t battery_curve_lookup_voltage_by_percent(uint32_t percent, bool is_charging);
diff --git a/include/pbl/services/battery/battery_monitor.h b/include/pbl/services/battery/battery_monitor.h
new file mode 100644
index 0000000000..4d4306813a
--- /dev/null
+++ b/include/pbl/services/battery/battery_monitor.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+#include "pbl/services/battery/battery_state.h"
+#include "pbl/services/new_timer/new_timer.h"
+#include
+
+// The battery monitor handles power state and associated service control, in response to battery
+// state changes. This includes low power and critical modes.
+
+void battery_monitor_init(void);
+void battery_monitor_handle_state_change_event(PreciseBatteryChargeState state);
+
+// Use the battery state to determine if UI elements should be locked out
+// because the battery is too low
+bool battery_monitor_critical_lockout(void);
+
+// For unit tests
+TimerID battery_monitor_get_standby_timer_id(void);
diff --git a/src/fw/services/common/battery/battery_state.h b/include/pbl/services/battery/battery_state.h
similarity index 75%
rename from src/fw/services/common/battery/battery_state.h
rename to include/pbl/services/battery/battery_state.h
index 1346733968..e8ea5c1d04 100644
--- a/src/fw/services/common/battery/battery_state.h
+++ b/include/pbl/services/battery/battery_state.h
@@ -1,21 +1,8 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/new_timer/new_timer.h"
+#include "pbl/services/new_timer/new_timer.h"
#include
#include
@@ -75,5 +62,8 @@ void battery_state_reset_filter(void);
// Get the last recorded voltage
uint16_t battery_state_get_voltage(void);
+// Get the last recorded temperature (mC)
+int32_t battery_state_get_temperature(void);
+
// For unit tests
TimerID battery_state_get_periodic_timer_id(void);
diff --git a/src/fw/services/normal/blob_db/api.h b/include/pbl/services/blob_db/api.h
similarity index 90%
rename from src/fw/services/normal/blob_db/api.h
rename to include/pbl/services/blob_db/api.h
index 72e1c68db3..8c84edb882 100644
--- a/src/fw/services/normal/blob_db/api.h
+++ b/include/pbl/services/blob_db/api.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -48,6 +35,7 @@ typedef enum PACKED {
BlobDBIdWatchAppPrefs = 0x09,
BlobDBIdHealth = 0x0A,
BlobDBIdAppGlance = 0x0B,
+ BlobDBIdSettings = 0x0C,
NumBlobDBs,
} BlobDBId;
_Static_assert(sizeof(BlobDBId) == 1, "BlobDBId is larger than 1 byte");
@@ -122,6 +110,12 @@ typedef BlobDBDirtyItem *(*BlobDBGetDirtyListImpl)(void);
//! \returns S_SUCCESS if the item was marked synced, an error code otherwise
typedef status_t (*BlobDBMarkSyncedImpl)(const uint8_t *key, int key_len);
+//! Implements the Compact API. Reclaims unused space in the underlying
+//! settings file. Note that this function should be blocking; only blob DBs
+//! backed by a settings_file need to implement this.
+//! \returns S_SUCCESS on success, an error code otherwise
+typedef status_t (*BlobDBCompactImpl)(void);
+
//! Emits a Blob DB event.
//! \param type The type of event to emit
//! \param db_id the ID of the blob DB
@@ -132,6 +126,12 @@ void blob_db_event_put(BlobDBEventType type, BlobDBId db_id, const uint8_t *key,
//! Call the BlobDBInitImpl for all the databases
void blob_db_init_dbs(void);
+//! Call the BlobDBCompactImpl for every database that implements one. Used to
+//! reclaim space in growable settings_file-backed databases. Must be called
+//! after blob_db_init_dbs(). Safe to call from a system task callback; do not
+//! call from the kernel main loop as compaction performs disk I/O.
+void blob_db_compact_growable_dbs(void);
+
//! Call the BlobDBIsDirtyImpl for each database, and fill the 'ids' list
//! with all the dirty DB ids
//! \param[out] ids an array of BlobDbIds of size NumBlobDBs or more.
diff --git a/include/pbl/services/blob_db/api_types.h b/include/pbl/services/blob_db/api_types.h
new file mode 100644
index 0000000000..306660fc9f
--- /dev/null
+++ b/include/pbl/services/blob_db/api_types.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+typedef enum BlobDBEventType {
+ BlobDBEventTypeInsert,
+ BlobDBEventTypeDelete,
+ BlobDBEventTypeFlush,
+} BlobDBEventType;
diff --git a/include/pbl/services/blob_db/app_db.h b/include/pbl/services/blob_db/app_db.h
new file mode 100644
index 0000000000..00819c3b4f
--- /dev/null
+++ b/include/pbl/services/blob_db/app_db.h
@@ -0,0 +1,65 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "util/uuid.h"
+#include "process_management/app_install_manager.h"
+#include "process_management/pebble_process_info.h"
+#include "system/status_codes.h"
+#include "util/attributes.h"
+#include "util/list.h"
+
+
+//! App database entry for BlobDB. First pass is very basic. The list will expand as more features
+//! and requirements are implemented.
+typedef struct PACKED {
+ Uuid uuid;
+ uint32_t info_flags;
+ uint32_t icon_resource_id;
+ Version app_version;
+ Version sdk_version;
+ GColor8 app_face_bg_color;
+ uint8_t template_id;
+ char name[APP_NAME_SIZE_BYTES];
+} AppDBEntry;
+
+//! Used in app_db_enumerate_entries
+typedef void(*AppDBEnumerateCb)(AppInstallId install_id, AppDBEntry *entry, void *data);
+
+/* AppDB Functions */
+
+int32_t app_db_get_next_unique_id(void);
+
+AppInstallId app_db_get_install_id_for_uuid(const Uuid *uuid);
+
+status_t app_db_get_app_entry_for_uuid(const Uuid *uuid, AppDBEntry *entry);
+
+status_t app_db_get_app_entry_for_install_id(AppInstallId app_id, AppDBEntry *entry);
+
+void app_db_enumerate_entries(AppDBEnumerateCb cb, void *data);
+
+/* AppDB AppInstallId Implementation */
+
+bool app_db_exists_install_id(AppInstallId app_id);
+
+/* BlobDB Implementation */
+
+void app_db_init(void);
+
+status_t app_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int app_db_get_len(const uint8_t *key, int key_len);
+
+status_t app_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t app_db_delete(const uint8_t *key, int key_len);
+
+status_t app_db_flush(void);
+
+status_t app_db_compact(void);
+
+/* TEST */
+AppInstallId app_db_check_next_unique_id(void);
diff --git a/include/pbl/services/blob_db/app_glance_db.h b/include/pbl/services/blob_db/app_glance_db.h
new file mode 100644
index 0000000000..ee2742211d
--- /dev/null
+++ b/include/pbl/services/blob_db/app_glance_db.h
@@ -0,0 +1,43 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/app_glances/app_glance_service.h"
+#include "system/status_codes.h"
+#include "util/attributes.h"
+#include "util/time/time.h"
+#include "util/uuid.h"
+
+#include
+
+// -------------------------------------------------------------------------------------------------
+// AppGlanceDB Implementation
+
+status_t app_glance_db_insert_glance(const Uuid *uuid, const AppGlance *glance);
+
+status_t app_glance_db_read_glance(const Uuid *uuid, AppGlance *glance_out);
+
+status_t app_glance_db_read_creation_time(const Uuid *uuid, time_t *time_out);
+
+status_t app_glance_db_delete_glance(const Uuid *uuid);
+
+// -------------------------------------------------------------------------------------------------
+// BlobDB API Implementation
+
+void app_glance_db_init(void);
+
+status_t app_glance_db_flush(void);
+
+//! Compact and shrink the on-disk settings file. Forces growable files that
+//! grew before the growable change landed (or under heavy load) to drop back
+//! toward the initial allocation.
+status_t app_glance_db_compact(void);
+
+status_t app_glance_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int app_glance_db_get_len(const uint8_t *key, int key_len);
+
+status_t app_glance_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t app_glance_db_delete(const uint8_t *key, int key_len);
diff --git a/include/pbl/services/blob_db/app_glance_db_private.h b/include/pbl/services/blob_db/app_glance_db_private.h
new file mode 100644
index 0000000000..6c14190b40
--- /dev/null
+++ b/include/pbl/services/blob_db/app_glance_db_private.h
@@ -0,0 +1,45 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/timeline/attribute.h"
+#include "pbl/services/timeline/attribute_private.h"
+#include "util/attributes.h"
+
+#define APP_GLANCE_DB_CURRENT_VERSION (1)
+
+//! This number is reduced for unit tests to avoid creating large glance payloads in the unit tests
+#if UNITTEST
+#define APP_GLANCE_DB_MAX_SLICES_PER_GLANCE (2)
+#else
+#define APP_GLANCE_DB_MAX_SLICES_PER_GLANCE (8)
+#endif
+
+#define APP_GLANCE_DB_MAX_NUM_APP_GLANCES (50)
+
+typedef struct PACKED SerializedAppGlanceHeader {
+ uint8_t version;
+ uint32_t creation_time;
+ uint8_t data[]; // Serialized slices
+} SerializedAppGlanceHeader;
+
+typedef struct PACKED SerializedAppGlanceSliceHeader {
+ uint16_t total_size;
+ uint8_t type;
+ uint8_t num_attributes;
+ uint8_t data[]; // Serialized attributes
+} SerializedAppGlanceSliceHeader;
+
+//! The minimum size of an AppGlanceSliceType_IconAndSubtitle slice is the size of the header plus
+//! the expiration_time because the icon and subtitle are optional
+#define APP_GLANCE_DB_ICON_AND_SUBTITLE_SLICE_MIN_SIZE \
+ (sizeof(SerializedAppGlanceSliceHeader) + sizeof(SerializedAttributeHeader) + sizeof(uint32_t))
+//! The maximum size of an AppGlanceSliceType_IconAndSubtitle slice is the size of the header plus
+//! the expiration_time, icon resource ID, and subtitle string attributes (+1 added for null char)
+#define APP_GLANCE_DB_ICON_AND_SUBTITLE_SLICE_MAX_SIZE \
+ (sizeof(SerializedAppGlanceSliceHeader) + (sizeof(SerializedAttributeHeader) * 3) + \
+ sizeof(uint32_t) + sizeof(uint32_t) + ATTRIBUTE_APP_GLANCE_SUBTITLE_MAX_LEN + 1)
+
+#define APP_GLANCE_DB_SLICE_MIN_SIZE (APP_GLANCE_DB_ICON_AND_SUBTITLE_SLICE_MIN_SIZE)
+#define APP_GLANCE_DB_SLICE_MAX_SIZE (APP_GLANCE_DB_ICON_AND_SUBTITLE_SLICE_MAX_SIZE)
diff --git a/include/pbl/services/blob_db/contacts_db.h b/include/pbl/services/blob_db/contacts_db.h
new file mode 100644
index 0000000000..3af56c7901
--- /dev/null
+++ b/include/pbl/services/blob_db/contacts_db.h
@@ -0,0 +1,46 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "system/status_codes.h"
+#include "util/attributes.h"
+#include "util/uuid.h"
+
+typedef struct PACKED {
+ Uuid uuid;
+ uint32_t flags;
+ uint8_t num_attributes;
+ uint8_t num_addresses;
+ uint8_t data[]; // Serialized attributes followed by serialized addresses
+} SerializedContact;
+
+//! Given a contact's uuid, return the serialized data for that contact. This should probably only
+//! be called by the contacts service. You probably want contacts_get_contact_by_uuid() instead
+//! @param uuid The contact's uuid.
+//! @param contact_out A pointer to the serialized contact data, NULL if the contact isn't found.
+//! @return The length of the data[] field.
+//! @note The caller must cleanup with contacts_db_free_serialized_contact().
+int contacts_db_get_serialized_contact(const Uuid *uuid, SerializedContact **contact_out);
+
+//! Frees the serialized contact data returned by contacts_db_get_serialized_contact().
+void contacts_db_free_serialized_contact(SerializedContact *contact);
+
+
+///////////////////////////////////////////
+// BlobDB Boilerplate (see blob_db/api.h)
+///////////////////////////////////////////
+
+void contacts_db_init(void);
+
+status_t contacts_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int contacts_db_get_len(const uint8_t *key, int key_len);
+
+status_t contacts_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t contacts_db_delete(const uint8_t *key, int key_len);
+
+status_t contacts_db_flush(void);
+
+status_t contacts_db_compact(void);
diff --git a/include/pbl/services/blob_db/endpoint.h b/include/pbl/services/blob_db/endpoint.h
new file mode 100644
index 0000000000..c2aef3e061
--- /dev/null
+++ b/include/pbl/services/blob_db/endpoint.h
@@ -0,0 +1,27 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "endpoint_private.h"
+
+//! Send a write message for the given blob db item.
+//! @returns the blob db transaction token
+BlobDBToken blob_db_endpoint_send_write(BlobDBId db_id,
+ time_t last_updated,
+ const void *key,
+ int key_len,
+ const void *val,
+ int val_len);
+
+//! Send a WB message for the given blob db item.
+//! @returns the blob db transaction token
+BlobDBToken blob_db_endpoint_send_writeback(BlobDBId db_id,
+ time_t last_updated,
+ const void *key,
+ int key_len,
+ const void *val,
+ int val_len);
+
+//! Indicate that blob db sync is done for a given db id
+void blob_db_endpoint_send_sync_done(BlobDBId db_id);
diff --git a/src/fw/services/normal/blob_db/endpoint_private.h b/include/pbl/services/blob_db/endpoint_private.h
similarity index 77%
rename from src/fw/services/normal/blob_db/endpoint_private.h
rename to include/pbl/services/blob_db/endpoint_private.h
index 05302dfba8..acc776c924 100644
--- a/src/fw/services/normal/blob_db/endpoint_private.h
+++ b/include/pbl/services/blob_db/endpoint_private.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -56,12 +43,16 @@ typedef enum PACKED {
BLOB_DB_COMMAND_WRITE = 0x08,
BLOB_DB_COMMAND_WRITEBACK = 0x09,
BLOB_DB_COMMAND_SYNC_DONE = 0x0A,
+ BLOB_DB_COMMAND_VERSION = 0x0B,
+ BLOB_DB_COMMAND_DIRTY_ALL = 0x0C,
+ BLOB_DB_COMMAND_INSERT_WITH_TIMESTAMP = 0x0D,
// Response commands
BLOB_DB_COMMAND_DIRTY_DBS_RESPONSE = BLOB_DB_COMMAND_DIRTY_DBS | RESPONSE_MASK,
BLOB_DB_COMMAND_START_SYNC_RESPONSE = BLOB_DB_COMMAND_START_SYNC | RESPONSE_MASK,
BLOB_DB_COMMAND_WRITE_RESPONSE = BLOB_DB_COMMAND_WRITE | RESPONSE_MASK,
BLOB_DB_COMMAND_WRITEBACK_RESPONSE = BLOB_DB_COMMAND_WRITEBACK | RESPONSE_MASK,
BLOB_DB_COMMAND_SYNC_DONE_RESPONSE = BLOB_DB_COMMAND_SYNC_DONE | RESPONSE_MASK,
+ BLOB_DB_COMMAND_VERSION_RESPONSE = BLOB_DB_COMMAND_VERSION | RESPONSE_MASK,
} BlobDBCommand;
_Static_assert(sizeof(BlobDBCommand) == 1, "BlobDBCommand is larger than 1 byte");
diff --git a/include/pbl/services/blob_db/health_db.h b/include/pbl/services/blob_db/health_db.h
new file mode 100644
index 0000000000..272fcbbb20
--- /dev/null
+++ b/include/pbl/services/blob_db/health_db.h
@@ -0,0 +1,49 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/activity/activity.h"
+#include "system/status_codes.h"
+#include "util/attributes.h"
+
+
+//! Get the typical metric value for a given day.
+//! If you want "typical steps" you probably want health_db_get_typical_step_averages
+bool health_db_get_typical_value(ActivityMetric metric,
+ DayInWeek day,
+ int32_t *value_out);
+
+//! Get the average metric value over the last month
+bool health_db_get_monthly_average_value(ActivityMetric metric,
+ int32_t *value_out);
+
+//! Often referred to as "typical steps"
+bool health_db_get_typical_step_averages(DayInWeek day,
+ ActivityMetricAverages *averages);
+
+
+
+//! For test / debug purposes only
+bool health_db_set_typical_values(ActivityMetric metric,
+ DayInWeek day,
+ uint16_t *values,
+ int num_values);
+
+///////////////////////////////////////////
+// BlobDB Boilerplate (see blob_db/api.h)
+///////////////////////////////////////////
+
+void health_db_init(void);
+
+status_t health_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int health_db_get_len(const uint8_t *key, int key_len);
+
+status_t health_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t health_db_delete(const uint8_t *key, int key_len);
+
+status_t health_db_flush(void);
+
+status_t health_db_compact(void);
diff --git a/src/fw/services/normal/blob_db/ios_notif_pref_db.h b/include/pbl/services/blob_db/ios_notif_pref_db.h
similarity index 76%
rename from src/fw/services/normal/blob_db/ios_notif_pref_db.h
rename to include/pbl/services/blob_db/ios_notif_pref_db.h
index 99089627b5..9816c0279e 100644
--- a/src/fw/services/normal/blob_db/ios_notif_pref_db.h
+++ b/include/pbl/services/blob_db/ios_notif_pref_db.h
@@ -1,25 +1,12 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "api.h"
-#include "services/normal/timeline/attribute.h"
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/attribute.h"
+#include "pbl/services/timeline/item.h"
#include "system/status_codes.h"
@@ -70,6 +57,8 @@ status_t ios_notif_pref_db_delete(const uint8_t *key, int key_len);
status_t ios_notif_pref_db_flush(void);
+status_t ios_notif_pref_db_compact(void);
+
status_t ios_notif_pref_db_is_dirty(bool *is_dirty_out);
BlobDBDirtyItem* ios_notif_pref_db_get_dirty_list(void);
diff --git a/include/pbl/services/blob_db/notif_db.h b/include/pbl/services/blob_db/notif_db.h
new file mode 100644
index 0000000000..bf68f28948
--- /dev/null
+++ b/include/pbl/services/blob_db/notif_db.h
@@ -0,0 +1,23 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "system/status_codes.h"
+#include "pbl/services/timeline/item.h"
+
+///////////////////////////////////////////
+// BlobDB Boilerplate (see blob_db/api.h)
+///////////////////////////////////////////
+
+void notif_db_init(void);
+
+status_t notif_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int notif_db_get_len(const uint8_t *key, int key_len);
+
+status_t notif_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t notif_db_delete(const uint8_t *key, int key_len);
+
+status_t notif_db_flush(void);
diff --git a/src/fw/services/normal/blob_db/pin_db.h b/include/pbl/services/blob_db/pin_db.h
similarity index 76%
rename from src/fw/services/normal/blob_db/pin_db.h
rename to include/pbl/services/blob_db/pin_db.h
index 9b9777e196..e0d9afaff8 100644
--- a/src/fw/services/normal/blob_db/pin_db.h
+++ b/include/pbl/services/blob_db/pin_db.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -20,7 +7,7 @@
#include "timeline_item_storage.h"
#include "system/status_codes.h"
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/item.h"
#include "util/iterator.h"
#include
@@ -71,6 +58,8 @@ status_t pin_db_delete(const uint8_t *key, int key_len);
status_t pin_db_flush(void);
+status_t pin_db_compact(void);
+
status_t pin_db_is_dirty(bool *is_dirty_out);
BlobDBDirtyItem* pin_db_get_dirty_list(void);
diff --git a/include/pbl/services/blob_db/prefs_db.h b/include/pbl/services/blob_db/prefs_db.h
new file mode 100644
index 0000000000..0c7c5252a7
--- /dev/null
+++ b/include/pbl/services/blob_db/prefs_db.h
@@ -0,0 +1,22 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "system/status_codes.h"
+
+///////////////////////////////////////////
+// BlobDB Boilerplate (see blob_db/api.h)
+///////////////////////////////////////////
+
+void prefs_db_init(void);
+
+status_t prefs_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int prefs_db_get_len(const uint8_t *key, int key_len);
+
+status_t prefs_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t prefs_db_delete(const uint8_t *key, int key_len);
+
+status_t prefs_db_flush(void);
diff --git a/src/fw/services/normal/blob_db/reminder_db.h b/include/pbl/services/blob_db/reminder_db.h
similarity index 83%
rename from src/fw/services/normal/blob_db/reminder_db.h
rename to include/pbl/services/blob_db/reminder_db.h
index 9457ed75be..cd5307297f 100644
--- a/src/fw/services/normal/blob_db/reminder_db.h
+++ b/include/pbl/services/blob_db/reminder_db.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -20,7 +7,7 @@
#include "timeline_item_storage.h"
#include "system/status_codes.h"
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/item.h"
// reminderdb specific
@@ -86,6 +73,8 @@ status_t reminder_db_delete(const uint8_t *key, int key_len);
status_t reminder_db_flush(void);
+status_t reminder_db_compact(void);
+
status_t reminder_db_is_dirty(bool *is_dirty_out);
BlobDBDirtyItem* reminder_db_get_dirty_list(void);
diff --git a/include/pbl/services/blob_db/settings_blob_db.h b/include/pbl/services/blob_db/settings_blob_db.h
new file mode 100644
index 0000000000..4b1446ce99
--- /dev/null
+++ b/include/pbl/services/blob_db/settings_blob_db.h
@@ -0,0 +1,61 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "api.h"
+
+//! Settings BlobDB - wraps SettingsFile to provide BlobDB interface
+//!
+//! This allows settings to sync using the existing BlobDB protocol,
+//! so the mobile app can reuse its BlobDB sync implementation.
+//!
+//! Only whitelisted settings are synced (see settings_blob_db.c for list).
+
+//! Initialize the settings BlobDB
+void settings_blob_db_init(void);
+
+//! Insert/update a setting
+status_t settings_blob_db_insert(const uint8_t *key, int key_len,
+ const uint8_t *val, int val_len);
+
+//! Get the length of a setting value
+int settings_blob_db_get_len(const uint8_t *key, int key_len);
+
+//! Read a setting value
+status_t settings_blob_db_read(const uint8_t *key, int key_len,
+ uint8_t *val_out, int val_len);
+
+//! Delete a setting
+status_t settings_blob_db_delete(const uint8_t *key, int key_len);
+
+//! Get list of dirty (unsynced) settings
+BlobDBDirtyItem *settings_blob_db_get_dirty_list(void);
+
+//! Mark a setting as synced
+status_t settings_blob_db_mark_synced(const uint8_t *key, int key_len);
+
+//! Check if there are dirty settings
+status_t settings_blob_db_is_dirty(bool *is_dirty_out);
+
+//! Flush settings to disk
+status_t settings_blob_db_flush(void);
+
+//! Mark all whitelisted settings as dirty (unsynced)
+//! This triggers a full sync of all settings to the phone
+status_t settings_blob_db_mark_all_dirty(void);
+
+//! Insert/update a setting only if the incoming timestamp is newer or equal
+//! @param key the setting key
+//! @param key_len length of the key
+//! @param val the value to insert
+//! @param val_len length of the value
+//! @param timestamp the timestamp of the incoming data
+//! @return S_SUCCESS if inserted, E_INVALID_OPERATION if watch data is newer (stale)
+status_t settings_blob_db_insert_with_timestamp(const uint8_t *key, int key_len,
+ const uint8_t *val, int val_len,
+ time_t timestamp);
+
+//! Check if the connected phone supports Settings BlobDB sync
+//! @return true if phone advertises settings_sync_support capability
+bool settings_blob_db_phone_supports_sync(void);
diff --git a/include/pbl/services/blob_db/sync.h b/include/pbl/services/blob_db/sync.h
new file mode 100644
index 0000000000..e0d285eda9
--- /dev/null
+++ b/include/pbl/services/blob_db/sync.h
@@ -0,0 +1,54 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "api.h"
+#include "endpoint.h"
+
+#include "pbl/services/regular_timer.h"
+
+typedef enum {
+ BlobDBSyncSessionStateIdle = 0,
+ BlobDBSyncSessionStateWaitingForAck = 1,
+} BlobDBSyncSessionState;
+
+typedef enum {
+ BlobDBSyncSessionTypeDB,
+ BlobDBSyncSessionTypeRecord,
+} BlobDBSyncSessionType;
+
+typedef struct {
+ ListNode node;
+ BlobDBSyncSessionState state;
+ BlobDBId db_id;
+ BlobDBDirtyItem *dirty_list;
+ RegularTimerInfo timeout_timer;
+ RegularTimerInfo abandon_timer;
+ BlobDBToken current_token;
+ BlobDBSyncSessionType session_type;
+} BlobDBSyncSession;
+
+//! Start sync-ing a blobdb.
+//! @param db_id the BlobDBId of the database to sync
+status_t blob_db_sync_db(BlobDBId db_id);
+
+//! Start sync-ing a key within a blobdb.
+//! @param db_id the BlobDBId of the database to sync
+//! @param key the key to sync
+//! @param key_len the length of the key to sync
+status_t blob_db_sync_record(BlobDBId db_id, const void *key, int key_len, time_t last_updated);
+
+//! Get the sync session for a given ID. Will NOT return sessions for individual records
+//! returns NULL if no sync is in progress
+BlobDBSyncSession *blob_db_sync_get_session_for_id(BlobDBId db_id);
+
+//! Get the sync session currently waiting for a response with the given token
+//! return NULL if no sync is in progress
+BlobDBSyncSession *blob_db_sync_get_session_for_token(BlobDBToken token);
+
+//! Mark current item as synced and sync the next one
+void blob_db_sync_next(BlobDBSyncSession *session);
+
+//! Cancel the sync in progress. Pending items will be synced next time.
+void blob_db_sync_cancel(BlobDBSyncSession *session);
diff --git a/include/pbl/services/blob_db/sync_util.h b/include/pbl/services/blob_db/sync_util.h
new file mode 100644
index 0000000000..8dafda18c5
--- /dev/null
+++ b/include/pbl/services/blob_db/sync_util.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/blob_db/api.h"
+#include "pbl/services/settings/settings_file.h"
+
+// Caution: CommonTimelineItemHeader .flags & .status are stored inverted and not auto-restored
+// by the underlying db API. If .flags or .status is used from a CommonTimelineItemHeader below,
+// be very careful.
+
+//! A settings file each callback which checks if the there are dirty records in the file
+//! @param context The address of a bool which will get set
+bool sync_util_is_dirty_cb(SettingsFile *file, SettingsRecordInfo *info, void *context);
+
+//! A settings file each callback which builds a BlobDBDirtyItem list
+//! @param context The address of an empty dirty list which will get built
+bool sync_util_build_dirty_list_cb(SettingsFile *file, SettingsRecordInfo *info, void *context);
diff --git a/src/fw/services/normal/blob_db/timeline_item_storage.h b/include/pbl/services/blob_db/timeline_item_storage.h
similarity index 79%
rename from src/fw/services/normal/blob_db/timeline_item_storage.h
rename to include/pbl/services/blob_db/timeline_item_storage.h
index 887ea9bb14..9d646a99f1 100644
--- a/src/fw/services/normal/blob_db/timeline_item_storage.h
+++ b/include/pbl/services/blob_db/timeline_item_storage.h
@@ -1,26 +1,13 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "util/uuid.h"
-#include "services/common/regular_timer.h"
-#include "services/normal/settings/settings_file.h"
+#include "pbl/services/regular_timer.h"
+#include "pbl/services/settings/settings_file.h"
#include "os/mutex.h"
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/item.h"
typedef struct {
SettingsFile file;
@@ -44,6 +31,9 @@ void timeline_item_storage_init(TimelineItemStorage *storage,
void timeline_item_storage_deinit(TimelineItemStorage *storage);
+//! Compact and shrink the underlying settings file.
+status_t timeline_item_storage_compact(TimelineItemStorage *storage);
+
bool timeline_item_storage_exists_with_parent(TimelineItemStorage *storage, const Uuid *parent_id);
status_t timeline_item_storage_flush(TimelineItemStorage *storage);
diff --git a/include/pbl/services/blob_db/util.h b/include/pbl/services/blob_db/util.h
new file mode 100644
index 0000000000..72c2ad40ac
--- /dev/null
+++ b/include/pbl/services/blob_db/util.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "api.h"
+
+void blob_db_util_free_dirty_list(BlobDBDirtyItem *dirty_list);
diff --git a/include/pbl/services/blob_db/watch_app_prefs_db.h b/include/pbl/services/blob_db/watch_app_prefs_db.h
new file mode 100644
index 0000000000..4b9628a13d
--- /dev/null
+++ b/include/pbl/services/blob_db/watch_app_prefs_db.h
@@ -0,0 +1,47 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "apps/system/send_text/prefs.h"
+#include "apps/system/reminders/reminder_prefs.h"
+#include "pbl/services/weather/weather_service_private.h"
+#include "system/status_codes.h"
+
+// Reads the Send Text app prefs from the db
+// @return Pointer to new \ref SerializedSendTextPrefs, NULL on failure
+// @note task_free() must be called on the pointer when done with the memory
+SerializedSendTextPrefs *watch_app_prefs_get_send_text(void);
+
+// Reads the Weather app location ordering from the db
+// @return pointer to new \ref SerializedWeatherAppPrefs, NULL on failure
+// @note use weather_app_prefs_destroy_weather() to free memory allocated by this method
+SerializedWeatherAppPrefs *watch_app_prefs_get_weather(void);
+
+// Reads the Reminder App prefs from the db
+// @return pointer to new \ref SerializedRemindersAppPrefs, NULL on failure
+// @note task_free() must be called on the pointer when done with the memory
+SerializedReminderAppPrefs *watch_app_prefs_get_reminder(void);
+
+// Frees memory allocated from watch_app_prefs_get_weather()
+void watch_app_prefs_destroy_weather(SerializedWeatherAppPrefs *prefs);
+
+///////////////////////////////////////////
+// BlobDB Boilerplate (see blob_db/api.h)
+///////////////////////////////////////////
+
+void watch_app_prefs_db_init(void);
+
+status_t watch_app_prefs_db_insert(const uint8_t *key, int key_len, const uint8_t *val,
+ int val_len);
+
+int watch_app_prefs_db_get_len(const uint8_t *key, int key_len);
+
+status_t watch_app_prefs_db_read(const uint8_t *key, int key_len, uint8_t *val_out,
+ int val_out_len);
+
+status_t watch_app_prefs_db_delete(const uint8_t *key, int key_len);
+
+status_t watch_app_prefs_db_flush(void);
+
+status_t watch_app_prefs_db_compact(void);
diff --git a/include/pbl/services/blob_db/weather_db.h b/include/pbl/services/blob_db/weather_db.h
new file mode 100644
index 0000000000..7a26b746e2
--- /dev/null
+++ b/include/pbl/services/blob_db/weather_db.h
@@ -0,0 +1,68 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/weather/weather_service.h"
+#include "pbl/services/weather/weather_types.h"
+#include "system/status_codes.h"
+#include "util/attributes.h"
+#include "util/pstring.h"
+#include "util/time/time.h"
+#include "util/uuid.h"
+
+#include
+
+#define WEATHER_DB_CURRENT_VERSION (3)
+
+typedef Uuid WeatherDBKey;
+
+typedef struct PACKED {
+ uint8_t version;
+ int16_t current_temp;
+ WeatherType current_weather_type;
+ int16_t today_high_temp;
+ int16_t today_low_temp;
+ WeatherType tomorrow_weather_type;
+ int16_t tomorrow_high_temp;
+ int16_t tomorrow_low_temp;
+ time_t last_update_time_utc;
+ bool is_current_location;
+ SerializedArray pstring16s;
+} WeatherDBEntry;
+
+typedef enum WeatherDbStringIndex {
+ WeatherDbStringIndex_LocationName,
+ WeatherDbStringIndex_ShortPhrase,
+ WeatherDbStringIndexCount,
+} WeatherDbStringIndex;
+
+#define MIN_ENTRY_SIZE (sizeof(WeatherDBEntry))
+#define MAX_ENTRY_SIZE (MIN_ENTRY_SIZE + \
+ WEATHER_SERVICE_MAX_WEATHER_LOCATION_BUFFER_SIZE + \
+ WEATHER_SERVICE_MAX_SHORT_PHRASE_BUFFER_SIZE)
+
+// Memory ownership: pointer to key and entry must not be saved, as they become invalid after
+// the callback finishes
+typedef void (*WeatherDBIteratorCallback)(WeatherDBKey *key, WeatherDBEntry *entry, void *context);
+
+// ------------------------------------------------------------------------------------
+// WeatherDB functions
+status_t weather_db_for_each(WeatherDBIteratorCallback cb, void *context);
+
+// ------------------------------------------------------------------------------------
+// BlobDB Implementation
+
+void weather_db_init(void);
+
+status_t weather_db_flush(void);
+
+status_t weather_db_compact(void);
+
+status_t weather_db_insert(const uint8_t *key, int key_len, const uint8_t *val, int val_len);
+
+int weather_db_get_len(const uint8_t *key, int key_len);
+
+status_t weather_db_read(const uint8_t *key, int key_len, uint8_t *val_out, int val_out_len);
+
+status_t weather_db_delete(const uint8_t *key, int key_len);
diff --git a/include/pbl/services/bluetooth/ble_bas.h b/include/pbl/services/bluetooth/ble_bas.h
new file mode 100644
index 0000000000..638974dc3f
--- /dev/null
+++ b/include/pbl/services/bluetooth/ble_bas.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2025 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+void ble_bas_init(void);
+
+void ble_bas_deinit(void);
\ No newline at end of file
diff --git a/include/pbl/services/bluetooth/ble_hrm.h b/include/pbl/services/bluetooth/ble_hrm.h
new file mode 100644
index 0000000000..7bb785f040
--- /dev/null
+++ b/include/pbl/services/bluetooth/ble_hrm.h
@@ -0,0 +1,37 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "util/time/time.h"
+
+#define BLE_HRM_REMINDER_POPUP_DELAY_MINS (2 * MINUTES_PER_HOUR)
+
+typedef struct GAPLEConnection GAPLEConnection;
+
+typedef struct BLEHRMSharingRequest BLEHRMSharingRequest;
+
+//! Called by the ble_hrm_sharing_popup upon the user's action to grant or decline the sharing.
+//! @note Also cleans up the sharing_request object.
+void ble_hrm_handle_sharing_request_response(bool is_granted,
+ BLEHRMSharingRequest *sharing_request);
+
+bool ble_hrm_is_supported_and_enabled(void);
+
+bool ble_hrm_is_sharing_to_connection(const GAPLEConnection *connection);
+
+bool ble_hrm_is_sharing(void);
+
+void ble_hrm_revoke_sharing_permission_for_connection(GAPLEConnection *connection);
+
+void ble_hrm_revoke_all(void);
+
+void ble_hrm_handle_activity_prefs_heart_rate_is_enabled(bool is_enabled);
+
+void ble_hrm_handle_disconnection(GAPLEConnection *connection);
+
+void ble_hrm_init(void);
+
+void ble_hrm_deinit(void);
diff --git a/include/pbl/services/bluetooth/bluetooth_ctl.h b/include/pbl/services/bluetooth/bluetooth_ctl.h
new file mode 100644
index 0000000000..7e05e3e0da
--- /dev/null
+++ b/include/pbl/services/bluetooth/bluetooth_ctl.h
@@ -0,0 +1,39 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef enum {
+ BtCtlModeOverrideNone,
+ BtCtlModeOverrideStop,
+ BtCtlModeOverrideRun
+} BtCtlModeOverride;
+
+void bt_ctl_init(void);
+
+//! returns the airplane mode state
+bool bt_ctl_is_airplane_mode_on(void);
+
+//! Returns whether the bluetooth stack is supposed to be up and running (but might not because it's
+//! still starting or in the middle of resetting).
+bool bt_ctl_is_bluetooth_active(void);
+
+//! Returns whether the bluetooth stack is up and running or not.
+bool bt_ctl_is_bluetooth_running(void);
+
+// The following three functions are used for setting the flags that define the state of
+// the bluetooth stack.
+
+//! Sets the airplane mode flag. The flag is persisted across reboots
+void bt_ctl_set_airplane_mode_async(bool enabled);
+
+//! Sets enable flag (used by the runlevel system).
+void bt_ctl_set_enabled(bool enabled);
+
+//! Sets the override mode used to stop and start the bluetooth independent of the airplane mode.
+void bt_ctl_set_override_mode(BtCtlModeOverride override);
+
+//! Reset bluetoosh using sequential calls to comm_stop() and comm_start()
+void bt_ctl_reset_bluetooth(void);
diff --git a/include/pbl/services/bluetooth/bluetooth_persistent_storage.h b/include/pbl/services/bluetooth/bluetooth_persistent_storage.h
new file mode 100644
index 0000000000..dd8fe4a57c
--- /dev/null
+++ b/include/pbl/services/bluetooth/bluetooth_persistent_storage.h
@@ -0,0 +1,165 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/comm_session/session_remote_version.h"
+
+#include
+#include
+#include
+#include
+
+//! @file bluetooth_persistent_storage.h
+//! Future file-based database for Bluetooth related credentials, cached data, etc.
+//! The idea is to replace the deprecated, registry-based "remote_prefs.c" and "known_device_list.c"
+//! For now this module contains temporary implementations that use the legacy registry.
+
+typedef enum {
+ BtPersistBondingOpInvalid = -1,
+ BtPersistBondingOpDidAdd,
+ BtPersistBondingOpDidChange,
+ BtPersistBondingOpWillDelete,
+} BtPersistBondingOp;
+
+typedef enum {
+ BtPersistBondingTypeBTClassic,
+ BtPersistBondingTypeBLE,
+ BtPersistBondingNumTypes
+} BtPersistBondingType;
+
+
+//! Signature of function that handles changes in the pairing database
+typedef void (*BtPersistBondingChangeHandler)(BTBondingID affected_bonding,
+ BtPersistBondingOp operation);
+
+typedef void (*BtPersistBondingDBEachBLE)(BTDeviceInternal *device, SMIdentityResolvingKey *irk,
+ const char *name, BTBondingID *id, void *context);
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//! BLE Pairing Info
+
+bool bt_persistent_storage_has_pinned_ble_pairings(void);
+
+bool bt_persistent_storage_set_ble_pinned_address(const BTDeviceAddress *address);
+
+bool bt_persistent_storage_get_ble_pinned_address(BTDeviceAddress *address_out);
+
+BTBondingID bt_persistent_storage_store_ble_pairing(const SMPairingInfo *pairing_info,
+ bool is_gateway, const char *device_name,
+ bool requires_address_pinning,
+ uint8_t flags);
+
+bool bt_persistent_storage_update_ble_device_name(BTBondingID bonding, const char *device_name);
+
+void bt_persistent_storage_delete_ble_pairing_by_id(BTBondingID);
+
+void bt_persistent_storage_delete_ble_pairing_by_addr(const BTDeviceInternal *device);
+
+bool bt_persistent_storage_get_ble_pairing_by_id(BTBondingID bonding,
+ SMIdentityResolvingKey *IRK_out,
+ BTDeviceInternal *device_out,
+ char *name_out);
+
+bool bt_persistent_storage_get_ble_pairing_by_addr(const BTDeviceInternal *device,
+ SMIdentityResolvingKey *IRK_out,
+ char name_out[BT_DEVICE_NAME_BUFFER_SIZE]);
+
+//! Returns the first ANCS supported bonding that is found
+//! The case of having multiple supported ANCS bondings isn't handled well yet.
+//! When this happens this could easily be changed to a for_each_ancs_supported_bonding(cb)
+BTBondingID bt_persistent_storage_get_ble_ancs_bonding(void);
+
+//! Returns true if the bondings is BLE and supports ANCS
+bool bt_persistent_storage_is_ble_ancs_bonding(BTBondingID bonding);
+
+//! Returns true if there exists a BLE bonding which supports ANCS
+bool bt_persistent_storage_has_ble_ancs_bonding(void);
+
+//! Returns true if the active gateway uses BLE
+//! [PG]: This will currently always return false until PPoGATT is supported
+bool bt_persistent_storage_has_active_ble_gateway_bonding(void);
+
+//! Runs the callback for each BLE pairing
+//! The callback is NOT allowed to aquire the bt_lock() (or we could deadlock).
+void bt_persistent_storage_for_each_ble_pairing(BtPersistBondingDBEachBLE cb, void *context);
+
+//! Registers all the existing BLE bondings with the BT driver lib.
+void bt_persistent_storage_register_existing_ble_bondings(void);
+
+BTCCCDID bt_persistent_storage_store_cccd(const BleCCCD *cccd);
+
+bool bt_persistent_storage_delete_cccd(const BTDeviceInternal *peer, uint16_t chr_val_handle);
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//! Local Device Info
+
+//! Updates the active gateway (the gateway which implements PP)
+//! This bonding is used for BT Classic reconnection as well
+//! @param bonding The desired active gateway
+void bt_persistent_storage_set_active_gateway(BTBondingID bonding);
+
+//! Returns false if no active gateway exists, true if one does exist
+//! bonding_out and type_out are only valid when this function returns true;
+bool bt_persistent_storage_get_active_gateway(BTBondingID *bonding_out,
+ BtPersistBondingType *type_out);
+
+//! Returns true when the active gateway is changed until a sync happens
+bool bt_persistent_storage_is_unfaithful(void);
+
+//! Marks the device as being unfaithful
+void bt_persistent_storage_set_unfaithful(bool is_unfaithful);
+
+//! Copies the BLE Encryption Root (ER) or Identity Root (IR) keys out of storage
+//! @param key_out Storage into which ER or IR should be copied.
+//! @param key_type The type of key to copy
+//! @return true if ER and IR are copied, false if there are no keys have been found to copy.
+bool bt_persistent_storage_get_root_key(SMRootKeyType key_type, SM128BitKey *key_out);
+
+//! Stores new BLE Encryption Root (ER) and Identity Root (IR) keys
+void bt_persistent_storage_set_root_keys(SM128BitKey *keys_in);
+
+//! @param local_device_name_out Storage for the local device name.
+//! @param max_size Size of the local_device_name_out buffer
+//! @return true if there is a valid local device name stored, otherwise false (a zero-length string
+bool bt_persistent_storage_get_local_device_name(char *local_device_name_out, size_t max_size);
+
+//! Stores the customized local device name
+//! @param local_device_name The device name to store
+//! @param size The size of the string
+void bt_persistent_storage_set_local_device_name(char *local_device_name, size_t max_size);
+
+//! Retrieve the airplane mode setting
+//! @return the stored airplane mode flag
+bool bt_persistent_storage_get_airplane_mode_enabled(void);
+
+//! Store the airplane mode setting
+//! @param the airplane mode state to be saved
+void bt_persistent_storage_set_airplane_mode_enabled(bool enable);
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//! Remote Device Info
+
+//! Retrieve the most recent system session capabilities
+//! @param capabilities_out Storage for system session capabilities
+//! @note It's preferable to use \ref comm_session_get_capabilities when possible
+void bt_persistent_storage_get_cached_system_capabilities(
+ PebbleProtocolCapabilities *capabilities_out);
+
+//! Store the most recent system session capabilities
+//! @param capabilities The capability flags to be saved (cache will be cleared if NULL)
+void bt_persistent_storage_set_cached_system_capabilities(
+ const PebbleProtocolCapabilities *capabilities);
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//! Common
+
+void bt_persistent_storage_init(void);
+
+//! This will not delete the local device info, only pairings
+void bt_persistent_storage_delete_all_pairings(void);
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+//! Unit testing
+int bt_persistent_storage_get_raw_data(const void *key, size_t key_len,
+ void *data_out, size_t buf_len);
diff --git a/include/pbl/services/bluetooth/bluetooth_persistent_storage_debug.h b/include/pbl/services/bluetooth/bluetooth_persistent_storage_debug.h
new file mode 100644
index 0000000000..a55419c514
--- /dev/null
+++ b/include/pbl/services/bluetooth/bluetooth_persistent_storage_debug.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include
+
+#define DISPLAY_BUF_LEN 160
+
+void bluetooth_persistent_storage_debug_dump_ble_pairing_info(
+ char *display_buf, const SMPairingInfo *info);
+
+void bluetooth_persistent_storage_debug_dump_classic_pairing_info(
+ char *display_buf, BTDeviceAddress *addr, char *device_name, SM128BitKey *link_key,
+ uint8_t platform_bits);
+
+void bluetooth_persistent_storage_debug_dump_root_keys(SM128BitKey *irk, SM128BitKey *erk);
diff --git a/src/fw/services/normal/bluetooth/bluetooth_persistent_storage_v2_impl.h b/include/pbl/services/bluetooth/bluetooth_persistent_storage_v2_impl.h
similarity index 83%
rename from src/fw/services/normal/bluetooth/bluetooth_persistent_storage_v2_impl.h
rename to include/pbl/services/bluetooth/bluetooth_persistent_storage_v2_impl.h
index 3081011d96..fad0a841db 100644
--- a/src/fw/services/normal/bluetooth/bluetooth_persistent_storage_v2_impl.h
+++ b/include/pbl/services/bluetooth/bluetooth_persistent_storage_v2_impl.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/bluetooth/dis.h b/include/pbl/services/bluetooth/dis.h
new file mode 100644
index 0000000000..1168c300b2
--- /dev/null
+++ b/include/pbl/services/bluetooth/dis.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+typedef struct DisInfo DisInfo;
+
+void dis_get_info(DisInfo *info);
diff --git a/include/pbl/services/bluetooth/local_addr.h b/include/pbl/services/bluetooth/local_addr.h
new file mode 100644
index 0000000000..261e6c8744
--- /dev/null
+++ b/include/pbl/services/bluetooth/local_addr.h
@@ -0,0 +1,29 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/bluetooth/bluetooth_persistent_storage.h"
+
+typedef struct BTDeviceAddress BTDeviceAddress;
+
+//! Pauses cycling of local Private Resolvable Address (ref counted).
+//! As long as the cycling is paused, the address that is used "on air" will be stable for the
+//! duration that the BT stack is up (so the address can be expected to have changed after rebooting
+//! or resetting the stack).
+//! In case the local address is currently pinned, this function will be a no-op.
+void bt_local_addr_pause_cycling(void);
+
+//! Resumes cycling of local Private Resolvable Address (ref counted).
+//! In case the local address is currently pinned, this function will be a no-op.
+void bt_local_addr_resume_cycling(void);
+
+//! Called by BT driver to indicate what the local address was that was used during the pairing
+//! and pinning was requested. See comment in the implementation for more details.
+void bt_local_addr_pin(const BTDeviceAddress *addr);
+
+//! Handler for bonding changes (deletions primarily).
+void bt_local_addr_handle_bonding_change(BTBondingID bonding, BtPersistBondingOp op);
+
+//! Called during the BT stack initialization.
+void bt_local_addr_init(void);
diff --git a/include/pbl/services/bluetooth/local_id.h b/include/pbl/services/bluetooth/local_id.h
new file mode 100644
index 0000000000..0b164ed7b4
--- /dev/null
+++ b/include/pbl/services/bluetooth/local_id.h
@@ -0,0 +1,34 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#include
+#include
+
+//! Called by bl_ctl right after the stack starts, to configure the local device name and address.
+void bt_local_id_configure_driver(void);
+
+//! Sets a new device name, overriding the existing (default) one.
+//! The name will be truncated to BT_DEVICE_NAME_BUFFER_SIZE - 1 characters.
+void bt_local_id_set_device_name(const char *device_name);
+
+//! Copies the name of the local device into the given buffer.
+//! @param is_le Only consumed if the device used is dual mode. If so,
+// this changes the name returned
+void bt_local_id_copy_device_name(char name_out[BT_DEVICE_NAME_BUFFER_SIZE], bool is_le);
+
+//! Copies the address of the local device.
+void bt_local_id_copy_address(BTDeviceAddress *addr_out);
+
+//! Copies a hex-formatted string representation ("0x000000000000") of the device address into the
+//! given buffer. The buffer should be at least BT_ADDR_FMT_BUFFER_SIZE_BYTES bytes in size to fit
+//! the address string.
+//! If there is no local address known, the string "Unknown" will be copied into the buffer.
+void bt_local_id_copy_address_hex_string(char addr_hex_str_out[BT_ADDR_FMT_BUFFER_SIZE_BYTES]);
+
+//! Copies a MAC-formatted string representation ("00:00:00:00:00:00") of the device address into
+//! the given buffer. The buffer should be at least BT_ADDR_FMT_BUFFER_SIZE_BYTES bytes in size to
+//! fit the address string.
+void bt_local_id_copy_address_mac_string(char addr_mac_str_out[BT_DEVICE_ADDRESS_FMT_BUFFER_SIZE]);
+
+//! Generates a BTDeviceAddress from the serial number of the watch
+void bt_local_id_generate_address_from_serial(BTDeviceAddress *addr_out);
diff --git a/include/pbl/services/bluetooth/pairability.h b/include/pbl/services/bluetooth/pairability.h
new file mode 100644
index 0000000000..d3065c0998
--- /dev/null
+++ b/include/pbl/services/bluetooth/pairability.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Reference counted request to allow us to be discovered and paired with over BLE.
+void bt_pairability_use(void);
+
+//! Reference counted request to allow us to be discovered and paired with over BLE.
+void bt_pairability_use_ble(void);
+
+//! Reference counted request to allow us to be discovered and paired with over BLE for a specific
+//! period, after which bt_pairability_release_ble will be called automatically.
+void bt_pairability_use_ble_for_period(uint16_t duration_secs);
+
+//! Reference counted request to disallow us to be discovered and paired with over BLE.
+void bt_pairability_release(void);
+
+//! Reference counted request to disallow us to be discovered and paired with over BLE.
+void bt_pairability_release_ble(void);
+
+//! Evaluates whether there are any bondings to gateways. If there are none, make the system
+//! discoverable and pairable.
+void bt_pairability_update_due_to_bonding_change(void);
+
+void bt_pairability_init(void);
diff --git a/include/pbl/services/bluetooth/pp_ble_control.h b/include/pbl/services/bluetooth/pp_ble_control.h
new file mode 100644
index 0000000000..55bb536806
--- /dev/null
+++ b/include/pbl/services/bluetooth/pp_ble_control.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/comm_session/session.h"
+
+void pp_ble_control_protocol_msg_callback(CommSession* session,
+ const uint8_t *data,
+ unsigned int length);
diff --git a/include/pbl/services/boot_splash.h b/include/pbl/services/boot_splash.h
new file mode 100644
index 0000000000..075a375e9e
--- /dev/null
+++ b/include/pbl/services/boot_splash.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Start the boot splash screen.
+//! On platforms with software-rendered splash (PBLBOOT), this shows
+//! an animated splash with a spinning indicator. On other platforms, this
+//! calls the display driver's splash screen function
+void boot_splash_start(void);
+
+//! Stop the boot splash screen.
+//! This should be called when the compositor is ready to take over the display.
+//! On platforms with animated splash, this stops the animation task.
+//! On other platforms, this is a no-op.
+void boot_splash_stop(void);
diff --git a/src/fw/services/common/clock.h b/include/pbl/services/clock.h
similarity index 85%
rename from src/fw/services/common/clock.h
rename to include/pbl/services/clock.h
index e26e0286c9..075010c5f9 100644
--- a/src/fw/services/common/clock.h
+++ b/include/pbl/services/clock.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -116,6 +103,25 @@ bool clock_timezone_source_is_manual(void);
//! false means the phone's timezone will be used
void clock_set_manual_timezone_source(bool manual);
+//! @internal
+//! Checks the time source. If the source is manual, the user must set the time from
+//! the settings menu, if the source is automatic the time will be set by the phone.
+//! @return true if time is set manually, false if the time is set by the phone
+bool clock_time_source_is_manual(void);
+
+//! @internal
+//! Sets the time source. If the source is manual, the user must set the time from
+//! the settings menu, if the source is automatic the time will be set by the phone.
+//! @param manual True means time is set manually on the watch,
+//! false means the phone's time will be used
+void clock_set_manual_time_source(bool manual);
+
+//! @internal
+//! Sends a request to the phone to send its current time.
+//! The phone should respond with a set UTC + timezone message (sub-command 0x03).
+//! Does nothing if there is no active system session (phone not connected).
+void clock_request_time_from_phone(void);
+
//! @internal
//! If timezone is set, copies the current timezone long name (e.g. America/Chicago)
//! to buffer region_name.
@@ -132,12 +138,15 @@ int16_t clock_get_timezone_region_id(void);
//! @param region_id the index of the selected timezone in terms of the timezone database
void clock_set_timezone_by_region_id(uint16_t region_id);
+//! @internal
+//! Sets the current UTC time and fires a time-change event.
+//! @param utc_time the new UTC epoch timestamp to set
+void clock_set_time(time_t utc_time);
+
//! Converts a (day, hour, minute) specification to a UTC timestamp occurring in the future
//! Always returns a timestamp for the next occurring instance,
//! example: specifying TODAY@14:30 when it is 14:40 will return a timestamp for 7 days from
//! now at 14:30
-//! @note This function does not support Daylight Saving Time (DST) changes, events scheduled
-//! during a DST change will be off by an hour.
//! @param day WeekDay day of week including support for specifying TODAY
//! @param hour hour specified in 24-hour format [0-23]
//! @param minute minute [0-59]
@@ -174,6 +183,11 @@ void clock_get_until_time_without_fulltime(char *buffer, int buf_size, time_t ti
//! Get the date in MM/DD format
size_t clock_get_date(char *buffer, int buf_size, time_t timestamp);
+//! Same as \ref clock_get_date, but takes a pre-computed `struct tm` instead of
+//! a `time_t`. Useful in tick handlers, where the framework already passes a
+//! `struct tm` and an extra `localtime_r` round-trip would be wasteful.
+size_t clock_get_date_tm(char *buffer, int buf_size, const struct tm *time_tm);
+
//! Get the day date in DD format
size_t clock_get_day_date(char *buffer, int buf_size, time_t timestamp);
diff --git a/include/pbl/services/comm_session/app_session_capabilities.h b/include/pbl/services/comm_session/app_session_capabilities.h
new file mode 100644
index 0000000000..e74005598e
--- /dev/null
+++ b/include/pbl/services/comm_session/app_session_capabilities.h
@@ -0,0 +1,18 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/comm_session/session.h"
+#include "util/uuid.h"
+
+//! @param capability The capability to check for.
+//! @returns True if the session for the current application supports the capability of interest.
+//! If the session is currently not connected, it will use cached data. If no cache exists
+//! and the session is not connected, false will be returned.
+bool comm_session_current_app_session_cache_has_capability(CommSessionCapability capability);
+
+//! Removes the cached app session capabilities for app with specified uuid.
+void comm_session_app_session_capabilities_evict(const Uuid *app_uuid);
+
+void comm_session_app_session_capabilities_init(void);
diff --git a/include/pbl/services/comm_session/default_kernel_sender.h b/include/pbl/services/comm_session/default_kernel_sender.h
new file mode 100644
index 0000000000..ecda82570b
--- /dev/null
+++ b/include/pbl/services/comm_session/default_kernel_sender.h
@@ -0,0 +1,6 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+void comm_default_kernel_sender_init(void);
diff --git a/include/pbl/services/comm_session/meta_endpoint.h b/include/pbl/services/comm_session/meta_endpoint.h
new file mode 100644
index 0000000000..aa9aac2d3f
--- /dev/null
+++ b/include/pbl/services/comm_session/meta_endpoint.h
@@ -0,0 +1,30 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/comm_session/session.h"
+#include "util/attributes.h"
+
+#include
+
+typedef enum {
+ MetaResponseCodeNoError = 0x0,
+ MetaResponseCodeCorruptedMessage = 0xd0,
+ MetaResponseCodeDisallowed = 0xdd,
+ MetaResponseCodeUnhandled = 0xdc,
+} MetaResponseCode;
+
+typedef struct MetaResponseInfo {
+ CommSession *session;
+ struct PACKED {
+ //! @see MetaResponseCode
+ uint8_t error_code;
+ uint16_t endpoint_id;
+ } payload;
+} MetaResponseInfo;
+
+//! Sends out a response for the "meta" endpoint, asynchronously on KernelBG.
+//! @note The endpoint_id must be set in Little Endian byte order. This function will take care
+//! of swapping it to the correct endianness.
+void meta_endpoint_send_response_async(const MetaResponseInfo *meta_response_info);
diff --git a/include/pbl/services/comm_session/protocol.h b/include/pbl/services/comm_session/protocol.h
new file mode 100644
index 0000000000..47daa8ed97
--- /dev/null
+++ b/include/pbl/services/comm_session/protocol.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+typedef struct PACKED {
+ uint16_t length;
+ uint16_t endpoint_id;
+} PebbleProtocolHeader;
+
+#define COMM_PRIVATE_MAX_INBOUND_PAYLOAD_SIZE 2044
+#define COMM_PUBLIC_MAX_INBOUND_PAYLOAD_SIZE 144
+// TODO: If we have memory to spare, let's crank this up to improve data spooling
+#define COMM_MAX_OUTBOUND_PAYLOAD_SIZE 656
diff --git a/src/fw/services/common/comm_session/session.h b/include/pbl/services/comm_session/session.h
similarity index 91%
rename from src/fw/services/common/comm_session/session.h
rename to include/pbl/services/comm_session/session.h
index 52fd0e3611..719f44a4ae 100644
--- a/src/fw/services/common/comm_session/session.h
+++ b/include/pbl/services/comm_session/session.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -59,6 +46,7 @@ typedef enum {
CommSessionRemindersAppSupport = 1 << 12,
CommSessionWorkoutAppSupport = 1 << 13,
CommSessionSmoothFwInstallProgressSupport = 1 << 14,
+ CommSessionSettingsSyncSupport = 1 << 23,
CommSessionOutOfRange
} CommSessionCapability;
diff --git a/include/pbl/services/comm_session/session_analytics.h b/include/pbl/services/comm_session/session_analytics.h
new file mode 100644
index 0000000000..229c133395
--- /dev/null
+++ b/include/pbl/services/comm_session/session_analytics.h
@@ -0,0 +1,31 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef struct CommSession CommSession;
+
+typedef enum {
+ CommSessionCloseReason_UnderlyingDisconnection = 0,
+ CommSessionCloseReason_ClosedRemotely = 1,
+ CommSessionCloseReason_ClosedLocally = 2,
+ CommSessionCloseReason_TransportSpecificBegin = 100,
+ CommSessionCloseReason_TransportSpecificEnd = 255,
+} CommSessionCloseReason;
+
+typedef enum {
+ CommSessionTransportType_PlainSPP = 0,
+ CommSessionTransportType_iAP = 1,
+ CommSessionTransportType_PPoGATT = 2,
+ CommSessionTransportType_QEMU = 3,
+ CommSessionTransportType_PULSE = 4,
+} CommSessionTransportType;
+
+//! Assumes bt_lock() is held by the caller.
+CommSessionTransportType comm_session_analytics_get_transport_type(CommSession *session);
+
+void comm_session_analytics_open_session(CommSession *session);
+
+void comm_session_analytics_close_session(CommSession *session, CommSessionCloseReason reason);
\ No newline at end of file
diff --git a/include/pbl/services/comm_session/session_internal.h b/include/pbl/services/comm_session/session_internal.h
new file mode 100644
index 0000000000..b23897c45c
--- /dev/null
+++ b/include/pbl/services/comm_session/session_internal.h
@@ -0,0 +1,49 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "drivers/rtc.h"
+
+#include "session_receive_router.h"
+#include "session_transport.h"
+
+#include "pbl/services/regular_timer.h"
+#include "util/list.h"
+
+#include
+
+typedef struct SessionSendQueueJob SessionSendQueueJob;
+
+//! Data structure representing a Pebble Protocol communication session.
+//! There can be multiple. For example, with the iAP transport, the Pebble app has a session and
+//! 3rd party apps share another separate session as well. With PPoGATT, the Pebble app has its own
+//! session, but each 3rd party app has its own session as well.
+typedef struct CommSession {
+ ListNode node;
+
+ //! The underlying transport responsible for actually sending and receiving the Pebble Protocol
+ //! data. This can be SPP, iAP (see ispp.c), PPoGATT (see ppogatt.c) or QEMU (qemu_transport.c).
+ Transport *transport;
+
+ //! Set of function pointers that the session uses to call back to the transport.
+ const TransportImplementation *transport_imp;
+
+ //! True if a Kernel BG callback has been scheduled to call transport_imp->send_next()
+ bool is_send_next_call_pending;
+
+ //! True if the session is a system session (connected to the Pebble mobile app).
+ TransportDestination destination;
+
+ // Extensions supported by the mobile endpoint, see
+ // https://pebbletechnology.atlassian.net/wiki/pages/viewpage.action?pageId=491698
+ CommSessionCapability protocol_capabilities;
+
+ //! The send queue of this session. See session_send_queue.c
+ SessionSendQueueJob *send_queue_head;
+
+ ReceiveRouter recv_router;
+
+ //! Absolute number of ticks since session opened.
+ RtcTicks open_ticks;
+} CommSession;
diff --git a/src/fw/services/common/comm_session/session_receive_router.h b/include/pbl/services/comm_session/session_receive_router.h
similarity index 87%
rename from src/fw/services/common/comm_session/session_receive_router.h
rename to include/pbl/services/comm_session/session_receive_router.h
index efce402139..56054d8796 100644
--- a/src/fw/services/common/comm_session/session_receive_router.h
+++ b/include/pbl/services/comm_session/session_receive_router.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/comm_session/protocol.h"
+#include "pbl/services/comm_session/protocol.h"
#include
#include
diff --git a/include/pbl/services/comm_session/session_remote_os.h b/include/pbl/services/comm_session/session_remote_os.h
new file mode 100644
index 0000000000..b35c2d10ee
--- /dev/null
+++ b/include/pbl/services/comm_session/session_remote_os.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+typedef enum {
+ RemoteBitmaskOS = 0x7, // bits 0 - 2
+} RemoteBitmask;
+
+typedef enum {
+ RemoteOSUnknown = 0,
+ RemoteOSiOS = 1,
+ RemoteOSAndroid = 2,
+ RemoteOSX = 3,
+ RemoteOSLinux = 4,
+ RemoteOSWindows = 5,
+} RemoteOS;
diff --git a/include/pbl/services/comm_session/session_remote_version.h b/include/pbl/services/comm_session/session_remote_version.h
new file mode 100644
index 0000000000..f069fa7d50
--- /dev/null
+++ b/include/pbl/services/comm_session/session_remote_version.h
@@ -0,0 +1,44 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+#include
+#include
+
+typedef struct CommSession CommSession;
+
+// Capabilities are a bitfield set by passing the capabilities character array in
+// system_versions.c. The corresponding mobile applications return an integer
+// field indicating which endpoints it has support for over the deprecated ones.
+typedef struct PACKED {
+ union {
+ struct PACKED {
+ bool run_state_support:1;
+ bool infinite_log_dumping_support:1;
+ bool extended_music_service:1;
+ bool extended_notification_service:1;
+ bool lang_pack_support:1;
+ bool app_message_8k_support:1;
+ bool activity_insights_support:1;
+ bool voice_api_support:1;
+ bool send_text_support:1;
+ bool notification_filtering_support:1;
+ bool unread_coredump_support:1;
+ bool weather_app_support:1;
+ bool reminders_app_support:1;
+ bool workout_app_support:1;
+ bool smooth_fw_install_progress_support:1;
+ bool custom_vibe_pattern_support:1;
+ uint8_t javascript_bytecode_version_appended: 1;
+ uint8_t more_padded_bits:4;
+ bool continue_fw_install_across_disconnect_support: 1;
+ bool blob_db_version_support: 1;
+ bool settings_sync_support: 1; // Phone supports Settings BlobDB sync
+ };
+ uint64_t flags;
+ };
+} PebbleProtocolCapabilities;
+
+void session_remote_version_start_requests(CommSession *session);
diff --git a/src/fw/services/common/comm_session/session_send_buffer.h b/include/pbl/services/comm_session/session_send_buffer.h
similarity index 82%
rename from src/fw/services/common/comm_session/session_send_buffer.h
rename to include/pbl/services/comm_session/session_send_buffer.h
index 9e017ac75d..67b1605308 100644
--- a/src/fw/services/common/comm_session/session_send_buffer.h
+++ b/include/pbl/services/comm_session/session_send_buffer.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/comm_session/session.h"
+#include "pbl/services/comm_session/session.h"
typedef struct SendBuffer SendBuffer;
diff --git a/src/fw/services/common/comm_session/session_send_queue.h b/include/pbl/services/comm_session/session_send_queue.h
similarity index 80%
rename from src/fw/services/common/comm_session/session_send_queue.h
rename to include/pbl/services/comm_session/session_send_queue.h
index 9da2a75756..3b3f14b2dc 100644
--- a/src/fw/services/common/comm_session/session_send_queue.h
+++ b/include/pbl/services/comm_session/session_send_queue.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/comm_session/session.h"
+#include "pbl/services/comm_session/session.h"
#include "util/list.h"
#include
diff --git a/src/fw/services/common/comm_session/session_transport.h b/include/pbl/services/comm_session/session_transport.h
similarity index 91%
rename from src/fw/services/common/comm_session/session_transport.h
rename to include/pbl/services/comm_session/session_transport.h
index 6906b8232f..9606cb1ea8 100644
--- a/src/fw/services/common/comm_session/session_transport.h
+++ b/include/pbl/services/comm_session/session_transport.h
@@ -1,23 +1,10 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/comm_session/session.h"
-#include "services/common/comm_session/session_analytics.h"
+#include "pbl/services/comm_session/session.h"
+#include "pbl/services/comm_session/session_analytics.h"
#include "util/uuid.h"
diff --git a/src/fw/services/common/compositor/compositor.h b/include/pbl/services/compositor/compositor.h
similarity index 86%
rename from src/fw/services/common/compositor/compositor.h
rename to include/pbl/services/compositor/compositor.h
index 88769b4367..41954b95ab 100644
--- a/src/fw/services/common/compositor/compositor.h
+++ b/include/pbl/services/compositor/compositor.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -133,3 +120,13 @@ void compositor_freeze(void);
//! Resuming allowing new frames to be pushed to the compositor, undoes the effects of
//! compositor_freeze.
void compositor_unfreeze(void);
+
+//! Copy app FB into the given region of the system framebuffer, scaling or centering the app
+//! framebuffer content in the destination as needed based on user preference.
+//! If the update_rect points off the edge of the screen, the region updated will be clipped as needed.
+//! If copy_relative_to_origin is false, update_rect will be copied/filled starting from the origin of the
+//! app framebuffer. If true, it is relative to the region being updated will be copied/filled.
+void compositor_scaled_app_fb_copy(const GRect update_rect, bool copy_relative_to_origin);
+
+//! Extended version of compositor_scaled_app_fb_copy which allows an Y offset for the source to be specified.
+void compositor_scaled_app_fb_copy_offset(const GRect update_rect, bool copy_relative_to_origin, int16_t offset_y);
diff --git a/include/pbl/services/compositor/compositor_display.h b/include/pbl/services/compositor/compositor_display.h
new file mode 100644
index 0000000000..1f48f81027
--- /dev/null
+++ b/include/pbl/services/compositor/compositor_display.h
@@ -0,0 +1,12 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! @file compositor_display.h
+//!
+//! This module handles copying the framebuffer content to the display driver.
+
+void compositor_display_update(void (*handle_update_complete_cb)(void));
+
+bool compositor_display_update_in_progress(void);
diff --git a/include/pbl/services/compositor/compositor_private.h b/include/pbl/services/compositor/compositor_private.h
new file mode 100644
index 0000000000..73daf2be27
--- /dev/null
+++ b/include/pbl/services/compositor/compositor_private.h
@@ -0,0 +1,22 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/graphics/graphics.h"
+
+//! @file compositor_private.h
+//!
+//! Useful helpful function to help out implementing compositor animations
+
+//! Trigger the app framebuffer to be copied to the system framebuffer
+void compositor_render_app(void);
+
+//! Trigger the modal window to be rendered to the system framebuffer
+void compositor_render_modal(void);
+
+//! A GPathDrawFilledCallback that can be used to fill pixels with the app's framebuffer
+void compositor_app_framebuffer_fill_callback(GContext *ctx, int16_t y,
+ Fixed_S16_3 x_range_begin, Fixed_S16_3 x_range_end,
+ Fixed_S16_3 delta_begin, Fixed_S16_3 delta_end,
+ void *user_data);
diff --git a/src/fw/services/common/compositor/compositor_transitions.h b/include/pbl/services/compositor/compositor_transitions.h
similarity index 78%
rename from src/fw/services/common/compositor/compositor_transitions.h
rename to include/pbl/services/compositor/compositor_transitions.h
index 77ea7221e1..33f4e05e6f 100644
--- a/src/fw/services/common/compositor/compositor_transitions.h
+++ b/include/pbl/services/compositor/compositor_transitions.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -21,16 +8,14 @@
#include "default/compositor_slide_transitions.h"
#include "default/compositor_shutter_transitions.h"
#include "legacy/compositor_app_slide_transitions.h"
-#if PLATFORM_SILK || PLATFORM_ASTERIX
+#if CONFIG_SCREEN_COLOR_DEPTH_BITS == 1
# include "legacy/compositor_modal_slide_transitions.h"
#else
# include "default/compositor_modal_transitions.h"
# include "default/compositor_port_hole_transitions.h"
# include "default/compositor_round_flip_transitions.h"
#endif
-#if CAPABILITY_HAS_TIMELINE_PEEK
#include "default/compositor_peek_transitions.h"
-#endif
#include "applib/graphics/gdraw_command_sequence.h"
diff --git a/include/pbl/services/compositor/default/compositor_dot_transitions.h b/include/pbl/services/compositor/default/compositor_dot_transitions.h
new file mode 100644
index 0000000000..d1ac4e244a
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_dot_transitions.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+// These numbers approximate the visuals shown in the videos from the design team
+#define STATIC_DOT_ANIMATION_DURATION_MS 233
+#define DOT_ANIMATION_STROKE_WIDTH 12
+
+void compositor_dot_transitions_collapsing_ring_animation_update(GContext *ctx,
+ uint32_t distance_normalized,
+ GColor outer_ring_color,
+ GColor inner_ring_color);
+
+const CompositorTransition* compositor_dot_transition_timeline_get(bool timeline_is_future,
+ bool timeline_is_destination);
+
+const CompositorTransition* compositor_dot_transition_app_fetch_get(void);
diff --git a/include/pbl/services/compositor/default/compositor_launcher_app_transitions.h b/include/pbl/services/compositor/default/compositor_launcher_app_transitions.h
new file mode 100644
index 0000000000..9bc7f49f4d
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_launcher_app_transitions.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+#include "apps/system/launcher/launcher.h"
+
+//! @file compositor_launcher_app_transitions.h
+//! Allows a user to create and configure compositor transition animations between the launcher
+//! and apps.
+
+//! @param app_is_destination Whether the animation should reflect the app as the destination
+//! @return \ref CompositorTransition for the resulting animation
+const CompositorTransition *compositor_launcher_app_transition_get(bool app_is_destination);
diff --git a/include/pbl/services/compositor/default/compositor_modal_transitions.h b/include/pbl/services/compositor/default/compositor_modal_transitions.h
new file mode 100644
index 0000000000..ca2dd3536b
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_modal_transitions.h
@@ -0,0 +1,13 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+//! @file compositor_modal_transitions.h
+//! Allows a user to create and configure compositor transition animations for modals.
+
+//! @param modal_is_destination Whether the animation should animate to the modal or not
+//! @return \ref CompositorTransition for the requested modal animation
+const CompositorTransition* compositor_modal_transition_to_modal_get(bool modal_is_destination);
diff --git a/include/pbl/services/compositor/default/compositor_peek_transitions.h b/include/pbl/services/compositor/default/compositor_peek_transitions.h
new file mode 100644
index 0000000000..c2b3232fe4
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_peek_transitions.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor_transitions.h"
+
+const CompositorTransition *compositor_peek_transition_timeline_get(void);
diff --git a/include/pbl/services/compositor/default/compositor_port_hole_transitions.h b/include/pbl/services/compositor/default/compositor_port_hole_transitions.h
new file mode 100644
index 0000000000..ce67f9ed6a
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_port_hole_transitions.h
@@ -0,0 +1,14 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+#define PORT_HOLE_TRANSITION_DURATION_MS (6 * ANIMATION_TARGET_FRAME_INTERVAL_MS)
+
+const CompositorTransition *compositor_port_hole_transition_app_get(
+ CompositorTransitionDirection direction);
+
+void compositor_port_hole_transition_draw_outer_ring(GContext *ctx, int16_t pixels,
+ GColor ring_color);
diff --git a/include/pbl/services/compositor/default/compositor_round_flip_transitions.h b/include/pbl/services/compositor/default/compositor_round_flip_transitions.h
new file mode 100644
index 0000000000..f8f3d4be05
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_round_flip_transitions.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+// Animation in design video lasts this many frames
+#define ROUND_FLIP_ANIMATION_DURATION_MS (6 * ANIMATION_TARGET_FRAME_INTERVAL_MS)
+
+void compositor_round_flip_transitions_flip_animation_update(GContext *ctx,
+ uint32_t distance_normalized,
+ CompositorTransitionDirection dir,
+ GColor flip_lid_color);
+
+const CompositorTransition *compositor_round_flip_transition_get(bool flip_to_the_right);
diff --git a/include/pbl/services/compositor/default/compositor_shutter_transitions.h b/include/pbl/services/compositor/default/compositor_shutter_transitions.h
new file mode 100644
index 0000000000..9f56c33d84
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_shutter_transitions.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+// The length of first "section" of the animation, where the old app is moved off of the screen.
+#define SHUTTER_TRANSITION_FIRST_DURATION_MS (2 * ANIMATION_TARGET_FRAME_INTERVAL_MS)
+// The length of second "section" of the animation, where the new app is moved in.
+#define SHUTTER_TRANSITION_SECOND_DURATION_MS (4 * ANIMATION_TARGET_FRAME_INTERVAL_MS)
+// Total length of the animation.
+#define SHUTTER_TRANSITION_DURATION_MS (SHUTTER_TRANSITION_FIRST_DURATION_MS + \
+ SHUTTER_TRANSITION_SECOND_DURATION_MS)
+
+const CompositorTransition *compositor_shutter_transition_get(
+ CompositorTransitionDirection direction, GColor color);
diff --git a/include/pbl/services/compositor/default/compositor_slide_transitions.h b/include/pbl/services/compositor/default/compositor_slide_transitions.h
new file mode 100644
index 0000000000..0d32dd14d0
--- /dev/null
+++ b/include/pbl/services/compositor/default/compositor_slide_transitions.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+const CompositorTransition *compositor_slide_transition_timeline_get(bool timeline_is_future,
+ bool timeline_is_destination,
+ bool timeline_is_empty);
diff --git a/include/pbl/services/compositor/legacy/compositor_app_slide_transitions.h b/include/pbl/services/compositor/legacy/compositor_app_slide_transitions.h
new file mode 100644
index 0000000000..7d31df3eff
--- /dev/null
+++ b/include/pbl/services/compositor/legacy/compositor_app_slide_transitions.h
@@ -0,0 +1,12 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+void compositor_app_slide_transitions_animation_update(GContext *ctx,
+ uint32_t distance_normalized,
+ CompositorTransitionDirection dir);
+
+const CompositorTransition *compositor_app_slide_transition_get(bool flip_to_the_right);
diff --git a/include/pbl/services/compositor/legacy/compositor_modal_slide_transitions.h b/include/pbl/services/compositor/legacy/compositor_modal_slide_transitions.h
new file mode 100644
index 0000000000..ca2dd3536b
--- /dev/null
+++ b/include/pbl/services/compositor/legacy/compositor_modal_slide_transitions.h
@@ -0,0 +1,13 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/compositor/compositor.h"
+
+//! @file compositor_modal_transitions.h
+//! Allows a user to create and configure compositor transition animations for modals.
+
+//! @param modal_is_destination Whether the animation should animate to the modal or not
+//! @return \ref CompositorTransition for the requested modal animation
+const CompositorTransition* compositor_modal_transition_to_modal_get(bool modal_is_destination);
diff --git a/include/pbl/services/compositor/screenshot_pp.h b/include/pbl/services/compositor/screenshot_pp.h
new file mode 100644
index 0000000000..af4e924c5f
--- /dev/null
+++ b/include/pbl/services/compositor/screenshot_pp.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include "pbl/services/comm_session/session.h"
+
+//! Callback for handling a screenshot request message from the client
+void screenshot_protocol_msg_callback(CommSession *session, const uint8_t* data, unsigned int length);
diff --git a/src/fw/services/normal/contacts/attributes_address.h b/include/pbl/services/contacts/attributes_address.h
similarity index 88%
rename from src/fw/services/normal/contacts/attributes_address.h
rename to include/pbl/services/contacts/attributes_address.h
index 5615feebdf..7b2f365b05 100644
--- a/src/fw/services/normal/contacts/attributes_address.h
+++ b/include/pbl/services/contacts/attributes_address.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/item.h"
#include
#include
diff --git a/include/pbl/services/contacts/contacts.h b/include/pbl/services/contacts/contacts.h
new file mode 100644
index 0000000000..d7b63475ab
--- /dev/null
+++ b/include/pbl/services/contacts/contacts.h
@@ -0,0 +1,23 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "attributes_address.h"
+
+#include "util/attributes.h"
+#include "util/uuid.h"
+
+typedef struct {
+ Uuid id;
+ uint32_t flags;
+ AttributeList attr_list;
+ AddressList addr_list;
+} Contact;
+
+//! Lookup a contact given its uuid. Will return NULL if no contact is found.
+//! The contact must be freed with contacts_free_contact().
+Contact* contacts_get_contact_by_uuid(const Uuid *uuid);
+
+//! Frees a contact
+void contacts_free_contact(Contact *contact);
diff --git a/include/pbl/services/cron.h b/include/pbl/services/cron.h
new file mode 100644
index 0000000000..69ed242f36
--- /dev/null
+++ b/include/pbl/services/cron.h
@@ -0,0 +1,35 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+
+//! @file cron.h
+//! Wall-clock based timer system. Designed for use in things such as alarms, calendar events, etc.
+//! Properly handles DST, etc.
+//! This file is for controlling the service itself. The actual job API is in
+
+//! Initialize the cron service.
+void cron_service_init(void);
+
+//! Adjust all cron jobs, as the wall clock has changed.
+//! This means DST and/or time zone may have changed!
+void cron_service_handle_clock_change(PebbleSetTimeEvent *set_time_info);
+
+#if UNITTEST
+// -----------------------------------------------------------------------------
+// For testing:
+
+//! Remove all jobs.
+void cron_clear_all_jobs(void);
+
+//! Clean up the cron service.
+void cron_service_deinit(void);
+
+//! The number of registered cron jobs.
+uint32_t cron_service_get_job_count(void);
+
+//! Run the cron timers if they've fired.
+void cron_service_wakeup(void);
+#endif
diff --git a/src/fw/services/normal/data_logging/data_logging_service.h b/include/pbl/services/data_logging/data_logging_service.h
similarity index 85%
rename from src/fw/services/normal/data_logging/data_logging_service.h
rename to include/pbl/services/data_logging/data_logging_service.h
index b647f125af..62b70e58cb 100644
--- a/src/fw/services/normal/data_logging/data_logging_service.h
+++ b/include/pbl/services/data_logging/data_logging_service.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -39,9 +26,8 @@ typedef enum {
DlsSystemTagActivityAccelSamples = 82,
DlsSystemTagActivitySession = 84,
DlsSystemTagProtobufLogSession = 85,
-#ifdef MEMFAULT
DlsSystemTagMemfaultChunksSession = 86,
-#endif
+ DlsSystemTagAnalyticsNativeHeartbeat = 87,
} DlsSystemTag;
//! Init the data logging service. Called by the system at boot time.
diff --git a/include/pbl/services/data_logging/dls_endpoint.h b/include/pbl/services/data_logging/dls_endpoint.h
new file mode 100644
index 0000000000..99f7a0919b
--- /dev/null
+++ b/include/pbl/services/data_logging/dls_endpoint.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "dls_private.h"
+
+#include
+
+void dls_endpoint_init(void);
+
+void dls_endpoint_close_session(uint8_t session_id);
+
+bool dls_endpoint_send_data(DataLoggingSession *logging_session, const uint8_t *data, unsigned int num_bytes);
+
+bool dls_endpoint_open_session(DataLoggingSession *logging_session);
+
diff --git a/src/fw/services/normal/data_logging/dls_list.h b/include/pbl/services/data_logging/dls_list.h
similarity index 82%
rename from src/fw/services/normal/data_logging/dls_list.h
rename to include/pbl/services/data_logging/dls_list.h
index 5d649243bf..5c80bc8bda 100644
--- a/src/fw/services/normal/data_logging/dls_list.h
+++ b/include/pbl/services/data_logging/dls_list.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/data_logging/dls_private.h b/include/pbl/services/data_logging/dls_private.h
similarity index 92%
rename from src/fw/services/normal/data_logging/dls_private.h
rename to include/pbl/services/data_logging/dls_private.h
index 71452b75b1..c2570f00ec 100644
--- a/src/fw/services/normal/data_logging/dls_private.h
+++ b/include/pbl/services/data_logging/dls_private.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -21,7 +8,7 @@
#include "flash_region/flash_region.h"
#include "kernel/pebble_tasks.h"
#include "os/mutex.h"
-#include "services/common/comm_session/protocol.h"
+#include "pbl/services/comm_session/protocol.h"
#include "system/hexdump.h"
#include "util/attributes.h"
#include "util/shared_circular_buffer.h"
diff --git a/src/fw/services/normal/data_logging/dls_storage.h b/include/pbl/services/data_logging/dls_storage.h
similarity index 76%
rename from src/fw/services/normal/data_logging/dls_storage.h
rename to include/pbl/services/data_logging/dls_storage.h
index 9f28c270e7..4eacdcb791 100644
--- a/src/fw/services/normal/data_logging/dls_storage.h
+++ b/include/pbl/services/data_logging/dls_storage.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/normal/data_logging/dls_private.h"
+#include "pbl/services/data_logging/dls_private.h"
//! @file dls_storage.h
//!
diff --git a/include/pbl/services/debounced_connection_service.h b/include/pbl/services/debounced_connection_service.h
new file mode 100644
index 0000000000..758277bec8
--- /dev/null
+++ b/include/pbl/services/debounced_connection_service.h
@@ -0,0 +1,13 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+#include
+
+void debounced_connection_service_init(void);
+
+bool debounced_connection_service_is_connected(void);
+
+void debounced_connection_service_handle_event(PebbleCommSessionEvent *e);
diff --git a/src/fw/services/common/ecompass.h b/include/pbl/services/ecompass.h
similarity index 83%
rename from src/fw/services/common/ecompass.h
rename to include/pbl/services/ecompass.h
index 0eb6e81e22..8f631ef88b 100644
--- a/src/fw/services/common/ecompass.h
+++ b/include/pbl/services/ecompass.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/battery/battery_monitor.h"
+#include "pbl/services/battery/battery_monitor.h"
#include
diff --git a/include/pbl/services/event_service.h b/include/pbl/services/event_service.h
new file mode 100644
index 0000000000..2b308a4567
--- /dev/null
+++ b/include/pbl/services/event_service.h
@@ -0,0 +1,37 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+#include "process_management/app_manager.h"
+
+typedef void (*EventServiceAddSubscriberCallback)(PebbleTask task);
+typedef void (*EventServiceRemoveSubscriberCallback)(PebbleTask task);
+
+//! Call once during system startup
+void event_service_system_init(void);
+
+//! Called from app task for each event type the app wants notifications for
+void event_service_init(PebbleEventType type, EventServiceAddSubscriberCallback start_cb,
+ EventServiceRemoveSubscriberCallback stop_cb);
+bool event_service_is_running(PebbleEventType event_type);
+void event_service_handle_event(PebbleEvent *e);
+
+//! Subscribe to an event. This can only be called from the Kernel Main task
+void event_service_subscribe_from_kernel_main(PebbleSubscriptionEvent *subscription);
+
+void event_service_handle_subscription(PebbleSubscriptionEvent *subscription);
+void event_service_clear_process_subscriptions(PebbleTask task);
+
+//! Claim a buffer. This means it won't automatically get cleaned up
+//! If you claim a buffer you must free it with event_service_free_claimed_buffer()
+void* event_service_claim_buffer(PebbleEvent *e);
+//! This function expects the pointer returned by event_service_claim_buffer
+void event_service_free_claimed_buffer(void *ref);
+
+//! Returns true if `buf` is a kernel-allocated buffer currently tracked by the
+//! event service (i.e. one that was attached to an in-flight PebbleEvent).
+//! Use this from syscalls that dereference an event's embedded data pointer to
+//! make sure the caller didn't fabricate it.
+bool event_service_is_known_buffer(const void *buf);
diff --git a/src/fw/services/common/evented_timer.h b/include/pbl/services/evented_timer.h
similarity index 75%
rename from src/fw/services/common/evented_timer.h
rename to include/pbl/services/evented_timer.h
index 3b61d9e5c3..41a41912b5 100644
--- a/src/fw/services/common/evented_timer.h
+++ b/include/pbl/services/evented_timer.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/filesystem/app_file.h b/include/pbl/services/filesystem/app_file.h
new file mode 100644
index 0000000000..2181c6ae9b
--- /dev/null
+++ b/include/pbl/services/filesystem/app_file.h
@@ -0,0 +1,48 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+//! Consistent naming of per-app files.
+//!
+//! All files which are specific to an app are named with a consistent scheme
+//! which identifies the files as belonging to the app. This is done by
+//! prefixing the filename with a string based on the AppInstallId. Filenames
+//! take the format printf("@%08x/%s", (uint32_t)app_id, suffix) to form a
+//! pseudo-directory structure.
+//!
+//! The prefix is fixed-length to make it simple to generate, parse and
+//! identify.
+#pragma once
+
+#include
+#include
+
+#include "process_management/app_install_types.h"
+
+// The suffix starts at offset 10 in the filename
+// '@' + "XXXXXXXX" + '/' : (1 + 8 + 1 = 10)
+#define APP_FILE_NAME_PREFIX_LENGTH (10)
+
+//! Make an app-file name from the given app_id and suffix string.
+//!
+//! @param suffix_len strlen(suffix)
+//!
+//! @note buffer_len must be > APP_FILE_NAME_PREFIX_LENGTH + suffix_len to fit
+//! the full file name including NULL-terminator.
+void app_file_name_make(char * restrict buffer, size_t buffer_len,
+ AppInstallId app_id, const char * restrict suffix,
+ size_t suffix_len);
+
+//! Checks whether the given filename is an app file.
+bool is_app_file_name(const char *filename);
+
+//! Checks whether the given filename is an app resource file (suffix = "res")
+bool is_app_resource_file_name(const char *filename);
+
+//! Parses an app-file name to get the AppInstallId.
+//! Assumes the file is indeed an app-file
+AppInstallId app_file_parse_app_id(const char *filename);
+
+//! Parses an app-file name to get the AppInstallId.
+//!
+//! @returns INSTALL_ID_INVALID if the filename is not an app-file.
+AppInstallId app_file_get_app_id(const char *filename);
diff --git a/src/fw/services/normal/filesystem/flash_translation.h b/include/pbl/services/filesystem/flash_translation.h
similarity index 82%
rename from src/fw/services/normal/filesystem/flash_translation.h
rename to include/pbl/services/filesystem/flash_translation.h
index fa65cf4091..f09b8bd11d 100644
--- a/src/fw/services/normal/filesystem/flash_translation.h
+++ b/include/pbl/services/filesystem/flash_translation.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/filesystem/pfs.h b/include/pbl/services/filesystem/pfs.h
similarity index 93%
rename from src/fw/services/normal/filesystem/pfs.h
rename to include/pbl/services/filesystem/pfs.h
index 30c95e3601..f09fdeb5ad 100644
--- a/src/fw/services/normal/filesystem/pfs.h
+++ b/include/pbl/services/filesystem/pfs.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/firmware_update.h b/include/pbl/services/firmware_update.h
new file mode 100644
index 0000000000..c8ac13066b
--- /dev/null
+++ b/include/pbl/services/firmware_update.h
@@ -0,0 +1,27 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+#include "kernel/events.h"
+
+void firmware_update_init(void);
+
+unsigned int firmware_update_get_percent_progress(void);
+
+void firmware_update_event_handler(PebbleSystemMessageEvent* event);
+void firmware_update_pb_event_handler(PebblePutBytesEvent *event);
+
+typedef enum {
+ FirmwareUpdateStopped = 0,
+ FirmwareUpdateRunning = 1,
+ FirmwareUpdateCancelled = 2,
+ FirmwareUpdateFailed = 3,
+} FirmwareUpdateStatus;
+
+FirmwareUpdateStatus firmware_update_current_status(void);
+
+bool firmware_update_is_in_progress(void);
diff --git a/include/pbl/services/get_bytes/get_bytes.h b/include/pbl/services/get_bytes/get_bytes.h
new file mode 100644
index 0000000000..a778cd6965
--- /dev/null
+++ b/include/pbl/services/get_bytes/get_bytes.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Different types of objects that can be transferred over GetBytes
+typedef enum {
+ GetBytesObjectUnknown = 0x00,
+ GetBytesObjectCoredump = 0x01,
+ GetBytesObjectFile = 0x02,
+ GetBytesObjectFlash = 0x03
+} GetBytesObjectType;
+
+// Possible values for GetBytesRspObjectInfo.error_code
+typedef enum {
+ GET_BYTES_OK = 0,
+ GET_BYTES_MALFORMED_COMMAND = 1,
+ GET_BYTES_ALREADY_IN_PROGRESS = 2,
+ GET_BYTES_DOESNT_EXIST = 3,
+ GET_BYTES_CORRUPTED = 4,
+} GetBytesInfoErrorCode;
diff --git a/src/fw/services/common/get_bytes/get_bytes_private.h b/include/pbl/services/get_bytes/get_bytes_private.h
similarity index 79%
rename from src/fw/services/common/get_bytes/get_bytes_private.h
rename to include/pbl/services/get_bytes/get_bytes_private.h
index 2f9e4479c4..c12c502d9c 100644
--- a/src/fw/services/common/get_bytes/get_bytes_private.h
+++ b/include/pbl/services/get_bytes/get_bytes_private.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -22,7 +9,7 @@
#include
#include "kernel/core_dump_private.h"
-#include "services/common/comm_session/session.h"
+#include "pbl/services/comm_session/session.h"
#include "util/attributes.h"
// This matches the entry we put into protocol_endpoints_table.h
diff --git a/include/pbl/services/get_bytes/get_bytes_storage.h b/include/pbl/services/get_bytes/get_bytes_storage.h
new file mode 100644
index 0000000000..a77d02bbb6
--- /dev/null
+++ b/include/pbl/services/get_bytes/get_bytes_storage.h
@@ -0,0 +1,55 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+#include "pbl/services/get_bytes/get_bytes.h"
+
+typedef enum {
+ GetBytesStorageTypeUnknown,
+ GetBytesStorageTypeCoredump,
+ GetBytesStorageTypeFile,
+ GetBytesStorageTypeFlash
+} GetBytesStorageType;
+
+struct GetBytesStorageImplementation;
+typedef struct GetBytesStorageImplementation GetBytesStorageImplementation;
+
+typedef struct {
+ // A struct full of function pointers that implements a storage API
+ const GetBytesStorageImplementation *impl;
+
+ //! A void pointer that the GetBytesStorageImplementation is free to stash stuff into
+ void *impl_data;
+
+ //! The offset into the storage we've initialized. Updated by pb_storage_append. pb_storage_init
+ //! may set this to a non-zero value.
+ uint32_t current_offset;
+} GetBytesStorage;
+
+// info used by the setup routines depending on the implementation
+typedef struct {
+ //! Used by GetBytesStorageTypeFile
+ char *filename;
+ //! Used by GetBytesStorageTypeFlash
+ uint32_t flash_start_addr;
+ uint32_t flash_len;
+ //! Used by GetBytesStorageTypeCoredump
+ bool only_get_new_coredump;
+} GetBytesStorageInfo;
+
+//! Set up the storage. This may include allocating memory, open a file descriptor, etc.
+bool gb_storage_setup(GetBytesStorage *storage, GetBytesObjectType object_type,
+ GetBytesStorageInfo *info);
+
+//! Retrieve the size of the object that is to be sent
+GetBytesInfoErrorCode gb_storage_get_size(GetBytesStorage *storage, uint32_t *size);
+
+//! Read a chunk of the object into a buffer
+bool gb_storage_read_next_chunk(GetBytesStorage *storage, uint8_t *buffer, uint32_t len);
+
+//! Cleanup the storage.
+void gb_storage_cleanup(GetBytesStorage *storage, bool successful);
diff --git a/include/pbl/services/get_bytes/get_bytes_storage_coredump.h b/include/pbl/services/get_bytes/get_bytes_storage_coredump.h
new file mode 100644
index 0000000000..d69bf6f626
--- /dev/null
+++ b/include/pbl/services/get_bytes/get_bytes_storage_coredump.h
@@ -0,0 +1,15 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "get_bytes_storage.h"
+
+bool gb_storage_coredump_setup(GetBytesStorage *storage, GetBytesObjectType object_type,
+ GetBytesStorageInfo *info);
+
+GetBytesInfoErrorCode gb_storage_coredump_get_size(GetBytesStorage *storage, uint32_t *size);
+
+bool gb_storage_coredump_read_next_chunk(GetBytesStorage *storage, uint8_t *buffer, uint32_t len);
+
+void gb_storage_coredump_cleanup(GetBytesStorage *storage, bool successful);
diff --git a/include/pbl/services/get_bytes/get_bytes_storage_file.h b/include/pbl/services/get_bytes/get_bytes_storage_file.h
new file mode 100644
index 0000000000..e1f6ebf683
--- /dev/null
+++ b/include/pbl/services/get_bytes/get_bytes_storage_file.h
@@ -0,0 +1,15 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "get_bytes_storage.h"
+
+bool gb_storage_file_setup(GetBytesStorage *storage, GetBytesObjectType object_type,
+ GetBytesStorageInfo *info);
+
+GetBytesInfoErrorCode gb_storage_file_get_size(GetBytesStorage *storage, uint32_t *size);
+
+bool gb_storage_file_read_next_chunk(GetBytesStorage *storage, uint8_t *buffer, uint32_t len);
+
+void gb_storage_file_cleanup(GetBytesStorage *storage, bool successful);
diff --git a/include/pbl/services/get_bytes/get_bytes_storage_flash.h b/include/pbl/services/get_bytes/get_bytes_storage_flash.h
new file mode 100644
index 0000000000..f09aa6e0e3
--- /dev/null
+++ b/include/pbl/services/get_bytes/get_bytes_storage_flash.h
@@ -0,0 +1,15 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "get_bytes_storage.h"
+
+bool gb_storage_flash_setup(GetBytesStorage *storage, GetBytesObjectType object_type,
+ GetBytesStorageInfo *info);
+
+GetBytesInfoErrorCode gb_storage_flash_get_size(GetBytesStorage *storage, uint32_t *size);
+
+bool gb_storage_flash_read_next_chunk(GetBytesStorage *storage, uint8_t *buffer, uint32_t len);
+
+void gb_storage_flash_cleanup(GetBytesStorage *storage, bool successful);
diff --git a/include/pbl/services/health_sync_endpoint.h b/include/pbl/services/health_sync_endpoint.h
new file mode 100644
index 0000000000..a996e92320
--- /dev/null
+++ b/include/pbl/services/health_sync_endpoint.h
@@ -0,0 +1,4 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
diff --git a/src/fw/services/common/hrm/hrm_manager.h b/include/pbl/services/hrm/hrm_manager.h
similarity index 79%
rename from src/fw/services/common/hrm/hrm_manager.h
rename to include/pbl/services/hrm/hrm_manager.h
index ae6385fafa..3eeb9ba01b 100644
--- a/src/fw/services/common/hrm/hrm_manager.h
+++ b/include/pbl/services/hrm/hrm_manager.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/common/accel_manager_types.h"
+#include "pbl/services/accel_manager_types.h"
#include "process_management/app_install_types.h"
#include "util/time/time.h"
@@ -25,11 +12,8 @@
#include
typedef enum {
- HRMQuality_NoAccel = -2,
HRMQuality_OffWrist = -1,
-
- HRMQuality_NoSignal = 0,
- HRMQuality_Worst,
+ HRMQuality_Worst = 0,
HRMQuality_Poor,
HRMQuality_Acceptable,
HRMQuality_Good,
@@ -39,25 +23,27 @@ typedef enum {
typedef enum {
HRMFeatureShift_BPM = 0,
HRMFeatureShift_HRV = 1,
- HRMFeatureShift_LEDCurrent = 2,
- HRMFeatureShift_Diagnostics = 3,
-
+ HRMFeatureShift_SpO2 = 2,
+#ifdef CONFIG_MFG
+ HRMFeatureShift_CTR = 3,
+ HRMFeatureShift_Leakage = 4,
+#endif
HRMFeatureShiftMax
} HRMFeatureShift;
typedef enum {
HRMFeature_BPM = (1 << HRMFeatureShift_BPM), //!< Collect heartrate BPM.
HRMFeature_HRV = (1 << HRMFeatureShift_HRV), //!< Collect heartrate variability.
- HRMFeature_LEDCurrent = (1 << HRMFeatureShift_LEDCurrent), //!< Collect the LED current
- //!< consumption (uA). This should not
- //!< be made public by the HRM service,
- //!< and should only be used internally
- HRMFeature_Diagnostics = (1 << 3), //!< Collect PPG & Accel data
+ HRMFeature_SpO2 = (1 << HRMFeatureShift_SpO2), //!< Collect blood oxygen saturation.
+#ifdef CONFIG_MFG
+ HRMFeature_CTR = (1 << HRMFeatureShift_CTR), //!< Collect ppg CTR test data.
+ HRMFeature_Leakage = (1 << HRMFeatureShift_Leakage), //!< Collect ppg leakage test data.
+#endif
HRMFeatureMax
} HRMFeature;
// Hold enough data for 2s worth of samples just in case we miss a handshake
-#define HRM_MANAGER_ACCEL_RATE_MILLIHZ (12500)
+#define HRM_MANAGER_ACCEL_RATE_MILLIHZ (25000)
#define HRM_MANAGER_MAX_ACCEL_SAMPLES ((2 * HRM_MANAGER_ACCEL_RATE_MILLIHZ) / 1000)
// When an app exits, we change its subscription (if any) to expire in this many seconds
@@ -149,28 +135,23 @@ void hrm_manager_enable(bool on);
//------------------------------------------------------------------------------
// The driver needs to provide new data to the service and needs to pull accel data.
-#define MAX_PPG_SAMPLES 20
-
-typedef struct {
- int num_samples;
- uint8_t indexes[MAX_PPG_SAMPLES];
- uint16_t ppg[MAX_PPG_SAMPLES];
- uint16_t tia[MAX_PPG_SAMPLES];
-} HRMPPGData;
-
//! HRMData will contain all HRM information that is currently available from the device.
typedef struct {
- uint16_t led_current_ua;
+ HRMFeature features;
uint8_t hrm_bpm;
HRMQuality hrm_quality;
uint16_t hrv_ppi_ms;
HRMQuality hrv_quality;
- uint8_t hrm_status;
-
- HRMAccelData accel_data;
- HRMPPGData ppg_data;
+
+ uint8_t spo2_percent;
+ HRMQuality spo2_quality;
+
+#ifdef CONFIG_MFG
+ double ctr[6];
+ double leakage[6];
+#endif
} HRMData;
//! Callback used by HRM Driver to indicate that new data is available.
diff --git a/src/fw/services/common/hrm/hrm_manager_private.h b/include/pbl/services/hrm/hrm_manager_private.h
similarity index 75%
rename from src/fw/services/common/hrm/hrm_manager_private.h
rename to include/pbl/services/hrm/hrm_manager_private.h
index 7eb17c4d28..1a79914e0e 100644
--- a/src/fw/services/common/hrm/hrm_manager_private.h
+++ b/include/pbl/services/hrm/hrm_manager_private.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -24,7 +11,7 @@
#include "kernel/events.h"
#include "os/mutex.h"
#include "process_management/app_install_types.h"
-#include "services/common/new_timer/new_timer.h"
+#include "pbl/services/new_timer/new_timer.h"
#include "util/list.h"
#include "util/circular_buffer.h"
@@ -36,9 +23,6 @@ typedef void (*HRMSubscriberCallback)(PebbleHRMEvent *event, void *context);
// right after turning it on
#define HRM_SENSOR_SPIN_UP_SEC 20
-// We should never get a BPM reading lower than this
-#define HRM_SENSOR_MIN_VALID_BPM_READING 20
-
typedef struct AccelServiceState AccelServiceState;
typedef struct HRMSubscriberState {
@@ -56,7 +40,7 @@ typedef struct HRMSubscriberState {
bool sent_expiration_event; // true after we've sent a HRMEvent_SubscriptionExpiring event
HRMFeature features; // what features the subscriber is interested in
- RtcTicks last_valid_ticks; // tick count the last time this subscriber received valid HR reading
+ RtcTicks last_valid_bpm_ticks; // tick count the last time this subscriber received valid HR reading
} HRMSubscriberState;
// HRM manager expects to be update at 1Hz. To the system task, we can currently
@@ -65,12 +49,15 @@ typedef struct HRMSubscriberState {
#define NUM_EVENTS_TO_QUEUE (8)
#define EVENT_STORAGE_SIZE (sizeof(PebbleHRMEvent) * NUM_EVENTS_TO_QUEUE)
-#define HRM_MANAGER_ACCEL_MANAGER_SAMPLES_PER_UPDATE 2
+#define HRM_MANAGER_ACCEL_MANAGER_SAMPLES_PER_UPDATE 4
// After every HRM_CHECK_SENSOR_DISABLE_COUNT calls to hrm_manager_new_data_cb(), we check to see
// if we should disable the sensor.
#define HRM_CHECK_SENSOR_DISABLE_COUNT 10
+// After this many consecutive hrm_enable failures, stop trying until reboot
+#define HRM_MAX_ENABLE_FAILURES 3
+
struct HRMManagerState {
PebbleRecursiveMutex *lock;
ListNode *subscribers;
@@ -91,16 +78,12 @@ struct HRMManagerState {
TimerID update_enable_timer_id; // used for re-enabling the HRM sensor
uint8_t check_disable_counter; // increments to HRM_CHECK_SENSOR_DISABLE_COUNT
+ uint8_t enable_failure_count; // counts consecutive hrm_enable failures, stops retrying after max
bool enabled_run_level; // True if the current run_level (LowPower, Stationary,
// Normal, etc.) allows the sensor to be turned on
bool enabled_charging_state; // Ture if we aren't plugged in / charging
- // These variables used to keep track of the sensor reading validity.
- bool sensor_stable; // True after we receive the first good reading after power-on or off-wrist
- bool off_wrist_when_stable; // true if sensor said off-wrist when first stablized
- RtcTicks sensor_start_ticks; // tick count last time sensor was powered on, or last
- // off-wrist. 0 if still off-wrist or off.
};
//! Subscription for KernelBG or KernelMain clients.
diff --git a/include/pbl/services/i18n/i18n.h b/include/pbl/services/i18n/i18n.h
new file mode 100644
index 0000000000..f9b860e11c
--- /dev/null
+++ b/include/pbl/services/i18n/i18n.h
@@ -0,0 +1,67 @@
+/* SPDX-FileCopyrightText: 2000 Citrus Project */
+/* SPDX-License-Identifier: BSD-2-Clause */
+
+#pragma once
+
+#include
+#include
+#include "util/list.h"
+
+#define ISO_LOCALE_LENGTH 6
+#define LOCALE_NAME_LENGTH 30
+
+typedef struct {
+ ListNode node; //!< Linked list node
+ const void *owner; //!< pointer to owner object
+ uint32_t original_hash; //!< hashed original string
+ char *original_string; //!< original string. Stored following translated_string below
+ char translated_string[]; //!< i18n'ed string. Storage for original string comes after this
+} I18nString;
+
+//! macro used to tag strings for extractions. Needed when we
+//! can't call i18n_get directly (i.e constant initializers)
+#define i18n_noop(string) (string)
+
+//! macro used to tag strings for extractions. Needed when we
+//! can't call i18n_ctx_get directly (i.e constant initializers)
+//! The resulting string should be used with i18n_get instead of i18n_ctx_get.
+#define i18n_ctx_noop(ctx, string) (ctx "\4" string)
+
+//! Look up and return i18n'ed string (or original string if not found)
+//! Tags it as owned by owner
+//! NOTE: Currently, we don't do reference counting, so bad things will happen if the caller
+//! calls i18n_get() on the same string more than once and assumes that any of those return
+//! pointers will still be valid after i18n_free() is called on one of them.
+const char *i18n_get(const char *string, const void *owner);
+
+#define i18n_ctx_get(ctx, string, owner) i18n_get(i18n_ctx_noop(ctx, string), owner)
+
+//! Look up an i18n'ed string and copy it into a provided buffer.
+void i18n_get_with_buffer(const char *string, char *buffer, size_t length);
+
+#define i18n_ctx_get_with_buffer(ctx, string, buffer, length) \
+ i18n_get_with_buffer(i18n_ctx_noop(ctx, string), buffer, length)
+
+//! Look up an i18n'ed string and return the length of it.
+size_t i18n_get_length(const char *string);
+
+#define i18n_ctx_get_length(ctx, string) i18n_get_length(i18n_ctx_noop(ctx, string))
+
+//! Free an i18n'ed string and it's associated metadata
+void i18n_free(const char *string, const void *owner);
+
+#define i18n_ctx_free(ctx, string, owner) i18n_free(i18n_ctx_noop(ctx, string), owner)
+
+//! Free all i18n'ed strings associated with owner
+void i18n_free_all(const void *owner);
+void i18n_set_resource(uint32_t resource_id);
+
+//! return the ISO language string for the currently installed language
+char *i18n_get_locale(void);
+
+//! return the version number for the currently installed language
+uint16_t i18n_get_version(void);
+
+char *i18n_get_lang_name(void);
+
+void i18n_enable(bool enable);
diff --git a/src/fw/services/common/i18n/mo.h b/include/pbl/services/i18n/mo.h
similarity index 100%
rename from src/fw/services/common/i18n/mo.h
rename to include/pbl/services/i18n/mo.h
diff --git a/include/pbl/services/idle_watchdog.h b/include/pbl/services/idle_watchdog.h
new file mode 100644
index 0000000000..119d204804
--- /dev/null
+++ b/include/pbl/services/idle_watchdog.h
@@ -0,0 +1,18 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Auto-shutdown when idle in PRF to increase the changes of getting Pebbles shipped
+//! that have some level of battery charge in them.
+
+//! Initialize event subscriptions and start the watchdog. Called once at boot from KernelMain.
+void prf_idle_watchdog_init(void);
+
+//! Start (or restart) the watchdog timer. Can be called from any task.
+void prf_idle_watchdog_start(void);
+
+//! Stop the watchdog timer. Can be called from any task.
+void prf_idle_watchdog_stop(void);
diff --git a/include/pbl/services/imu/units.h b/include/pbl/services/imu/units.h
new file mode 100644
index 0000000000..79481874bf
--- /dev/null
+++ b/include/pbl/services/imu/units.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+typedef enum {
+ //! The positive direction along the X axis goes toward the right
+ //! of the watch.
+ AXIS_X = 0,
+ //! The positive direction along the Y axis goes toward the top
+ //! of the watch.
+ AXIS_Y = 1,
+ //! The positive direction along the Z axis goes vertically out of
+ //! the watchface.
+ AXIS_Z = 2,
+} IMUCoordinateAxis;
diff --git a/include/pbl/services/legacy/persist_map.h b/include/pbl/services/legacy/persist_map.h
new file mode 100644
index 0000000000..85ea89ab27
--- /dev/null
+++ b/include/pbl/services/legacy/persist_map.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/uuid.h"
+#include "system/status_codes.h"
+
+/* persist_map is an intermediate mapping until app install ids are reimplemented.
+ * This is an id, uuid record based solution with the id as a positive native int.
+ */
+
+int persist_map_get_size();
+
+int persist_map_add_uuid(const Uuid *uuid);
+
+int persist_map_get_id(const Uuid *uuid);
+
+int persist_map_auto_id(const Uuid *uuid);
+
+int persist_map_get_uuid(int id, Uuid *uuid);
+
+status_t persist_map_init();
+
+//! Dump the persist map to LOG_LEVEL_INFO
+void persist_map_dump(void);
diff --git a/include/pbl/services/light.h b/include/pbl/services/light.h
new file mode 100644
index 0000000000..ffb775e9e5
--- /dev/null
+++ b/include/pbl/services/light.h
@@ -0,0 +1,91 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include "shell/prefs.h"
+
+//! @file light.h
+//! @addtogroup UI
+//! @{
+//! @addtogroup Light Light
+//! \brief Controlling Pebble's backlight
+//!
+//! The Light API provides you with functions to turn on Pebble’s backlight or
+//! put it back into automatic control. You can trigger the backlight and schedule a timer
+//! to automatically disable the backlight after a short delay, which is the preferred
+//! method of interacting with the backlight.
+//! @{
+//!
+//! @internal
+//! to be called when starting up to initialize variables correctly
+void light_init(void);
+
+//! @internal
+//! to be called by the launcher on a button down event
+void light_button_pressed(void);
+
+//! @internal
+//! to be called by the launcher on a button up event
+void light_button_released(void);
+
+//! @copydoc app_light_enable
+void light_enable(bool enable);
+
+//! @internal
+//! light_enable that adheres to user's backlight setting.
+void light_enable_respect_settings(bool enable);
+
+//! @copydoc app_light_enable_interaction
+//! if light_enable was called (backlight was forced on),
+//! then do nothing
+void light_enable_interaction(void);
+
+//! Reset the state if an app overrode the usual state machine using light_enable()
+void light_reset_user_controlled(void);
+
+//! @copydoc app_light_set_color_rgb888
+//! rgb is a packed 0x00RRGGBB value (8 bits per channel). No-op on
+//! platforms without a color backlight.
+void light_set_color_rgb888(uint32_t rgb);
+
+//! @copydoc app_light_set_system_color
+//! No-op on platforms without a color backlight.
+void light_set_system_color(void);
+
+//! Request that the system color take precedence over any app override.
+//! While the refcount is non-zero, the LED is forced to the user default
+//! color even if an app has set an override. Used by notifications and
+//! other modals so they display in neutral white without permanently
+//! clearing the underlying app's color.
+void light_system_color_request(void);
+
+//! Release a system color request. When the refcount returns to zero, any
+//! app override is re-applied.
+void light_system_color_release(void);
+
+//! @internal
+void light_toggle_enabled(void);
+
+//! @internal
+void light_toggle_ambient_sensor_enabled(void);
+
+//! @internal
+void light_toggle_dynamic_intensity_enabled(void);
+
+//! Switches for temporary disabling backlight (ie: low power mode)
+void light_allow(bool allowed);
+
+//! Get the current active backlight brightness as a percentage (0-100)
+//! This returns the actual current brightness, which may differ from the
+//! configured brightness when dynamic backlight is enabled.
+uint8_t light_get_current_brightness_percent(void);
+
+//! @return true if the backlight is currently on in any form (on, timed, or
+//! fading out). Returns false only when the backlight is fully off.
+bool light_is_on(void);
+
+//! @} // group Light
+//! @} // group UI
diff --git a/include/pbl/services/music.h b/include/pbl/services/music.h
new file mode 100644
index 0000000000..4a7e4ae330
--- /dev/null
+++ b/include/pbl/services/music.h
@@ -0,0 +1,101 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include
+
+#define MUSIC_BUFFER_LENGTH 64
+
+typedef enum {
+ MusicPlayStateUnknown,
+ MusicPlayStatePlaying,
+ MusicPlayStatePaused,
+ MusicPlayStateForwarding,
+ MusicPlayStateRewinding,
+ MusicPlayStateInvalid = 0xFF,
+} MusicPlayState;
+
+typedef enum {
+ MusicCommandPlay,
+ MusicCommandPause,
+ MusicCommandTogglePlayPause,
+ MusicCommandNextTrack,
+ MusicCommandPreviousTrack,
+ MusicCommandVolumeUp,
+ MusicCommandVolumeDown,
+ MusicCommandAdvanceRepeatMode,
+ MusicCommandAdvanceShuffleMode,
+ MusicCommandSkipForward,
+ MusicCommandSkipBackward,
+ MusicCommandLike,
+ MusicCommandDislike,
+ MusicCommandBookmark,
+
+ NumMusicCommand,
+} MusicCommand;
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interface to Music app
+
+//! Copy out the current now playing fields into the parameters. We'll assume you've provided
+//! buffers that are at least MUSIC_BUFFER_LENGTH in size.
+void music_get_now_playing(char *title, char *artist, char *album);
+
+//! @return True if the music service has Now Playing metadata.
+bool music_has_now_playing(void);
+
+//! Copy out the name of the current player. We'll assume you've provided
+//! buffers that are at least MUSIC_BUFFER_LENGTH in size.
+//! @return True if the name was copied successfully, or false if there was no name available.
+bool music_get_player_name(char *player_name_out);
+
+//! @return The milliseconds since the track position was last updated.
+uint32_t music_get_ms_since_pos_last_updated(void);
+
+//! Retrieve the position in the current track in the given pointers (which must not be null).
+void music_get_pos(uint32_t *track_pos_ms, uint32_t *track_length_ms);
+
+//! @return The current playback rate percentage.
+int32_t music_get_playback_rate_percent(void);
+
+//! @return The volume percentage.
+uint8_t music_get_volume_percent(void);
+
+//! Retrieve the current playback state.
+MusicPlayState music_get_playback_state(void);
+
+//! @return True if the service supports reporting of the player's playback state.
+//! @see music_get_playback_state
+bool music_is_playback_state_reporting_supported(void);
+
+//! @return True if the service support reporting of the playback progress.
+//! @see music_get_pos
+bool music_is_progress_reporting_supported(void);
+
+//! @return True if the service supports reporting of the current volume.
+//! @see music_get_volume_percent
+bool music_is_volume_reporting_supported(void);
+
+//! Sends the command to the server. Commands are "unreliable", they are sent at "best effort".
+//! @param command The command to send.
+//! @see music_is_command_supported
+void music_command_send(MusicCommand command);
+
+//! @param The command to test.
+//! @return True if the command is supported by the connected server.
+bool music_is_command_supported(MusicCommand command);
+
+//! @return True if playback needs to be started manually by the user from the phone.
+bool music_needs_user_to_start_playback_on_phone(void);
+
+//! Puts the underlying connection in a reduced latency mode, for better responsiveness.
+void music_request_reduced_latency(bool reduced_latency);
+
+//! Puts the underlying connection in a low latency mode, for the best responsiveness.
+void music_request_low_latency_for_period(uint32_t period_seconds);
+
+//! For testing purposes.
+const char * music_get_connected_server_debug_name(void);
diff --git a/include/pbl/services/music_endpoint.h b/include/pbl/services/music_endpoint.h
new file mode 100644
index 0000000000..3295ac6f51
--- /dev/null
+++ b/include/pbl/services/music_endpoint.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+
+void music_endpoint_handle_mobile_app_info_event(const PebbleRemoteAppInfoEvent *app_info_event);
+
+void music_endpoint_handle_mobile_app_event(const PebbleCommSessionEvent *app_event);
diff --git a/include/pbl/services/music_endpoint_types.h b/include/pbl/services/music_endpoint_types.h
new file mode 100644
index 0000000000..1f01f54f35
--- /dev/null
+++ b/include/pbl/services/music_endpoint_types.h
@@ -0,0 +1,57 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "util/attributes.h"
+
+typedef enum {
+ // Watch -> Phone
+ MusicEndpointCmdIDTogglePlayPause = 0x1,
+ MusicEndpointCmdIDPause = 0x2,
+ MusicEndpointCmdIDPlay = 0x3,
+ MusicEndpointCmdIDNextTrack = 0x4,
+ MusicEndpointCmdIDPreviousTrack = 0x5,
+ MusicEndpointCmdIDVolumeUp = 0x6,
+ MusicEndpointCmdIDVolumeDown = 0x7,
+ MusicEndpointCmdIDGetAllInfo = 0x8,
+
+ // Phone -> Watch
+ MusicEndpointCmdIDNowPlayingInfoResponse = 0x10,
+ MusicEndpointCmdIDPlayStateInfoResponse = 0x11,
+ MusicEndpointCmdIDVolumeInfoResponse = 0x12,
+ MusicEndpointCmdIDPlayerInfoResponse = 0x13,
+
+ MusicEndpointCmdIDInvalid = 0xff,
+} MusicEndpointCmdID;
+
+typedef enum {
+ MusicEndpointPlaybackStatePaused = 0,
+ MusicEndpointPlaybackStatePlaying = 1,
+ MusicEndpointPlaybackStateRewinding = 2,
+ MusicEndpointPlaybackStateForwarding = 3,
+ MusicEndpointPlaybackStateUnknown = 4,
+} MusicEndpointPlaybackState;
+
+typedef enum {
+ MusicEndpointShuffleModeUnknown = 0,
+ MusicEndpointShuffleModeOff = 1,
+ MusicEndpointShuffleModeOn = 2,
+} MusicEndpointShuffleMode;
+
+typedef enum {
+ MusicEndpointRepeatModeUnknown = 0,
+ MusicEndpointRepeatModeOff = 1,
+ MusicEndpointRepeatModeOne = 2,
+ MusicEndpointRepeatModeAll = 3,
+} MusicEndpointRepeatMode;
+
+typedef struct PACKED {
+ uint8_t play_state;
+ int32_t track_pos_ms;
+ int32_t play_rate;
+ uint8_t play_shuffle_mode;
+ uint8_t play_repeat_mode;
+} MusicEndpointPlayStateInfo;
diff --git a/src/fw/services/normal/music_internal.h b/include/pbl/services/music_internal.h
similarity index 85%
rename from src/fw/services/normal/music_internal.h
rename to include/pbl/services/music_internal.h
index a88ea1b09a..abe019d278 100644
--- a/src/fw/services/normal/music_internal.h
+++ b/include/pbl/services/music_internal.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/common/new_timer/new_timer.h b/include/pbl/services/new_timer/new_timer.h
similarity index 86%
rename from src/fw/services/common/new_timer/new_timer.h
rename to include/pbl/services/new_timer/new_timer.h
index 8c706f23a9..dc031d5e52 100644
--- a/src/fw/services/common/new_timer/new_timer.h
+++ b/include/pbl/services/new_timer/new_timer.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/new_timer/new_timer_service.h b/include/pbl/services/new_timer/new_timer_service.h
new file mode 100644
index 0000000000..56eb92991d
--- /dev/null
+++ b/include/pbl/services/new_timer/new_timer_service.h
@@ -0,0 +1,7 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+void new_timer_service_init(void);
+
diff --git a/include/pbl/services/notifications/action_chaining_window.h b/include/pbl/services/notifications/action_chaining_window.h
new file mode 100644
index 0000000000..5b20ead4e1
--- /dev/null
+++ b/include/pbl/services/notifications/action_chaining_window.h
@@ -0,0 +1,18 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/ui/window_stack.h"
+#include "pbl/services/timeline/item.h"
+
+typedef void (*ActionChainingMenuSelectCb)(Window *chaining_window,
+ TimelineItemAction *action, void *context);
+typedef void (*ActionChainingMenuClosedCb)(void *context);
+
+void action_chaining_window_push(WindowStack *window_stack, const char *title,
+ TimelineItemActionGroup *action_group,
+ ActionChainingMenuSelectCb select_cb,
+ void *select_cb_context,
+ ActionChainingMenuClosedCb closed_cb,
+ void *closed_cb_context);
diff --git a/include/pbl/services/notifications/alerts.h b/include/pbl/services/notifications/alerts.h
new file mode 100644
index 0000000000..90cfa123c3
--- /dev/null
+++ b/include/pbl/services/notifications/alerts.h
@@ -0,0 +1,32 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "pbl/services/notifications/notification_types.h"
+
+typedef enum AlertType {
+ AlertInvalid = NotificationInvalid,
+ AlertMobile = NotificationMobile,
+ AlertPhoneCall = NotificationPhoneCall,
+ AlertOther = NotificationOther,
+ AlertReminder = NotificationReminder
+} AlertType;
+
+// Service to determine how and if the user gets alerted on a call/notification
+
+//! Call this function before alerting the user in any notification/call for the alerts service
+//! to handle analytics operations.
+void alerts_incoming_alert_analytics();
+
+bool alerts_should_notify_for_type(AlertType type);
+
+bool alerts_should_enable_backlight_for_type(AlertType type);
+
+bool alerts_should_vibrate_for_type(AlertType type);
+
+//! When vibrating for an incoming notification, call this function to prevent multiple vibes
+//! within a short period of time.
+void alerts_set_notification_vibe_timestamp();
diff --git a/include/pbl/services/notifications/alerts_preferences.h b/include/pbl/services/notifications/alerts_preferences.h
new file mode 100644
index 0000000000..24744dee57
--- /dev/null
+++ b/include/pbl/services/notifications/alerts_preferences.h
@@ -0,0 +1,77 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+#include "alerts_private.h"
+
+typedef enum FirstUseSource {
+ FirstUseSourceManualDNDActionMenu = 0,
+ FirstUseSourceManualDNDSettingsMenu,
+ FirstUseSourceSmartDND,
+ FirstUseSourceDismiss
+} FirstUseSource;
+
+typedef enum MuteBitfield {
+ MuteBitfield_None = 0b00000000,
+ MuteBitfield_Always = 0b01111111,
+ MuteBitfield_Weekdays = 0b00111110,
+ MuteBitfield_Weekends = 0b01000001,
+} MuteBitfield;
+
+typedef enum {
+ DndNotificationModeHide = 0,
+ DndNotificationModeShow = 1,
+} DndNotificationMode;
+
+//! Set notification display mode when DND is active
+//! @param mode The display mode (Show or Hide)
+void alerts_preferences_dnd_set_show_notifications(DndNotificationMode mode);
+
+//! @return The notification display mode when DND is active
+DndNotificationMode alerts_preferences_dnd_get_show_notifications(void);
+
+//! Set whether the backlight should turn on with motion when DND is active
+//! @param enable true to allow motion backlight, false to suppress it
+void alerts_preferences_dnd_set_motion_backlight(bool enable);
+
+//! @return Whether motion backlight is enabled when DND is active
+bool alerts_preferences_dnd_get_motion_backlight(void);
+
+//! Set whether tap / double-tap gestures should turn on the backlight when DND is active
+//! @param enable true to allow touch backlight, false to suppress it
+void alerts_preferences_dnd_set_touch_backlight(bool enable);
+
+//! @return Whether touch backlight is enabled when DND is active
+bool alerts_preferences_dnd_get_touch_backlight(void);
+
+//! Set whether the speaker should be muted while DND is active.
+//! @param enable true to mute the speaker during DND, false to allow audio
+void alerts_preferences_dnd_set_mute_speaker(bool enable);
+
+//! @return Whether the speaker is muted while DND is active
+bool alerts_preferences_dnd_get_mute_speaker(void);
+
+//! Set the always-on speaker mute. When set, the speaker is silenced
+//! regardless of DND state.
+//! @param muted true to mute the speaker, false to allow audio
+void alerts_preferences_set_speaker_muted(bool muted);
+
+//! @return Whether the speaker is always-on muted
+bool alerts_preferences_get_speaker_muted(void);
+
+//! Set the system-wide speaker volume cap. Per-playback volumes are scaled
+//! by this value before being applied to the audio hardware.
+//! @param volume Volume cap, 0-100. Values outside the range are clamped.
+void alerts_preferences_set_speaker_volume(uint8_t volume);
+
+//! @return The system-wide speaker volume cap (0-100). Defaults to 100.
+uint8_t alerts_preferences_get_speaker_volume(void);
+
+//! Checks whether a given "first use" dialog has been shown and sets it as complete
+//! @param source The "first use" bit to check
+//! @return true if the dialog has already been shown, false otherwise
+bool alerts_preferences_check_and_set_first_use_complete(FirstUseSource source);
diff --git a/include/pbl/services/notifications/alerts_preferences_private.h b/include/pbl/services/notifications/alerts_preferences_private.h
new file mode 100644
index 0000000000..6072cea648
--- /dev/null
+++ b/include/pbl/services/notifications/alerts_preferences_private.h
@@ -0,0 +1,96 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+#include "pbl/services/notifications/alerts_private.h"
+#include "pbl/services/notifications/do_not_disturb.h"
+#include "pbl/services/notifications/notification_types.h"
+#include "pbl/services/vibes/vibe_intensity.h"
+#include "util/time/time.h"
+#include "pbl/services/vibes/vibe_client.h"
+#include "pbl/services/vibes/vibe_score_info.h"
+
+#define NOTIF_WINDOW_TIMEOUT_INFINITE ((uint32_t)~0)
+#define NOTIF_WINDOW_TIMEOUT_DEFAULT (3 * MS_PER_MINUTE)
+
+void alerts_preferences_init(void);
+
+AlertMask alerts_preferences_get_alert_mask(void);
+
+void alerts_preferences_set_alert_mask(AlertMask mask);
+
+AlertMask alerts_preferences_dnd_get_mask(void);
+
+void alerts_preferences_dnd_set_mask(AlertMask mask);
+
+uint32_t alerts_preferences_get_notification_window_timeout_ms(void);
+
+void alerts_preferences_set_notification_window_timeout_ms(uint32_t timeout_ms);
+
+bool alerts_preferences_get_notification_alternative_design(void);
+
+void alerts_preferences_set_notification_alternative_design(bool alternative);
+
+bool alerts_preferences_get_notification_vibe_delay(void);
+
+void alerts_preferences_set_notification_vibe_delay(bool delay);
+
+bool alerts_preferences_get_notification_backlight(void);
+
+void alerts_preferences_set_notification_backlight(bool enable);
+
+typedef enum {
+ NotificationStatusBarStyle_Default = 0,
+ NotificationStatusBarStyle_Bold = 1,
+ NotificationStatusBarStyle_LargeBold = 2,
+ NotificationStatusBarStyleCount,
+} NotificationStatusBarStyle;
+
+NotificationStatusBarStyle alerts_preferences_get_notification_status_bar_style(void);
+
+void alerts_preferences_set_notification_status_bar_style(NotificationStatusBarStyle style);
+
+bool alerts_preferences_get_vibrate(void);
+
+void alerts_preferences_set_vibrate(bool enable);
+
+VibeIntensity alerts_preferences_get_vibe_intensity(void);
+
+void alerts_preferences_set_vibe_intensity(VibeIntensity intensity);
+
+VibeScoreId alerts_preferences_get_vibe_score_for_client(VibeClient client);
+
+void alerts_preferences_set_vibe_score_for_client(VibeClient client, VibeScoreId id);
+
+bool alerts_preferences_dnd_is_manually_enabled(void);
+
+void alerts_preferences_dnd_set_manually_enabled(bool enable);
+
+void alerts_preferences_dnd_get_schedule(DoNotDisturbScheduleType type,
+ DoNotDisturbSchedule *schedule_out);
+
+void alerts_preferences_dnd_set_schedule(DoNotDisturbScheduleType type,
+ const DoNotDisturbSchedule *schedule);
+
+bool alerts_preferences_dnd_is_schedule_enabled(DoNotDisturbScheduleType type);
+
+void alerts_preferences_dnd_set_schedule_enabled(DoNotDisturbScheduleType type, bool enable);
+
+bool alerts_preferences_dnd_is_smart_enabled(void);
+
+void alerts_preferences_dnd_set_smart_enabled(bool enable);
+
+//! Lock the alerts preferences mutex. Must be paired with alerts_preferences_unlock().
+void alerts_preferences_lock(void);
+
+//! Unlock the alerts preferences mutex. Must be paired with alerts_preferences_lock().
+void alerts_preferences_unlock(void);
+
+//! Process a BlobDB event for notification preferences. For BlobDBEventTypeInsert
+//! events, this method will update the internal global copy of that preference based on the
+//! new value that was placed into the backing store.
+//! @param[in] event pointer to the blob DB event
+void alerts_preferences_handle_blob_db_event(PebbleBlobDBEvent *event);
+
diff --git a/include/pbl/services/notifications/alerts_private.h b/include/pbl/services/notifications/alerts_private.h
new file mode 100644
index 0000000000..2c3e674217
--- /dev/null
+++ b/include/pbl/services/notifications/alerts_private.h
@@ -0,0 +1,34 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/notifications/alerts.h"
+
+typedef enum AlertMask {
+ AlertMaskAllOff = 0,
+ AlertMaskPhoneCalls = NotificationPhoneCall,
+ AlertMaskOther = NotificationOther,
+ AlertMaskAllOnLegacy =
+ NotificationMobile | NotificationPhoneCall | NotificationOther,
+ AlertMaskAllOn =
+ NotificationMobile | NotificationPhoneCall | NotificationOther | NotificationReminder
+} AlertMask;
+
+bool alerts_get_vibrate(void);
+
+AlertMask alerts_get_mask(void);
+
+AlertMask alerts_get_dnd_mask(void);
+
+uint32_t alerts_get_notification_window_timeout_ms(void);
+
+void alerts_set_vibrate(bool enable);
+
+void alerts_set_mask(AlertMask mask);
+
+void alerts_set_dnd_mask(AlertMask mask);
+
+void alerts_set_notification_window_timeout_ms(uint32_t timeout_ms);
+
+void alerts_init(void);
diff --git a/include/pbl/services/notifications/ancs/ancs_filtering.h b/include/pbl/services/notifications/ancs/ancs_filtering.h
new file mode 100644
index 0000000000..fc6d59dc00
--- /dev/null
+++ b/include/pbl/services/notifications/ancs/ancs_filtering.h
@@ -0,0 +1,39 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "comm/ble/kernel_le_client/ancs/ancs_types.h"
+#include "pbl/services/blob_db/ios_notif_pref_db.h"
+
+//! Updates the entry in the notif pref db for a given app
+//! @param app_notif_prefs The existing prefs for the app we want to update. These prefs could be
+//! updated in the process
+//! @param app_id ID of the app we're recording
+//! @param display_name Display name of the app we're recording
+//! @param title Title attribute from the notification associated with the app we're recording
+//! (fallback in the event that we don't have a display name such as in the case of Apple Pay)
+void ancs_filtering_record_app(iOSNotifPrefs **app_notif_prefs,
+ const ANCSAttribute *app_id,
+ const ANCSAttribute *display_name,
+ const ANCSAttribute *title);
+
+//! Returns true if a given app is muted for the current day
+//! @param app_notif_prefs Prefs for the given app loaded from the notif pref db
+//! @return true if the given app is muted
+bool ancs_filtering_is_muted(const iOSNotifPrefs *app_notif_prefs);
+
+//! Returns the mute type for an app
+//! @param app_notif_prefs Prefs for the given app loaded from the notif pref db
+//! @return MuteBitfield which is the mute type of the app
+uint8_t ancs_filtering_get_mute_type(const iOSNotifPrefs *app_notif_prefs);
+
+//! Returns true when the app's rules say to filter a notification.
+//! @param app_notif_prefs Prefs for the given app loaded from the notif pref db
+//! @param title Notification title
+//! @param subtitle Notification subtitle, matched as part of the title field
+//! @param body Notification body/message
+bool ancs_filtering_matches_rules(const iOSNotifPrefs *app_notif_prefs,
+ const ANCSAttribute *title,
+ const ANCSAttribute *subtitle,
+ const ANCSAttribute *body);
diff --git a/include/pbl/services/notifications/ancs/ancs_item.h b/include/pbl/services/notifications/ancs/ancs_item.h
new file mode 100644
index 0000000000..f9cf774ce6
--- /dev/null
+++ b/include/pbl/services/notifications/ancs/ancs_item.h
@@ -0,0 +1,33 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "ancs_notifications_util.h"
+
+#include "comm/ble/kernel_le_client/ancs/ancs_types.h"
+#include "pbl/services/blob_db/ios_notif_pref_db.h"
+#include "pbl/services/timeline/timeline.h"
+
+//! Creates a new timeline item from ANCS data
+//! @param notif_attributes ANCS Notification attributes
+//! @param app_attributes ANCS App attributes (namely, the display name)
+//! @param app_metadata The icon and color associated with the app
+//! @param notif_prefs iOS notification prefs for this notification
+//! @param timestamp Time the notification occured
+//! @param properties Additional ANCS properties (category, flags, etc)
+//! @return The newly created timeline item
+TimelineItem *ancs_item_create_and_populate(ANCSAttribute *notif_attributes[],
+ ANCSAttribute *app_attributes[],
+ const ANCSAppMetadata *app_metadata,
+ iOSNotifPrefs *notif_prefs,
+ time_t timestamp,
+ ANCSProperty properties);
+
+//! Replaces the dismiss action of an existing timeline item with the ancs negative action
+//! @param item The timeline item to update
+//! @param uid The uid of the ANCS notification we're using the dismiss action from
+//! @param attr_action_neg The negative action from the ANCS notification to use as the new
+//! dismiss action
+void ancs_item_update_dismiss_action(TimelineItem *item, uint32_t uid,
+ const ANCSAttribute *attr_action_neg);
diff --git a/include/pbl/services/notifications/ancs/ancs_known_apps.h b/include/pbl/services/notifications/ancs/ancs_known_apps.h
new file mode 100644
index 0000000000..db758bd33d
--- /dev/null
+++ b/include/pbl/services/notifications/ancs/ancs_known_apps.h
@@ -0,0 +1,75 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+// @nolint
+// please don't change these values manually, they are derived from the spreadsheet
+// "Notification Colors"
+
+#define APP(id, icon, color) { id, icon, color }
+
+ APP(IOS_CALENDAR_APP_ID, TIMELINE_RESOURCE_TIMELINE_CALENDAR, GColorRedARGB8),
+ APP(IOS_FACETIME_APP_ID, TIMELINE_RESOURCE_NOTIFICATION_FACETIME, GColorIslamicGreenARGB8),
+ APP(IOS_MAIL_APP_ID, TIMELINE_RESOURCE_GENERIC_EMAIL, GColorVividCeruleanARGB8),
+ APP(IOS_PHONE_APP_ID, TIMELINE_RESOURCE_DURING_PHONE_CALL, GColorPictonBlueARGB8),
+ APP(IOS_REMINDERS_APP_ID, TIMELINE_RESOURCE_NOTIFICATION_REMINDER, GColorFollyARGB8),
+ APP(IOS_SMS_APP_ID, TIMELINE_RESOURCE_GENERIC_SMS, GColorIslamicGreenARGB8),
+ APP("com.atebits.Tweetie2", TIMELINE_RESOURCE_NOTIFICATION_TWITTER, GColorVividCeruleanARGB8),
+ APP("com.burbn.instagram", TIMELINE_RESOURCE_NOTIFICATION_INSTAGRAM, GColorCobaltBlueARGB8),
+ APP("com.facebook.Facebook", TIMELINE_RESOURCE_NOTIFICATION_FACEBOOK, GColorCobaltBlueARGB8),
+ APP("com.facebook.Messenger", TIMELINE_RESOURCE_NOTIFICATION_FACEBOOK_MESSENGER, GColorBlueMoonARGB8),
+ APP("com.getpebble.pebbletime", TIMELINE_RESOURCE_NOTIFICATION_FLAG, GColorOrangeARGB8),
+ APP("com.google.calendar", TIMELINE_RESOURCE_TIMELINE_CALENDAR, GColorVeryLightBlueARGB8),
+ APP("com.google.Gmail", TIMELINE_RESOURCE_NOTIFICATION_GMAIL, GColorRedARGB8),
+ APP("com.google.hangouts", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_HANGOUTS, GColorJaegerGreenARGB8),
+ APP("com.google.inbox", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_INBOX, GColorBlueMoonARGB8),
+ APP("com.microsoft.Office.Outlook", TIMELINE_RESOURCE_NOTIFICATION_OUTLOOK, GColorCobaltBlueARGB8),
+ APP("com.orchestra.v2", TIMELINE_RESOURCE_NOTIFICATION_MAILBOX, GColorVividCeruleanARGB8),
+ APP("com.skype.skype", TIMELINE_RESOURCE_NOTIFICATION_SKYPE, GColorVividCeruleanARGB8),
+ APP("com.tapbots.Tweetbot3", TIMELINE_RESOURCE_NOTIFICATION_TWITTER, GColorVividCeruleanARGB8),
+ APP("com.toyopagroup.picaboo", TIMELINE_RESOURCE_NOTIFICATION_SNAPCHAT, GColorIcterineARGB8),
+ APP("com.yahoo.Aerogram", TIMELINE_RESOURCE_NOTIFICATION_YAHOO_MAIL, GColorIndigoARGB8),
+ APP("jp.naver.line", TIMELINE_RESOURCE_NOTIFICATION_LINE, GColorIslamicGreenARGB8),
+ APP("net.whatsapp.WhatsApp", TIMELINE_RESOURCE_NOTIFICATION_WHATSAPP, GColorIslamicGreenARGB8),
+ APP("ph.telegra.Telegraph", TIMELINE_RESOURCE_NOTIFICATION_TELEGRAM, GColorVividCeruleanARGB8),
+ APP("com.blackberry.bbm1", TIMELINE_RESOURCE_NOTIFICATION_BLACKBERRY_MESSENGER, GColorDarkGrayARGB8),
+ APP("com.getpebble.pebbletime.enterprise", TIMELINE_RESOURCE_NOTIFICATION_FLAG, GColorOrangeARGB8),
+ APP("com.google.GoogleMobile", TIMELINE_RESOURCE_NOTIFICATION_GENERIC, GColorBlueMoonARGB8),
+ APP("com.google.ios.youtube", TIMELINE_RESOURCE_NOTIFICATION_YOUTUBE, GColorRedARGB8),
+ APP("com.hipchat.ios", TIMELINE_RESOURCE_NOTIFICATION_HIPCHAT, GColorCobaltBlueARGB8),
+ APP("com.iwilab.KakaoTalk", TIMELINE_RESOURCE_NOTIFICATION_KAKAOTALK, GColorYellowARGB8),
+ APP("com.kik.chat", TIMELINE_RESOURCE_NOTIFICATION_KIK, GColorIslamicGreenARGB8),
+ APP("com.tencent.xin", TIMELINE_RESOURCE_NOTIFICATION_WECHAT, GColorKellyGreenARGB8),
+ APP("com.viber", TIMELINE_RESOURCE_NOTIFICATION_VIBER, GColorVividVioletARGB8),
+ APP("com.amazon.Amazon", TIMELINE_RESOURCE_NOTIFICATION_AMAZON, GColorChromeYellowARGB8),
+ APP("com.google.Maps", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_MAPS, GColorBlueMoonARGB8),
+ APP("com.google.photos", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_PHOTOS, GColorBlueMoonARGB8),
+ APP("com.apple.mobileslideshow", TIMELINE_RESOURCE_NOTIFICATION_IOS_PHOTOS, GColorBlueMoonARGB8),
+ APP("com.linkedin.LinkedIn", TIMELINE_RESOURCE_NOTIFICATION_LINKEDIN, GColorCobaltBlueARGB8),
+ APP("com.tinyspeck.chatlyio", TIMELINE_RESOURCE_NOTIFICATION_SLACK, GColorFollyARGB8),
+ APP("com.automattic.beeper", TIMELINE_RESOURCE_NOTIFICATION_BEEPER, GColorVividVioletARGB8),
+ APP("xyz.blueskyweb.app", TIMELINE_RESOURCE_NOTIFICATION_BLUESKY, GColorVividCeruleanARGB8),
+ APP("com.hammerandchisel.discord", TIMELINE_RESOURCE_NOTIFICATION_DISCORD, GColorIndigoARGB8),
+ APP("com.duolingo.DuolingoMobile", TIMELINE_RESOURCE_NOTIFICATION_DUOLINGO, GColorGreenARGB8),
+ APP("im.vector.app", TIMELINE_RESOURCE_NOTIFICATION_ELEMENT, GColorMediumAquamarineARGB8),
+ APP("io.element.elementx", TIMELINE_RESOURCE_NOTIFICATION_ELEMENT, GColorDarkGreenARGB8),
+ APP("com.google.Dynamite", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_CHAT, GColorGreenARGB8),
+ APP("com.google.tasks", TIMELINE_RESOURCE_NOTIFICATION_GOOGLE_TASKS, GColorBlueMoonARGB8),
+ APP("io.robbie.HomeAssistant", TIMELINE_RESOURCE_NOTIFICATION_HOME_ASSISTANT, GColorVividCeruleanARGB8),
+ APP("com.valvesoftware.Steam", TIMELINE_RESOURCE_NOTIFICATION_STEAM, GColorCobaltBlueARGB8),
+ APP("com.microsoft.skype.teams", TIMELINE_RESOURCE_NOTIFICATION_TEAMS, GColorIndigoARGB8),
+ APP("com.burbn.barcelona", TIMELINE_RESOURCE_NOTIFICATION_THREADS, GColorDarkGrayARGB8),
+ APP("com.ubnt.protect", TIMELINE_RESOURCE_NOTIFICATION_UNIFI_PROTECT, GColorBlueMoonARGB8),
+ APP("us.zoom.videomeetings", TIMELINE_RESOURCE_NOTIFICATION_ZOOM, GColorVividCeruleanARGB8),
+ APP("com.ebay.iphone", TIMELINE_RESOURCE_NOTIFICATION_EBAY, GColorRedARGB8),
+ APP("org.whispersystems.signal", TIMELINE_RESOURCE_NOTIFICATION_SIGNAL, GColorBlueMoonARGB8),
+ APP("tv.twitch", TIMELINE_RESOURCE_NOTIFICATION_TWITCH, GColorVividVioletARGB8),
+ APP("com.airmailapp.iphone", TIMELINE_RESOURCE_NOTIFICATION_AIRMAIL, GColorBlueMoonARGB8),
+ APP("com.reddit.Reddit", TIMELINE_RESOURCE_NOTIFICATION_REDDIT, GColorOrangeARGB8),
+ APP("com.foursquare.robin", TIMELINE_RESOURCE_NOTIFICATION_SWARM, GColorOrangeARGB8),
+ APP("com.tplink.tapo", TIMELINE_RESOURCE_NOTIFICATION_TAPO, GColorVividCeruleanARGB8),
+ APP("com.revolut.revolut", TIMELINE_RESOURCE_PAY_BILL, GColorDarkGrayARGB8),
+ APP("com.transferwise.Transferwise", TIMELINE_RESOURCE_PAY_BILL, GColorGreenARGB8),
+ APP("de.no26.Number26", TIMELINE_RESOURCE_PAY_BILL, GColorCadetBlueARGB8),
+ APP("com.bunq.ios", TIMELINE_RESOURCE_PAY_BILL, GColorVividCeruleanARGB8),
+
+#undef APP
diff --git a/include/pbl/services/notifications/ancs/ancs_notifications.h b/include/pbl/services/notifications/ancs/ancs_notifications.h
new file mode 100644
index 0000000000..547483ea1a
--- /dev/null
+++ b/include/pbl/services/notifications/ancs/ancs_notifications.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+#include "comm/ble/kernel_le_client/ancs/ancs_types.h"
+#include "pbl/services/timeline/item.h"
+
+
+void ancs_notifications_handle_message(uint32_t uid,
+ ANCSProperty properties,
+ ANCSAttribute **notif_attributes,
+ ANCSAttribute **app_attributes);
+
+void ancs_notifications_handle_notification_removed(uint32_t ancs_uid, ANCSProperty properties);
diff --git a/include/pbl/services/notifications/ancs/ancs_notifications_util.h b/include/pbl/services/notifications/ancs/ancs_notifications_util.h
new file mode 100644
index 0000000000..3479d437da
--- /dev/null
+++ b/include/pbl/services/notifications/ancs/ancs_notifications_util.h
@@ -0,0 +1,40 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/graphics/gtypes.h"
+#include "comm/ble/kernel_le_client/ancs/ancs_types.h"
+#include "util/attributes.h"
+#include "util/time/time.h"
+
+#define IOS_PHONE_APP_ID "com.apple.mobilephone"
+#define IOS_CALENDAR_APP_ID "com.apple.mobilecal"
+#define IOS_REMINDERS_APP_ID "com.apple.reminders"
+#define IOS_MAIL_APP_ID "com.apple.mobilemail"
+#define IOS_SMS_APP_ID "com.apple.MobileSMS"
+#define IOS_FACETIME_APP_ID "com.apple.facetime"
+
+typedef struct PACKED ANCSAppMetadata {
+ const char *app_id;
+ uint32_t icon_id;
+#if PBL_COLOR
+ uint8_t app_color;
+#endif
+ bool is_blocked:1; //
#include
@@ -94,7 +81,7 @@ void do_not_disturb_handle_calendar_event(PebbleCalendarEvent *e);
void do_not_disturb_manual_toggle_with_dialog(void);
#if UNITTEST
-#include "services/common/new_timer/new_timer.h"
+#include "pbl/services/new_timer/new_timer.h"
TimerID get_dnd_timer_id(void);
void set_dnd_timer_id(TimerID id);
#endif
diff --git a/include/pbl/services/notifications/do_not_disturb_toggle.h b/include/pbl/services/notifications/do_not_disturb_toggle.h
new file mode 100644
index 0000000000..1ce8e3f86a
--- /dev/null
+++ b/include/pbl/services/notifications/do_not_disturb_toggle.h
@@ -0,0 +1,8 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/ui/action_toggle.h"
+
+void do_not_disturb_toggle_push(ActionTogglePrompt prompt, bool set_exit_reason);
diff --git a/include/pbl/services/notifications/notification_constants.h b/include/pbl/services/notifications/notification_constants.h
new file mode 100644
index 0000000000..e953026468
--- /dev/null
+++ b/include/pbl/services/notifications/notification_constants.h
@@ -0,0 +1,15 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/graphics/gtypes.h"
+
+#define SMS_REPLY_COLOR GColorIslamicGreen
+
+// Notif pref db key for send text
+#define SEND_TEXT_NOTIF_PREF_KEY "com.pebble.sendText"
+
+// Notif pref db keys for incoming call reply
+#define ANDROID_PHONE_KEY "com.pebble.android.phone"
+#define IOS_PHONE_KEY "com.apple.mobilephone"
diff --git a/src/fw/services/normal/notifications/notification_storage.h b/include/pbl/services/notifications/notification_storage.h
similarity index 82%
rename from src/fw/services/normal/notifications/notification_storage.h
rename to include/pbl/services/notifications/notification_storage.h
index 93fd4e4feb..4ad10b3e57 100644
--- a/src/fw/services/normal/notifications/notification_storage.h
+++ b/include/pbl/services/notifications/notification_storage.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/notifications/notification_storage_private.h b/include/pbl/services/notifications/notification_storage_private.h
new file mode 100644
index 0000000000..bd5d19127e
--- /dev/null
+++ b/include/pbl/services/notifications/notification_storage_private.h
@@ -0,0 +1,13 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Notification storage file size
+#define NOTIFICATION_STORAGE_FILE_SIZE (30 * 1024)
+
+//! Minimum increment of space to free up when compressing.
+//! The higher the value, the less often we need to compress,
+//! but we will lose more notifications
+#define NOTIFICATION_STORAGE_MINIMUM_INCREMENT_SIZE (NOTIFICATION_STORAGE_FILE_SIZE / 4)
+
diff --git a/include/pbl/services/notifications/notification_types.h b/include/pbl/services/notifications/notification_types.h
new file mode 100644
index 0000000000..7013d09524
--- /dev/null
+++ b/include/pbl/services/notifications/notification_types.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/uuid.h"
+
+//! This list is shared by notifications and reminders.
+typedef enum {
+ NotificationInvalid = 0,
+ NotificationMobile = (1 << 0),
+ NotificationPhoneCall = (1 << 1),
+ NotificationOther = (1 << 2),
+ NotificationReminder = (1 << 3)
+} NotificationType;
+
+//! Type and Id for the notification or reminder.
+typedef struct {
+ NotificationType type;
+ Uuid id;
+} NotificationInfo;
diff --git a/include/pbl/services/notifications/notifications.h b/include/pbl/services/notifications/notifications.h
new file mode 100644
index 0000000000..3722f080cf
--- /dev/null
+++ b/include/pbl/services/notifications/notifications.h
@@ -0,0 +1,51 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/timeline/item.h"
+
+#include
+#include
+
+typedef enum {
+ ActionResultTypeSuccess,
+ ActionResultTypeFailure,
+ ActionResultTypeChaining,
+ ActionResultTypeDoResponse,
+ ActionResultTypeSuccessANCSDismiss,
+} ActionResultType;
+
+typedef struct {
+ Uuid id;
+ ActionResultType type;
+ AttributeList attr_list;
+ TimelineItemActionGroup action_group;
+} PebbleSysNotificationActionResult;
+
+
+void notifications_init(void);
+
+//! Feedback for the result of an invoke action command
+void notifications_handle_notification_action_result(
+ PebbleSysNotificationActionResult *action_result);
+
+//! Add a notification.
+void notifications_handle_notification_added(Uuid *notification_id);
+
+//! Handle a notification getting acted upon on the phone
+void notifications_handle_notification_acted_upon(Uuid *notification_id);
+
+//! Remove a notification
+void notifications_handle_notification_removed(Uuid *notification_id);
+
+//! Notify of remove command from ANCS. Notification will be kept in history
+void notifications_handle_ancs_notification_removed(uint32_t ancs_uid);
+
+//! Migration hook for notifications
+//! Called with the GMT offset of the new timezone
+void notifications_migrate_timezone(const int new_tz_offset);
+
+//! Inserts a new notification into notification storage and notifies the system of the new item
+//! @param notification Pointer to the notification to add
+void notifications_add_notification(TimelineItem *notification);
diff --git a/include/pbl/services/orientation_manager.h b/include/pbl/services/orientation_manager.h
new file mode 100644
index 0000000000..151381445c
--- /dev/null
+++ b/include/pbl/services/orientation_manager.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#ifdef CONFIG_ORIENTATION_MANAGER
+#include "shell/prefs.h"
+
+void orientation_handle_prefs_changed(void);
+
+void orientation_manager_enable(bool on);
+#endif
\ No newline at end of file
diff --git a/include/pbl/services/persist.h b/include/pbl/services/persist.h
new file mode 100644
index 0000000000..048fe293a2
--- /dev/null
+++ b/include/pbl/services/persist.h
@@ -0,0 +1,47 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Persist service
+//!
+//! The persist service manages persistent app key-value stores. A persistent
+//! store is simply a SettingsFile identified by the app's UUID. The service
+//! manages the creation, opening and deletion of persist stores so that an app
+//! and its worker can both access the same file through a single file handle
+//! and SettingsFile state object.
+//!
+//! The persist service makes no attempt to make SettingsFile reentrant; it is
+//! the caller's responsibility to enforce mutual exclusion and prevent
+//! concurrent access to the SettingsFile.
+
+#include
+#include
+
+#include "util/uuid.h"
+#include "process_management/app_install_types.h"
+#include "system/status_codes.h"
+
+typedef struct SettingsFile SettingsFile;
+
+
+//! Initialize the persist service.
+void persist_service_init(void);
+
+//! Get the per-app persistent storage capacity in bytes.
+size_t persist_service_get_max_size(void);
+
+//! Lock and get the persist store for the given app.
+SettingsFile *persist_service_lock_and_get_store(const Uuid *uuid);
+
+//! Unlock the given persist store.
+void persist_service_unlock_store(SettingsFile *store);
+
+//! Call during each process's startup.
+void persist_service_client_open(const Uuid *uuid);
+
+//! Call once after proces exits to clean it up.
+void persist_service_client_close(const Uuid *uuid);
+
+//! Deletes the app's persist file.
+status_t persist_service_delete_file(const Uuid *uuid);
diff --git a/include/pbl/services/phone_call.h b/include/pbl/services/phone_call.h
new file mode 100644
index 0000000000..7e6ed18171
--- /dev/null
+++ b/include/pbl/services/phone_call.h
@@ -0,0 +1,12 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/events.h"
+
+void phone_call_service_init(void);
+
+void phone_call_answer(void);
+
+void phone_call_decline(void);
diff --git a/include/pbl/services/phone_call_util.h b/include/pbl/services/phone_call_util.h
new file mode 100644
index 0000000000..34fa58d058
--- /dev/null
+++ b/include/pbl/services/phone_call_util.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+typedef struct PebblePhoneCaller {
+ char *number;
+ char *name;
+} PebblePhoneCaller;
+
+//! Creates a new caller to pass as part of a phone event
+//! @param number The phone number for this caller
+//! @param name The name of the caller
+//! @return Pointer to new caller
+PebblePhoneCaller* phone_call_util_create_caller(const char *number, const char *name);
+
+//! Destroys a caller previously created with \ref phone_call_util_create_caller
+//! @param caller The caller to free
+void phone_call_util_destroy_caller(PebblePhoneCaller *caller);
diff --git a/include/pbl/services/phone_pp.h b/include/pbl/services/phone_pp.h
new file mode 100644
index 0000000000..41394ef08d
--- /dev/null
+++ b/include/pbl/services/phone_pp.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+
+void pp_answer_call(uint32_t cookie);
+
+void pp_decline_call(uint32_t cookie);
+
+void pp_get_phone_state(void);
+
+//! Enables or disables handling the Get Phone State responses.
+//! This is part of a work-around to ignore for stray requests that can be in flight after the phone
+//! call has been declined by the user from the Pebble.
+void pp_get_phone_state_set_enabled(bool enabled);
diff --git a/include/pbl/services/ping.h b/include/pbl/services/ping.h
new file mode 100644
index 0000000000..35d915d444
--- /dev/null
+++ b/include/pbl/services/ping.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+// If a ping is due to be sent, send it. This should be called when we are already sending other
+// data to the phone anyways in order to minimize the number of times we have to wake up the phone.
+// It will return without doing anything if a minimum amount of time (currently 1 hour)
+// has not elapsed since the last ping was sent out.
+void ping_send_if_due(void);
diff --git a/src/fw/services/common/poll_remote.h b/include/pbl/services/poll_remote.h
similarity index 75%
rename from src/fw/services/common/poll_remote.h
rename to include/pbl/services/poll_remote.h
index 108ea7c4f6..8a3d27c540 100644
--- a/src/fw/services/common/poll_remote.h
+++ b/include/pbl/services/poll_remote.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
//! @file poll_remote.h
//! @brief Subsystem to send a "poll services" message at regular intervals to the iOS app.
@@ -22,7 +9,7 @@
//! @author martijn
#pragma once
-#include "services/common/regular_timer.h"
+#include "pbl/services/regular_timer.h"
#include
typedef enum {
diff --git a/include/pbl/services/powermode_service.h b/include/pbl/services/powermode_service.h
new file mode 100644
index 0000000000..6a1114fdb5
--- /dev/null
+++ b/include/pbl/services/powermode_service.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Initialize the power mode service.
+void powermode_service_init(void);
+
+//! Enable or disable the power mode service. When disabled, request and
+//! release calls are no-ops.
+void powermode_service_set_enabled(bool enabled);
+
+//! Request high-performance CPU mode. Must be paired with a
+//! powermode_service_release_hp() call.
+void powermode_service_request_hp(void);
+
+//! Release a previously requested high-performance mode. The CPU will
+//! return to low-power mode only when all clients have released.
+void powermode_service_release_hp(void);
diff --git a/include/pbl/services/prf_update.h b/include/pbl/services/prf_update.h
new file mode 100644
index 0000000000..6e7a1320d0
--- /dev/null
+++ b/include/pbl/services/prf_update.h
@@ -0,0 +1,6 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+void check_prf_update(void);
diff --git a/include/pbl/services/process_management/app_order_storage.h b/include/pbl/services/process_management/app_order_storage.h
new file mode 100644
index 0000000000..55ee594d5e
--- /dev/null
+++ b/include/pbl/services/process_management/app_order_storage.h
@@ -0,0 +1,26 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "process_management/app_install_manager.h"
+#include "util/attributes.h"
+
+typedef struct PACKED AppMenuOrderStorage {
+ uint8_t list_length;
+ AppInstallId id_list[];
+} AppMenuOrderStorage;
+
+void app_order_storage_init(void);
+
+#if UNITTEST
+//! Reset app_order_storage state for testing - clears cached "file missing" flag.
+//! Not built into production firmware (tests only).
+void app_order_storage_reset_for_tests(void);
+#endif
+
+//! Returns an AppMenuOrderStorage struct on the kernel heap
+AppMenuOrderStorage *app_order_read_order(void);
+
+//! Writes a list of UUID's to the order file
+void write_uuid_list_to_file(const Uuid *uuid_list, uint8_t count);
diff --git a/src/fw/services/normal/process_management/app_storage.h b/include/pbl/services/process_management/app_storage.h
similarity index 81%
rename from src/fw/services/normal/process_management/app_storage.h
rename to include/pbl/services/process_management/app_storage.h
index 2e69307529..3715dd2b4d 100644
--- a/src/fw/services/normal/process_management/app_storage.h
+++ b/include/pbl/services/process_management/app_storage.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/process_management/process_loader_flash.h b/include/pbl/services/process_management/process_loader_flash.h
new file mode 100644
index 0000000000..dd0b300805
--- /dev/null
+++ b/include/pbl/services/process_management/process_loader_flash.h
@@ -0,0 +1,6 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+bool process_loader_load_from_flash(PebbleTask task, const ProcessConfig *config,
+ const PebbleProcessMd *app_md) {
+}
diff --git a/src/fw/services/normal/protobuf_log/protobuf_log.h b/include/pbl/services/protobuf_log/protobuf_log.h
similarity index 90%
rename from src/fw/services/normal/protobuf_log/protobuf_log.h
rename to include/pbl/services/protobuf_log/protobuf_log.h
index 413d5bc0db..15096d79c5 100644
--- a/src/fw/services/normal/protobuf_log/protobuf_log.h
+++ b/include/pbl/services/protobuf_log/protobuf_log.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -20,8 +7,8 @@
//! using the protobuf schema defined at src/fw/idl/nanopb/*.proto and sent to the phone via
//! data logging.
-#include "services/common/hrm/hrm_manager.h"
-#include "services/normal/data_logging/dls_private.h"
+#include "pbl/services/hrm/hrm_manager.h"
+#include "pbl/services/data_logging/dls_private.h"
#include "system/version.h"
#include "util/uuid.h"
diff --git a/include/pbl/services/protobuf_log/protobuf_log_activity_sessions.h b/include/pbl/services/protobuf_log/protobuf_log_activity_sessions.h
new file mode 100644
index 0000000000..7afd77d159
--- /dev/null
+++ b/include/pbl/services/protobuf_log/protobuf_log_activity_sessions.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "protobuf_log.h"
+
+#include "pbl/services/hrm/hrm_manager.h"
+#include "pbl/services/activity/activity.h"
+
+#include
+#include
+
+ProtobufLogRef protobuf_log_activity_sessions_create(void);
+
+bool protobuf_log_activity_sessions_add(ProtobufLogRef ref, time_t sample_utc,
+ ActivitySession *session);
+
+bool protobuf_log_activity_sessions_decode(pebble_pipeline_Event *event_in,
+ ActivitySession *session_out);
diff --git a/include/pbl/services/protobuf_log/protobuf_log_hr.h b/include/pbl/services/protobuf_log/protobuf_log_hr.h
new file mode 100644
index 0000000000..55324b4512
--- /dev/null
+++ b/include/pbl/services/protobuf_log/protobuf_log_hr.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "protobuf_log.h"
+
+#include "pbl/services/hrm/hrm_manager.h"
+
+#include
+#include
+#include
+
+ProtobufLogRef protobuf_log_hr_create(ProtobufLogTransportCB transport);
+
+bool protobuf_log_hr_add_sample(ProtobufLogRef ref, time_t sample_utc, uint8_t bpm,
+ HRMQuality quality);
diff --git a/include/pbl/services/protobuf_log/protobuf_log_private.h b/include/pbl/services/protobuf_log/protobuf_log_private.h
new file mode 100644
index 0000000000..9ef4fe956e
--- /dev/null
+++ b/include/pbl/services/protobuf_log/protobuf_log_private.h
@@ -0,0 +1,36 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pb.h"
+#include "pb_decode.h"
+#include "pb_encode.h"
+
+#include "protobuf_log.h"
+
+#include "util/attributes.h"
+
+#include
+
+// This fixed size header is placed at the beginning of the buffer, before the protobuf
+// encoded message
+typedef struct PACKED {
+ uint16_t msg_size;
+} PLogMessageHdr;
+
+// Internal structure of a protobuf log session
+typedef struct PLogSession {
+ // TODO Change comments from MeasurementSet to MeasurementSet/Events
+
+ ProtobufLogConfig config;
+ uint8_t *msg_buffer; // allocated buffer for the final record: PLogMessageHdr + Payload
+ uint8_t *data_buffer; // allocated buffer for the encoded data blob. (e.g. MeasurementSet)
+ // We form the MeasurementSet first, and then after it's complete we
+ // copy it into msg_buffer inside of a Payload
+ size_t max_msg_size; // max # of bytes to use in the allocated buffer
+ size_t max_data_size; // max allowed size of the encoded data blob
+ pb_ostream_t data_stream; // output stream we are writing the data blob to
+ time_t start_utc; // UTC time when session was created
+ ProtobufLogTransportCB transport;
+} PLogSession;
diff --git a/src/fw/services/normal/protobuf_log/protobuf_log_test.h b/include/pbl/services/protobuf_log/protobuf_log_test.h
similarity index 89%
rename from src/fw/services/normal/protobuf_log/protobuf_log_test.h
rename to include/pbl/services/protobuf_log/protobuf_log_test.h
index ddcb1ad8c4..8ab4012750 100644
--- a/src/fw/services/normal/protobuf_log/protobuf_log_test.h
+++ b/include/pbl/services/protobuf_log/protobuf_log_test.h
@@ -1,23 +1,10 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "protobuf_log.h"
-#include "services/normal/activity/activity.h"
+#include "pbl/services/activity/activity.h"
#include
diff --git a/src/fw/services/normal/protobuf_log/protobuf_log_util.h b/include/pbl/services/protobuf_log/protobuf_log_util.h
similarity index 75%
rename from src/fw/services/normal/protobuf_log/protobuf_log_util.h
rename to include/pbl/services/protobuf_log/protobuf_log_util.h
index cb056083f5..a70cd315c7 100644
--- a/src/fw/services/normal/protobuf_log/protobuf_log_util.h
+++ b/include/pbl/services/protobuf_log/protobuf_log_util.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/put_bytes/put_bytes.h b/include/pbl/services/put_bytes/put_bytes.h
new file mode 100644
index 0000000000..2056365740
--- /dev/null
+++ b/include/pbl/services/put_bytes/put_bytes.h
@@ -0,0 +1,45 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+
+typedef struct PebbleCommSessionEvent PebbleCommSessionEvent;
+
+typedef enum {
+ ObjectUnknown = 0x00,
+ ObjectFirmware = 0x01,
+ ObjectRecovery = 0x02,
+ ObjectSysResources = 0x03,
+ ObjectAppResources = 0x04,
+ ObjectWatchApp = 0x05,
+ ObjectFile = 0x06,
+ ObjectWatchWorker = 0x07,
+ NumObjects
+} PutBytesObjectType;
+
+typedef struct PbInstallStatus {
+ uint32_t num_bytes_written;
+ uint32_t crc_of_bytes;
+} PbInstallStatus;
+
+void put_bytes_init(void);
+
+//! Tells put_bytes to clean up instantly. If put_bytes is already cleaned up, this is a no-op.
+//! Any future messages sent by clients will be NACK'ed appropriately.
+//! NOTE: Must be called from the KernelBackground task.
+void put_bytes_cancel(void);
+
+//! Reset all put bytes state. Only useful for unit tests.
+void put_bytes_deinit(void);
+
+//! Sets an initialization timeout for put_bytes.
+//! If the phone doesn't send any data within the specified timeout,
+//! put_bytes raises a timeout event.
+void put_bytes_expect_init(uint32_t timeout_ms);
+
+//! Informs Put Bytes when the Pebble app disconnects to the Pebble, to make
+//! it cancel any on-going transaction.
+void put_bytes_handle_comm_session_event(const PebbleCommSessionEvent *app_event);
diff --git a/src/fw/services/common/put_bytes/put_bytes_storage.h b/include/pbl/services/put_bytes/put_bytes_storage.h
similarity index 84%
rename from src/fw/services/common/put_bytes/put_bytes_storage.h
rename to include/pbl/services/put_bytes/put_bytes_storage.h
index 9712845aca..719a33f381 100644
--- a/src/fw/services/common/put_bytes/put_bytes_storage.h
+++ b/include/pbl/services/put_bytes/put_bytes_storage.h
@@ -1,25 +1,12 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include
#include
-#include "services/common/put_bytes/put_bytes.h"
+#include "pbl/services/put_bytes/put_bytes.h"
struct PutBytesStorageImplementation;
typedef struct PutBytesStorageImplementation PutBytesStorageImplementation;
diff --git a/include/pbl/services/put_bytes/put_bytes_storage_file.h b/include/pbl/services/put_bytes/put_bytes_storage_file.h
new file mode 100644
index 0000000000..492dbb2720
--- /dev/null
+++ b/include/pbl/services/put_bytes/put_bytes_storage_file.h
@@ -0,0 +1,18 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "put_bytes_storage.h"
+
+bool pb_storage_file_init(PutBytesStorage *storage, PutBytesObjectType object_type,
+ uint32_t total_size, PutBytesStorageInfo *info, uint32_t append_offset);
+
+uint32_t pb_storage_file_get_max_size(PutBytesObjectType object_type);
+
+void pb_storage_file_write(PutBytesStorage *storage, uint32_t offset, const uint8_t *buffer,
+ uint32_t length);
+
+uint32_t pb_storage_file_calculate_crc(PutBytesStorage *storage, PutBytesCrcType crc_type);
+
+void pb_storage_file_deinit(PutBytesStorage *storage, bool is_success);
diff --git a/include/pbl/services/put_bytes/put_bytes_storage_internal.h b/include/pbl/services/put_bytes/put_bytes_storage_internal.h
new file mode 100644
index 0000000000..5fb8063ed7
--- /dev/null
+++ b/include/pbl/services/put_bytes/put_bytes_storage_internal.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "put_bytes_storage.h"
+
+#include
+
+typedef struct PutBytesStorageImplementation {
+ bool (*init)(PutBytesStorage *storage, PutBytesObjectType object_type,
+ uint32_t total_size, PutBytesStorageInfo *info, uint32_t append_offset);
+
+ uint32_t (*get_max_size)(PutBytesObjectType object_type);
+
+ void (*write)(PutBytesStorage *storage, uint32_t offset, const uint8_t *buffer, uint32_t length);
+
+ uint32_t (*calculate_crc)(PutBytesStorage *storage, PutBytesCrcType crc_type);
+
+ void (*deinit)(PutBytesStorage *storage, bool is_success);
+} PutBytesStorageImplementation;
diff --git a/include/pbl/services/put_bytes/put_bytes_storage_raw.h b/include/pbl/services/put_bytes/put_bytes_storage_raw.h
new file mode 100644
index 0000000000..6151a4f73f
--- /dev/null
+++ b/include/pbl/services/put_bytes/put_bytes_storage_raw.h
@@ -0,0 +1,24 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "put_bytes_storage.h"
+
+#include
+
+bool pb_storage_raw_init(PutBytesStorage *storage, PutBytesObjectType object_type,
+ uint32_t total_size, PutBytesStorageInfo *info, uint32_t append_offset);
+
+uint32_t pb_storage_raw_get_max_size(PutBytesObjectType object_type);
+
+void pb_storage_raw_write(PutBytesStorage *storage, uint32_t offset, const uint8_t *buffer,
+ uint32_t length);
+
+uint32_t pb_storage_raw_calculate_crc(PutBytesStorage *storage, PutBytesCrcType crc_type);
+
+
+void pb_storage_raw_deinit(PutBytesStorage *storage, bool is_success);
+
+
+bool pb_storage_raw_get_status(PutBytesObjectType obj_type, PbInstallStatus *status);
diff --git a/include/pbl/services/registry_endpoint.h b/include/pbl/services/registry_endpoint.h
new file mode 100644
index 0000000000..0765bc349d
--- /dev/null
+++ b/include/pbl/services/registry_endpoint.h
@@ -0,0 +1,15 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/comm_session/protocol.h"
+
+typedef enum {
+ RegistryEndpointIdSystem = 5000,
+ RegistryEndpointIdFactory = 5001,
+} RegistryEndpointId;
+
+void registry_endpoint_callback(CommSession *session, const uint8_t* data, unsigned int length_bytes);
+
+void factory_registry_endpoint_callback(CommSession *session, const uint8_t* data, unsigned int length_bytes);
diff --git a/src/fw/services/common/regular_timer.h b/include/pbl/services/regular_timer.h
similarity index 83%
rename from src/fw/services/common/regular_timer.h
rename to include/pbl/services/regular_timer.h
index 737f9e9534..c253387111 100644
--- a/src/fw/services/common/regular_timer.h
+++ b/include/pbl/services/regular_timer.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/runlevel.def b/include/pbl/services/runlevel.def
new file mode 100644
index 0000000000..24b0940b22
--- /dev/null
+++ b/include/pbl/services/runlevel.def
@@ -0,0 +1,11 @@
+// Run Level definitions
+//
+// To add a new runlevel definition, add a new line with RUNLEVEL(number, name).
+
+RUNLEVEL(0, BareMinimum)
+RUNLEVEL(1, LowPower)
+RUNLEVEL(2, Stationary)
+RUNLEVEL(3, FirmwareUpdate)
+RUNLEVEL(4, Normal)
+
+// vim:filetype=c
diff --git a/src/fw/services/runlevel.h b/include/pbl/services/runlevel.h
similarity index 84%
rename from src/fw/services/runlevel.h
rename to include/pbl/services/runlevel.h
index d41f368897..9a9a7f89ed 100644
--- a/src/fw/services/runlevel.h
+++ b/include/pbl/services/runlevel.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/runlevel_impl.h b/include/pbl/services/runlevel_impl.h
new file mode 100644
index 0000000000..e0b25a7255
--- /dev/null
+++ b/include/pbl/services/runlevel_impl.h
@@ -0,0 +1,40 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+// Definitions used to implement runlevels.
+//
+// The set of runlevels is defined in the runlevel.def X-Macro file. These
+// definitions are used to construct two enums, RunLevel (in runlevel.h) and
+// RunLevelBit (in this header).
+//
+// The set of runlevels for which a service should be enabled is defined by
+// bitwise-OR-ing the RunLevelBit constants for every runlevel that the service
+// should be enabled in to form an enable-mask. Testing whether a service should
+// be enabled for a given runlevel is simply
+// (enable_mask & (1 << runlevel) != 0).
+//
+// The RunLevelBit constants take the form R_ to minimize visual clutter
+// when defining enable-masks. Since this header is only included in the source
+// files for which enable-masks are defined, the potential for namespace
+// pollution is minimized.
+
+#define RUNLEVEL(number, name) _Static_assert( \
+ 0 <= number && number <= 31, \
+ "The numeric value of runlevel " #name " (" #number ")" \
+ " is out of range. Only runlevels in the range 0 <= level <= 31" \
+ " are supported.");
+#include "runlevel.def"
+#undef RUNLEVEL
+
+typedef enum RunLevelBit {
+#define RUNLEVEL(number, name) R_##name = (1 << number),
+#include "runlevel.def"
+#undef RUNLEVEL
+} RunLevelBit;
+
+struct ServiceRunLevelSetting {
+ void (*set_enable_fn)(bool);
+ RunLevelBit enable_mask;
+};
diff --git a/include/pbl/services/send_text_service.h b/include/pbl/services/send_text_service.h
new file mode 100644
index 0000000000..77fa8e19d7
--- /dev/null
+++ b/include/pbl/services/send_text_service.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Currently this file serves as a cache for the existence of the SEND_TEXT_NOTIF_PREF_KEY, and
+//! a reply action within that key.
+//! This is required because a user can have a supported mobile app but not a supported carrier,
+//! and in that case we don't want to show the app in the launcher.
+//! We cache the existence of this key so that the launcher isn't slowed down by flash reads
+
+void send_text_service_init(void);
+
+bool send_text_service_is_send_text_supported(void);
diff --git a/include/pbl/services/services.h b/include/pbl/services/services.h
new file mode 100644
index 0000000000..167ffaaa04
--- /dev/null
+++ b/include/pbl/services/services.h
@@ -0,0 +1,9 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Initialize services that our kernel depends on
+void services_early_init(void);
+
+void services_init(void);
diff --git a/include/pbl/services/services_common.h b/include/pbl/services/services_common.h
new file mode 100644
index 0000000000..e5c354b59c
--- /dev/null
+++ b/include/pbl/services/services_common.h
@@ -0,0 +1,10 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/runlevel.h"
+
+void services_common_init(void);
+
+void services_common_set_runlevel(RunLevel runlevel);
diff --git a/include/pbl/services/services_normal.h b/include/pbl/services/services_normal.h
new file mode 100644
index 0000000000..546b82675b
--- /dev/null
+++ b/include/pbl/services/services_normal.h
@@ -0,0 +1,12 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/runlevel.h"
+
+void services_normal_early_init(void);
+
+void services_normal_init(void);
+
+void services_normal_set_runlevel(RunLevel runlevel);
diff --git a/include/pbl/services/settings/settings_file.h b/include/pbl/services/settings/settings_file.h
new file mode 100644
index 0000000000..69f3caaa59
--- /dev/null
+++ b/include/pbl/services/settings/settings_file.h
@@ -0,0 +1,203 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "settings_raw_iter.h"
+
+#include
+
+// Deleted records have their key stick around for at least DELETED_LIFETIME
+// before they can be garbage collected from the file in which they are
+// contained, that way they have time to propegate to all devices we end up
+// syncronizing with. For more information, refer to the sync protocol proposal:
+// https://pebbletechnology.atlassian.net/wiki/pages/viewpage.action?pageId=26837564
+//
+// FIXME: See PBL-18945
+#define DELETED_LIFETIME (0 * SECONDS_PER_DAY)
+
+//! A SettingsFile is just a simple binary key-value store. Keys can be strings,
+//! uint32_ts, or arbitrary bytes. Values are similarilly flexible. All
+//! operations are atomic, so a reboot in the middle of changing the value for a
+//! key will always either complete, returning the new value upon reboot, or
+//! will just return the old value.
+//! It also supports bidirection syncronization between the phone & watch,
+//! using timestamps to resolve conflicts.
+//! Note that although all operations are atomic, they are not thread-safe. If
+//! you will be accessing a SettingsFile from multiple threads, make sure you
+//! use locks!
+
+// NOTE: These fields are internal, modify them at your own risk!
+typedef struct SettingsFile {
+ SettingsRawIter iter;
+ char *name;
+
+ //! Maximum total space which can be used by this settings_file before a
+ //! compaction will be forced. (Must be >= max_used_space)
+ int max_space_total;
+
+ //! Maximum space that can be used by valid records within this settings_file.
+ //! Once this has been exceeded, attempting to add more keys or values will
+ //! fail.
+ int max_used_space;
+
+ //! The current allocation budget for physical file size. For growable files,
+ //! this starts at a small initial value and grows toward max_used_space on
+ //! demand. For non-growable files, this equals max_used_space.
+ int alloc_used_space;
+
+ //! The floor for alloc_used_space. Compact will not shrink below this. For
+ //! growable files this is the initial_alloc_size requested at open time;
+ //! for non-growable files this equals max_used_space (no shrink).
+ int min_alloc_used_space;
+
+ //! Amount of space in the settings_file that is currently dead, i.e.
+ //! has been written to with some data, but that data is no longer valid.
+ //! (overwritten records get added to this)
+ int dead_space;
+
+ //! Amount of space in the settings_file that is currently used by valid
+ //! records.
+ int used_space;
+
+ //! When this file as a whole was last_modified.
+ //! Defined as records.max(&:last_modified)
+ uint32_t last_modified;
+
+ //! The position of the current record in the iteration (if any). Necessary
+ //! so that clients can read other records in the middle of iteration (i.e.
+ //! settings_file_each()/settings_file_rewrite()), without messing up the
+ //! state of the iteration. Set to 0 if not in use.
+ int cur_record_pos;
+} SettingsFile;
+
+
+//! max_used_space should be >= 5317 for persist files to make sure we can
+//! always fit all of the records in the worst case (if the programmer stored
+//! nothing but booleans).
+//! Note: If the settings file already exists, the max_used_space parameter is
+//! ignored. We could change this if the need arises.
+status_t settings_file_open(SettingsFile *file, const char *name,
+ int max_used_space);
+status_t settings_file_open_growable(SettingsFile *file, const char *name,
+ int max_used_space, int initial_alloc_size);
+void settings_file_close(SettingsFile *file);
+
+bool settings_file_exists(SettingsFile *file, const void *key, size_t key_len);
+status_t settings_file_delete(SettingsFile *file,
+ const void *key, size_t key_len);
+
+int settings_file_get_len(SettingsFile *file, const void *key, size_t key_len);
+//! val_out_len must exactly match the length of the record on disk.
+status_t settings_file_get(SettingsFile *file, const void *key, size_t key_len,
+ void *val_out, size_t val_out_len);
+status_t settings_file_set(SettingsFile *file, const void *key, size_t key_len,
+ const void *val, size_t val_len);
+
+//! Set a record with a specific timestamp instead of the current time.
+//! This is useful when rewriting files and preserving original timestamps.
+//! @param file the settings_file in which to set the value
+//! @param key the key to set
+//! @param key_len the length of the key
+//! @param val the value to set
+//! @param val_len the length of the value
+//! @param timestamp the timestamp to use for the record
+status_t settings_file_set_with_timestamp(SettingsFile *file, const void *key, size_t key_len,
+ const void *val, size_t val_len, uint32_t timestamp);
+
+//! Mark a record as synced. The flag will remain until the record is overwritten
+//! @param file the settings_file that contains the record
+//! @param key the key to the settings file. Note: keys can be up to 127 bytes
+//! @param key_len the length of the key
+status_t settings_file_mark_synced(SettingsFile *file, const void *key, size_t key_len);
+
+//! Mark all records as dirty (not synced) by rewriting the file.
+//! This is used to trigger a full sync of all settings.
+//! @param file the settings_file to mark dirty
+//! @note This rewrites the entire file, which can be slow for large files.
+status_t settings_file_mark_all_dirty(SettingsFile *file);
+
+//! Callback invoked when a setting is changed via settings_file_set
+//! @param file the settings file that was modified
+//! @param key the key that was set
+//! @param key_len the length of the key
+//! @param last_modified the timestamp of the change
+typedef void (*SettingsFileChangeCallback)(SettingsFile *file, const void *key, int key_len,
+ time_t last_modified);
+
+//! Register a callback to be invoked when settings change
+//! @param callback the callback to register (NULL to unregister)
+void settings_file_set_change_callback(SettingsFileChangeCallback callback);
+
+//! set a byte in a setting. This can only be used a byte at a time to guarantee
+//! atomicity. Do not use to modify several bytes in a row!
+//! Note that only the reset bits will be applied (it writes flash directly)
+status_t settings_file_set_byte(
+ SettingsFile *file, const void *key, size_t key_len,
+ size_t offset, uint8_t byte);
+
+
+
+ //////////////////
+ // Each/rewrite //
+//////////////////
+typedef void (*SettingsFileGetter)(SettingsFile *file,
+ void *buf, size_t buf_len);
+
+typedef struct {
+ uint32_t last_modified;
+ SettingsFileGetter get_key;
+ int key_len;
+ SettingsFileGetter get_val;
+ int val_len;
+ bool dirty; // has the dirty flag set
+} SettingsRecordInfo;
+
+//! Callback used for using settings_file_each.
+//! The bool returned is used to control the iteration.
+//! - If a callback returns true, the iteration continues
+//! - If a callback returns false, the ieration stops.
+typedef bool (*SettingsFileEachCallback)(SettingsFile *file,
+ SettingsRecordInfo *info,
+ void *context);
+//! Calls cb for each and every entry within the given file.
+//! Note that you cannot modify the settings file while iterating. If you want
+//! to do this, try settings_file_rewrite instead. (you can read other entries
+//! without fault).
+status_t settings_file_each(SettingsFile *file, SettingsFileEachCallback cb,
+ void *context);
+
+
+typedef void (*SettingsFileRewriteCallback)(SettingsFile *old_file,
+ SettingsFile *new_file,
+ SettingsRecordInfo *info,
+ void *context);
+//! Opens a new SettingsFile with the same name as the original SettingsFile,
+//! in overwrite mode. This new file is passed into the given
+//! SettingsFileRewriteCallback, which is called for each entry within the
+//! original file. If you desire to preserve a key/value pair, you must write
+//! it to the new file.
+status_t settings_file_rewrite(SettingsFile *file,
+ SettingsFileRewriteCallback cb,
+ void *context);
+
+
+//! Callback used for using settings_file_rewrite_filtered.
+//! The bool returned is used to control whether or not the record is included in the file
+//! after compaction. This callback is not allowed to use any other settings_file calls.
+//! - If callback returns true, the record is included
+//! - If callback returns false, the record is not included
+typedef bool (*SettingsFileRewriteFilterCallback)(void *key, size_t key_len, void *value,
+ size_t value_len, void *context);
+
+//! Opens a new SettingsFile with the same name as the original SettingsFile,
+//! in overwrite mode. Any records from the old file which pass through the filter_cb with
+//! a true result are included into the new file. This call is much faster than using
+//! settings_file_rewrite if all you are doing is excluding specific records from the old file.
+status_t settings_file_rewrite_filtered(SettingsFile *file,
+ SettingsFileRewriteFilterCallback filter_cb, void *context);
+
+//! Compact the file: rewrite all live records and, for growable files, drop
+//! alloc_used_space toward min_alloc_used_space. Useful for shrinking growable
+//! settings files that grew under load and have since had records removed.
+status_t settings_file_compact(SettingsFile *file);
diff --git a/src/fw/services/normal/settings/settings_raw_iter.h b/include/pbl/services/settings/settings_raw_iter.h
similarity index 89%
rename from src/fw/services/normal/settings/settings_raw_iter.h
rename to include/pbl/services/settings/settings_raw_iter.h
index 72e76cd6c1..3381c84f54 100644
--- a/src/fw/services/normal/settings/settings_raw_iter.h
+++ b/include/pbl/services/settings/settings_raw_iter.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -125,11 +112,20 @@ int settings_raw_iter_get_resumed_record_pos(SettingsRawIter *iter);
void settings_raw_iter_read_key(SettingsRawIter *iter, uint8_t *key);
void settings_raw_iter_read_val(SettingsRawIter *iter, uint8_t *val, int val_len);
+//! Read key and value into a single contiguous buffer in one PFS call.
+//! key_val_out must be at least key_len + val_len bytes. Key occupies the first
+//! key_len bytes, val the next val_len bytes.
+void settings_raw_iter_read_key_val(SettingsRawIter *iter, uint8_t *key_val_out);
+
//! Write (over top of) the header/key/val for the current record.
void settings_raw_iter_write_header(SettingsRawIter *iter, SettingsRecordHeader *hdr);
void settings_raw_iter_write_key(SettingsRawIter *iter, const uint8_t *key);
void settings_raw_iter_write_val(SettingsRawIter *iter, const uint8_t *val);
+//! Write key and value from a single contiguous buffer in one PFS call.
+//! Layout matches settings_raw_iter_read_key_val.
+void settings_raw_iter_write_key_val(SettingsRawIter *iter, const uint8_t *key_val);
+
//! Write a byte in place for the current record
void settings_raw_iter_write_byte(SettingsRawIter *iter, int offset, uint8_t byte);
diff --git a/src/fw/services/common/shared_prf_storage/shared_prf_storage.h b/include/pbl/services/shared_prf_storage/shared_prf_storage.h
similarity index 88%
rename from src/fw/services/common/shared_prf_storage/shared_prf_storage.h
rename to include/pbl/services/shared_prf_storage/shared_prf_storage.h
index c94c7b7e47..992c4382f6 100644
--- a/src/fw/services/common/shared_prf_storage/shared_prf_storage.h
+++ b/include/pbl/services/shared_prf_storage/shared_prf_storage.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/shared_prf_storage/shared_prf_storage_debug.h b/include/pbl/services/shared_prf_storage/shared_prf_storage_debug.h
new file mode 100644
index 0000000000..17c6567f64
--- /dev/null
+++ b/include/pbl/services/shared_prf_storage/shared_prf_storage_debug.h
@@ -0,0 +1,6 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+void shared_prf_storage_dump_contents(void);
diff --git a/include/pbl/services/shared_prf_storage/v2_sprf/shared_prf_storage_private.h b/include/pbl/services/shared_prf_storage/v2_sprf/shared_prf_storage_private.h
new file mode 100644
index 0000000000..7a12ee9835
--- /dev/null
+++ b/include/pbl/services/shared_prf_storage/v2_sprf/shared_prf_storage_private.h
@@ -0,0 +1,71 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+
+#include
+#include
+
+//! Used to version the struct if we have to add additional fields in the future.
+//! 1: Added BLE and BT Classic pairing data
+//! 2: Added getting started is complete bit
+//! 3: Added remote Rand, remote EDIV, local DIV, local EDIV, is_..._valid flags, local device name
+#define SHARED_PRF_STORAGE_VERSION 3
+
+typedef struct PACKED {
+ // Remote device name
+ char name[BT_DEVICE_NAME_BUFFER_SIZE];
+
+ // DIV / EDIV that was handed to the remote with our LTK (used when Pebble is Slave):
+ uint16_t local_ediv;
+ uint16_t local_div;
+
+ // Remote encryption info (used when Pebble is Master):
+ SMLongTermKey ltk;
+ uint64_t rand;
+ uint16_t ediv;
+
+ // Remote identity info (used when Pebble is Slave):
+ SMIdentityResolvingKey irk;
+ BTDeviceInternal identity;
+
+ // Remote signature key:
+ SM128BitKey csrk;
+
+ //! True if local_div and local_ediv are valid
+ bool is_local_encryption_info_valid:1;
+
+ //! True if ltk, rand and ediv are valid
+ bool is_remote_encryption_info_valid:1;
+
+ //! True if irk and identity are valid
+ bool is_remote_identity_info_valid:1;
+
+ //! True if csrk is valid
+ //! @note Since iOS 9, CSRK is no longer exchanged.
+ bool is_remote_signing_info_valid:1;
+} BLEPairingData;
+
+typedef struct PACKED {
+ BTDeviceAddress address;
+ SM128BitKey link_key;
+ char name[BT_DEVICE_NAME_BUFFER_SIZE];
+ uint8_t platform_bits;
+} BTClassicPairingData;
+
+typedef struct PACKED {
+ uint32_t version;
+
+ // Customized local device name, or zero-length string if the default device name should be used
+ char local_device_name[BT_DEVICE_NAME_BUFFER_SIZE];
+
+ SM128BitKey root_keys[SMRootKeyTypeNum]; // ER and IR key
+
+ // We rely on these two pieces of data being adjacent to each other
+ BLEPairingData ble_data;
+ BTClassicPairingData bt_classic_data;
+
+ bool getting_started_is_complete;
+} SharedPRFData;
diff --git a/include/pbl/services/shared_prf_storage/v3_sprf/shared_prf_storage_private.h b/include/pbl/services/shared_prf_storage/v3_sprf/shared_prf_storage_private.h
new file mode 100644
index 0000000000..adc098f228
--- /dev/null
+++ b/include/pbl/services/shared_prf_storage/v3_sprf/shared_prf_storage_private.h
@@ -0,0 +1,144 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/shared_prf_storage/shared_prf_storage.h"
+
+#include
+#include
+
+#include
+
+#define SPRF_PAGE_IDX_INVALID ((uint16_t)~0)
+
+#define SPRF_MAX_NUM_PAGES_MULT(num) ((num) * 3 / 4)
+
+typedef enum {
+ SprfValidFields_LocalEncryptionInfoValid = (1 << 0),
+ SprfValidFields_RemoteEncryptionInfoValid = (1 << 1),
+ SprfValidFields_RemoteIdentityInfoValid = (1 << 2),
+ SprfValidFields_RemoteSigningInfoValid = (1 << 3),
+} SprfValidFields;
+
+#ifndef __clang__
+_Static_assert(sizeof(SprfValidFields) == 1, "SprfValidFields unexpected size");
+#endif
+
+
+typedef enum {
+ SprfMagic_ValidEntry = 0x46525053,
+ SprfMagic_UnpopulatedEntry = 0xFFFFFFFF,
+ SprfMagic_InvalidatedEntry = 0x0
+} SprfMagic;
+
+_Static_assert(sizeof(SprfMagic) == 4, "SprfMagic unexpected size");
+
+//! This is the struct written out to the Shared PRF flash region
+//!
+//! It's composed of seven sub entries:
+//! root_keys: Root keys (only identity since that is all Dialog needs)
+//! ble_pairing_data: The pairing info for the device most recently paired to the watch
+//! ble_pairing_name: The name of the device most recently paired to the watch
+//! pinned_address: Pinned address of the device most recently paired to watch (may be empty)
+//! getting_started: Captures whether or not we have gone through onboarding
+//! local_name: Not used yet, but saved for future proofing
+//! main_fw_scratch: A region for normal fw to stash info in the future if needed
+//!
+//! Each entry, or field, has its own crc which is written once the write of the field is complete.
+//! @NOTE: The CRC _must_ be the first member of a field. There are static asserts to catch
+//! this for current, please add a static assert for this if you create a new field
+//!
+//! A field is 'valid' iff a CRC of its contents matches the crc in flash
+//! A field is 'unpopulated' if a memcmp of its contents is all 0xff.
+//! A field is 'deleted' if its header has the value of SprfMagic_InvalidatedEntry
+//! A field is 'corrupted' or 'partially written' if the content CRC does not match the field CRC
+//!
+//! On flash, there is a rolling list of entries. If a field above needs to be rewritten,
+//! 'valid' entries must be copied from the current flash area to the next adjacent one.
+//!
+//! The shared PRF struct itself is defined as 256 bytes. Flash architectures have sectors
+//! which are some 2^n multiple so this size pretty much guarantees that a divisible number
+//! of structs can fit in the region allocated
+
+typedef struct PACKED SprfRootKeys {
+ uint32_t crc;
+ SM128BitKey keys[SMRootKeyTypeNum];
+} SprfRootKeys;
+_Static_assert(offsetof(SprfRootKeys, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SprfBlePairingData {
+ uint32_t crc; // CRC over the 'pairing_data' struct ('name' through 'fields')
+
+ // local encryption data
+ SMLongTermKey l_ltk; // 16 byte key
+ uint64_t l_rand;
+ uint16_t l_ediv;
+
+ // remote encryption data
+ uint16_t r_ediv;
+ SMLongTermKey r_ltk;
+ uint64_t r_rand;
+
+ SMIdentityResolvingKey irk; // 16 byte key
+ SMConnectionSignatureResolvingKey csrk; // 16 byte key
+ BTDeviceInternal identity;
+
+ SprfValidFields fields:8;
+ bool is_mitm_protection_enabled;
+ bool requires_address_pinning;
+
+ //! Added in SPRF_CUR_VERSION 2. In SPRF_CUR_VERSION 1, this field is always 0x00.
+ uint8_t flags;
+} SprfBlePairingData;
+_Static_assert(offsetof(SprfBlePairingData, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SprfBlePairingName {
+ uint32_t crc;
+ char name[BT_DEVICE_NAME_BUFFER_SIZE];
+} SprfBlePairingName;
+_Static_assert(offsetof(SprfBlePairingName, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SprfPinnedAddress {
+ uint32_t crc;
+ BTDeviceAddress pinned_address;
+ uint8_t rsvd[2];
+} SprfPinnedAddress;
+_Static_assert(offsetof(SprfPinnedAddress, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SprfGettingStarted {
+ uint32_t crc;
+ bool is_complete;
+ uint8_t rsvd[3];
+} SprfGettingStarted;
+_Static_assert(offsetof(SprfGettingStarted, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SprfLocalName {
+ // Not used today, but in the future we could replace 'Pebble XXXX' with
+ // a user friendly name, 'Chris' Pebble'
+ uint32_t crc;
+ char name[BT_DEVICE_NAME_BUFFER_SIZE];
+} SprfLocalName;
+_Static_assert(offsetof(SprfLocalName, crc) == 0, "crc must be the first field");
+
+typedef struct PACKED SharedPRFData {
+ SprfMagic magic;
+ uint8_t version;
+ uint8_t rsvd[3];
+
+ SprfRootKeys root_keys;
+ SprfBlePairingData ble_pairing_data;
+ SprfBlePairingName ble_pairing_name;
+ SprfPinnedAddress pinned_address;
+ SprfGettingStarted getting_started;
+ SprfLocalName local_name;
+
+ // Occasions have arisen in the past where a region in sharedPRF that
+ // main FW can stash info related to a pairing. That is the intent of this region.
+ struct PACKED {
+ uint8_t rsvd[44];
+ } main_fw_scratch;
+} SharedPRFData;
+
+_Static_assert(BT_DEVICE_NAME_BUFFER_SIZE == 20, "Changing the length will break SharedPRF");
+_Static_assert(sizeof(SharedPRFData) == 256, "SharedPRFData does not match expected size");
diff --git a/include/pbl/services/speaker/note_sequence.h b/include/pbl/services/speaker/note_sequence.h
new file mode 100644
index 0000000000..9616b786a6
--- /dev/null
+++ b/include/pbl/services/speaker/note_sequence.h
@@ -0,0 +1,81 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+
+#include
+#include
+
+typedef enum {
+ SpeakerWaveformSine = 0,
+ SpeakerWaveformSquare,
+ SpeakerWaveformTriangle,
+ SpeakerWaveformSawtooth,
+ SpeakerWaveformCount
+} SpeakerWaveform;
+
+//! A single note in a sequence.
+//! midi_note: MIDI note number (0-127, 60=C4). 0 = rest (silence).
+//! waveform: SpeakerWaveform value.
+//! duration_ms: Note duration in ms (max 10000).
+//! velocity: Volume 0-127 (0 = use global volume).
+typedef struct PACKED {
+ uint8_t midi_note;
+ uint8_t waveform;
+ uint16_t duration_ms;
+ uint8_t velocity;
+ uint8_t reserved;
+} SpeakerNote;
+
+typedef struct {
+ const SpeakerNote *notes;
+ uint32_t num_notes;
+ uint32_t current_note;
+ uint32_t samples_remaining;
+ uint32_t phase_acc; // 16.16 fixed-point phase accumulator
+ uint32_t phase_inc; // per-sample phase increment
+ uint8_t current_waveform;
+ uint8_t current_velocity;
+ bool active;
+} NoteSequenceState;
+
+//! Initialize a note sequence player.
+//! @param s State to initialize
+//! @param notes Array of notes to play
+//! @param count Number of notes
+//! @param sample_rate Output sample rate in Hz (e.g. 16000)
+void note_seq_init(NoteSequenceState *s, const SpeakerNote *notes, uint32_t count,
+ uint32_t sample_rate);
+
+//! Fill output buffer with synthesized PCM samples.
+//! @param s Note sequence state
+//! @param out Output buffer for 16-bit PCM samples
+//! @param max_samples Maximum number of samples to generate
+//! @return Number of samples actually written. 0 means sequence is done.
+uint32_t note_seq_fill(NoteSequenceState *s, int16_t *out, uint32_t max_samples);
+
+//! Clean up note sequence state.
+void note_seq_deinit(NoteSequenceState *s);
+
+//! @internal Shared synth primitives used by track_player for waveform voices.
+//! These are not part of the public SDK.
+
+//! Compute the 16.16 fixed-point phase increment per output sample for a
+//! MIDI note at the given sample rate. Returns 0 for rests (midi_note == 0) or
+//! out-of-range values.
+uint32_t note_phase_inc(uint8_t midi_note, uint32_t sample_rate);
+
+//! Synthesize one 16-bit signed PCM sample for a given waveform at the given
+//! 16.16 phase accumulator value. phase_inc is the per-sample increment for
+//! the same accumulator and is used by the square wave generator to apply
+//! PolyBLEP anti-aliasing at the discontinuities. velocity scales the
+//! amplitude (1..127); velocity 0 means no per-sample scaling (master volume
+//! is applied downstream).
+int16_t note_synth_sample(uint8_t waveform, uint32_t phase_acc, uint32_t phase_inc,
+ uint8_t velocity);
+
+//! Return the MIDI-note frequency in 16.8 fixed-point Hz (i.e. freq_hz * 256).
+//! Used by track_player to compute sample-playback pitch ratios.
+uint32_t note_midi_freq_x256(uint8_t midi_note);
diff --git a/include/pbl/services/speaker/speaker_finish_reason.h b/include/pbl/services/speaker/speaker_finish_reason.h
new file mode 100644
index 0000000000..910e2e590f
--- /dev/null
+++ b/include/pbl/services/speaker/speaker_finish_reason.h
@@ -0,0 +1,12 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+//! Reason reported when speaker playback ends.
+typedef enum {
+ SpeakerFinishReasonDone = 0, //!< Playback completed naturally
+ SpeakerFinishReasonStopped, //!< Playback was stopped by the app
+ SpeakerFinishReasonPreempted, //!< Preempted by higher priority source
+ SpeakerFinishReasonError, //!< An error occurred
+} SpeakerFinishReason;
diff --git a/include/pbl/services/speaker/speaker_pcm_format.h b/include/pbl/services/speaker/speaker_pcm_format.h
new file mode 100644
index 0000000000..5b4e986d65
--- /dev/null
+++ b/include/pbl/services/speaker/speaker_pcm_format.h
@@ -0,0 +1,17 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! PCM audio format for speaker streaming.
+//! Bit layout: bit0 = sample rate (0=8kHz, 1=16kHz), bit1 = bit depth (0=8-bit, 1=16-bit).
+//! All formats are mono signed PCM (8-bit samples are signed [-128,127], not unsigned).
+typedef enum {
+ SpeakerPcmFormat_8kHz_8bit = 0, //!< 8kHz 8-bit signed (1 byte/sample)
+ SpeakerPcmFormat_16kHz_8bit = 1, //!< 16kHz 8-bit signed (1 byte/sample)
+ SpeakerPcmFormat_8kHz_16bit = 2, //!< 8kHz 16-bit signed little-endian (2 bytes/sample)
+ SpeakerPcmFormat_16kHz_16bit = 3, //!< 16kHz 16-bit signed little-endian (2 bytes/sample)
+ SpeakerPcmFormatCount
+} SpeakerPcmFormat;
diff --git a/include/pbl/services/speaker/speaker_service.h b/include/pbl/services/speaker/speaker_service.h
new file mode 100644
index 0000000000..02ff103962
--- /dev/null
+++ b/include/pbl/services/speaker/speaker_service.h
@@ -0,0 +1,121 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/speaker/note_sequence.h"
+#include "pbl/services/speaker/speaker_finish_reason.h"
+#include "pbl/services/speaker/speaker_pcm_format.h"
+#include "pbl/services/speaker/track.h"
+#include "kernel/pebble_tasks.h"
+
+#include
+#include
+
+typedef enum {
+ SpeakerPriorityApp = 0,
+ SpeakerPriorityNotification,
+ SpeakerPriorityCritical
+} SpeakerPriority;
+
+typedef enum {
+ SpeakerStateIdle = 0,
+ SpeakerStatePlaying,
+ SpeakerStateDraining, // stream closing, playing remaining buffered data
+} SpeakerState;
+
+typedef enum {
+ SpeakerSourceNone = 0,
+ SpeakerSourceNoteSeq,
+ SpeakerSourceStream,
+ SpeakerSourceTracks,
+ SpeakerSourceTone,
+} SpeakerSourceType;
+
+//! Initialize the speaker service. Called once at boot.
+void speaker_service_init(void);
+
+//! Play a note sequence on the speaker.
+//! @param notes Array of notes (copied internally)
+//! @param num_notes Number of notes
+//! @param pri Priority level
+//! @param vol Volume (0-100)
+//! @return true if playback started, false if preempted by higher priority
+bool speaker_service_play_note_seq(const SpeakerNote *notes, uint32_t num_notes,
+ SpeakerPriority pri, uint8_t vol);
+
+//! Play a single tone at an exact frequency on the speaker.
+//! @param freq_hz Tone frequency in Hz (0 = silence/rest)
+//! @param duration_ms Tone duration in milliseconds (max 10000)
+//! @param waveform Waveform to use (SpeakerWaveform value)
+//! @param velocity Per-note amplitude scale 0-127 (0 = use master volume)
+//! @param pri Priority level
+//! @param vol Volume (0-100)
+//! @return true if playback started, false if preempted by higher priority
+bool speaker_service_play_tone(uint16_t freq_hz, uint16_t duration_ms,
+ uint8_t waveform, uint8_t velocity,
+ SpeakerPriority pri, uint8_t vol);
+
+//! Play N monophonic tracks in parallel, mixed together.
+//! Track arrays and any sample data are copied into kernel memory.
+//! @param tracks Array of tracks. For each, its notes array and (optional)
+//! sample + sample data are copied.
+//! @param num_tracks Number of tracks (<= SPEAKER_MAX_TRACKS).
+//! @param pri Priority level.
+//! @param vol Volume (0-100).
+//! @return true if playback started; false on invalid args, exceeded limits,
+//! allocation failure, or priority blocked.
+bool speaker_service_play_tracks(const SpeakerTrack *tracks, uint32_t num_tracks,
+ SpeakerPriority pri, uint8_t vol);
+
+//! Ask the service to post PEBBLE_SPEAKER_EVENT with the finish reason to the
+//! given task whenever playback ends.
+void speaker_service_register_finish(PebbleTask task);
+
+//! Max number of parallel tracks for polyphony.
+#define SPEAKER_MAX_TRACKS 4
+
+//! Max total sample-data bytes per speaker_service_play_tracks call.
+#define SPEAKER_MAX_SAMPLE_BYTES_TOTAL (16 * 1024)
+
+//! Open a PCM stream for writing.
+//! @param pri Priority level
+//! @param vol Volume (0-100)
+//! @param fmt PCM format (sample rate and bit depth)
+//! @return true if stream opened, false if blocked by higher priority
+bool speaker_service_stream_open(SpeakerPriority pri, uint8_t vol, SpeakerPcmFormat fmt);
+
+//! Write PCM data to the active stream.
+//! @param data Source buffer
+//! @param num_bytes Number of bytes to write
+//! @return Number of bytes actually written (backpressure)
+uint32_t speaker_service_stream_write(const void *data, uint32_t num_bytes);
+
+//! Close the active stream. Remaining buffered data will be drained.
+void speaker_service_stream_close(void);
+
+//! Stop any active playback immediately.
+void speaker_service_stop(void);
+
+//! Set playback volume.
+//! @param vol Volume 0-100
+void speaker_service_set_volume(uint8_t vol);
+
+//! Get current speaker state.
+SpeakerState speaker_service_get_state(void);
+
+//! Stop any playback initiated by the given task. Called on app exit.
+void speaker_service_stop_for_task(PebbleTask task);
+
+//! Set the task that owns the current playback session.
+void speaker_service_set_owner_task(PebbleTask task);
+
+//! @return true if the speaker is currently muted (always-on mute, or
+//! the DND-scoped mute while DND is active).
+bool speaker_service_is_muted(void);
+
+//! Notify the speaker service that the audio preferences (mute or system
+//! volume cap) have changed. If a source is currently playing, the audio
+//! output volume is re-applied immediately so the change takes effect on
+//! live playback.
+void speaker_service_handle_audio_prefs_changed(void);
diff --git a/include/pbl/services/speaker/track.h b/include/pbl/services/speaker/track.h
new file mode 100644
index 0000000000..95d0963bd8
--- /dev/null
+++ b/include/pbl/services/speaker/track.h
@@ -0,0 +1,38 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/speaker/note_sequence.h"
+#include "pbl/services/speaker/speaker_pcm_format.h"
+
+#include
+#include
+
+//! A raw PCM sample that can be pitch-shifted when played by a track.
+//! data: mono signed PCM in the given format.
+//! num_bytes: size of data in bytes.
+//! format: sample rate + bit depth (see SpeakerPcmFormat).
+//! base_midi_note: the MIDI note at which the sample plays unshifted (e.g. 60 = C4).
+//! Notes above/below this value are produced by resampling.
+//! loop: if true, the sample restarts from the beginning each time it runs out,
+//! and keeps playing until the owning note's duration elapses.
+typedef struct {
+ const void *data;
+ uint32_t num_bytes;
+ SpeakerPcmFormat format;
+ uint8_t base_midi_note;
+ bool loop;
+} SpeakerSample;
+
+//! A single monophonic voice. Multiple tracks are mixed together by
+//! speaker_play_tracks() to produce polyphony.
+//! notes: array of notes to play sequentially.
+//! num_notes: length of the notes array.
+//! sample: if non-NULL, notes are played by pitch-shifting this sample;
+//! note.waveform is ignored. If NULL, notes use their waveform field.
+typedef struct {
+ const SpeakerNote *notes;
+ uint32_t num_notes;
+ const SpeakerSample *sample;
+} SpeakerTrack;
diff --git a/include/pbl/services/stationary.h b/include/pbl/services/stationary.h
new file mode 100644
index 0000000000..382aaf1e52
--- /dev/null
+++ b/include/pbl/services/stationary.h
@@ -0,0 +1,31 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include "applib/accel_service.h"
+#include "kernel/event_loop.h"
+
+//! Set up a timer that will check the position of the watch every minute to see
+//! if any motion has occured
+void stationary_init(void);
+
+//! Stationary mode should only be enabled when the user settings allow for it and when
+//! the charger is not connected
+bool stationary_get_enabled(void);
+
+//! Set whether the stationary module is enabled. When disabled, all operations will end, we ensure
+//! that we are in a normal state, and the watch will not be able to enter stationary mode
+void stationary_set_enabled(bool enabled);
+
+//! Set whether the stationary service is allowed to be enabled for the current runlevel
+void stationary_run_level_enable(bool allow);
+
+//! If the stationary module is enabled and currently in stationary mode, then
+//! we are put into a normal state. Call this if the system is about to do something that will
+//! probably require user interaction, like an alarm going off.
+void stationary_wake_up(void);
+
+//! Called by our event service system when there is a battery connection change
+void stationary_handle_battery_connection_change_event(void);
diff --git a/src/fw/services/common/system_task.h b/include/pbl/services/system_task.h
similarity index 76%
rename from src/fw/services/common/system_task.h
rename to include/pbl/services/system_task.h
index ca57895bc6..8ab1b13358 100644
--- a/src/fw/services/common/system_task.h
+++ b/include/pbl/services/system_task.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
//! @file system_task.h
//!
diff --git a/include/pbl/services/tick_timer.h b/include/pbl/services/tick_timer.h
new file mode 100644
index 0000000000..2292ffffb8
--- /dev/null
+++ b/include/pbl/services/tick_timer.h
@@ -0,0 +1,9 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "kernel/pebble_tasks.h"
+
+void tick_timer_add_subscriber(PebbleTask task);
+void tick_timer_remove_subscriber(PebbleTask task);
diff --git a/include/pbl/services/timeline/actions_endpoint.h b/include/pbl/services/timeline/actions_endpoint.h
new file mode 100644
index 0000000000..e3d072cc5f
--- /dev/null
+++ b/include/pbl/services/timeline/actions_endpoint.h
@@ -0,0 +1,27 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "attribute.h"
+#include "item.h"
+
+#include "pbl/services/comm_session/session.h"
+#include "util/uuid.h"
+
+#include
+#include
+
+//! Sends a request to the phone asking it to invoke an action
+//! @param id UUID of the pin/notification
+//! @param type Type of the pin/notification
+//! @param action_id The id of the action that is being invoked
+//! @param attributes The list of attributes
+//! @param do_async True = perform send on KernelBG, False = perform send on current task
+void timeline_action_endpoint_invoke_action(const Uuid *id, TimelineItemActionType type,
+ uint8_t action_id, const AttributeList *attributes,
+ bool do_async);
+
+//! Handles messages from the phone sent to the timeline action endpoint
+void timeline_action_endpoint_protocol_msg_callback(CommSession *session, const uint8_t* data,
+ size_t length);
diff --git a/include/pbl/services/timeline/alarm_layout.h b/include/pbl/services/timeline/alarm_layout.h
new file mode 100644
index 0000000000..c91f559f7d
--- /dev/null
+++ b/include/pbl/services/timeline/alarm_layout.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+
+typedef struct {
+ TimelineLayout timeline_layout;
+} AlarmLayout;
+
+LayoutLayer *alarm_layout_create(const LayoutLayerConfig *config);
+
+bool alarm_layout_verify(bool existing_attributes[]);
diff --git a/src/fw/services/normal/timeline/attribute.h b/include/pbl/services/timeline/attribute.h
similarity index 95%
rename from src/fw/services/normal/timeline/attribute.h
rename to include/pbl/services/timeline/attribute.h
index ad9a12ae34..b451388fef 100644
--- a/src/fw/services/normal/timeline/attribute.h
+++ b/include/pbl/services/timeline/attribute.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -112,7 +99,7 @@ typedef enum {
AttributeIdMetricNames = 41,
//! (StringList) Metric values for Generic pins to display numeric data
AttributeIdMetricValues = 42,
- //! (Uint32List) Metric icons, casted to TimelineResourceId (uin16_t) on use
+ //! (Uint32List) Metric icons, casted to TimelineResourceId (uint16_t) on use
AttributeIdMetricIcons = 43,
//! (uint8_t) Health activity that the item is from
AttributeIdHealthActivityType = 44,
@@ -124,6 +111,12 @@ typedef enum {
AttributeIdSubtitleTemplateString = 47,
//! Generic icon.
AttributeIdIcon = 48,
+ //! (Uint32List) Custom vibration pattern for a notification, used with vibes_enqueue_custom_pattern
+ AttributeIdVibrationPattern = 49,
+ //! (uint32_t) Timestamp when the mute should expire.
+ AttributeIdMuteExpiration = 50,
+ //! (StringList) Notification filtering rules encoded as a byte array.
+ AttributeIdNotificationFilteringRules = 51,
NumAttributeIds,
} AttributeId;
diff --git a/src/fw/services/normal/timeline/attribute_group.h b/include/pbl/services/timeline/attribute_group.h
similarity index 81%
rename from src/fw/services/normal/timeline/attribute_group.h
rename to include/pbl/services/timeline/attribute_group.h
index 08ad4cb4f6..f19070fba3 100644
--- a/src/fw/services/normal/timeline/attribute_group.h
+++ b/include/pbl/services/timeline/attribute_group.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/normal/timeline/item.h"
+#include "pbl/services/timeline/item.h"
#include
#include
diff --git a/include/pbl/services/timeline/attribute_private.h b/include/pbl/services/timeline/attribute_private.h
new file mode 100644
index 0000000000..c268c83fcf
--- /dev/null
+++ b/include/pbl/services/timeline/attribute_private.h
@@ -0,0 +1,13 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "util/attributes.h"
+
+#include
+
+typedef struct PACKED {
+ uint8_t id;
+ uint16_t length;
+} SerializedAttributeHeader;
diff --git a/src/fw/services/normal/timeline/attributes_actions.h b/include/pbl/services/timeline/attributes_actions.h
similarity index 89%
rename from src/fw/services/normal/timeline/attributes_actions.h
rename to include/pbl/services/timeline/attributes_actions.h
index f8aa1a0962..a69b81134c 100644
--- a/src/fw/services/normal/timeline/attributes_actions.h
+++ b/include/pbl/services/timeline/attributes_actions.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/timeline/calendar.h b/include/pbl/services/timeline/calendar.h
new file mode 100644
index 0000000000..1ad3657bc4
--- /dev/null
+++ b/include/pbl/services/timeline/calendar.h
@@ -0,0 +1,25 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "event.h"
+
+//! This module puts events that report the current state of calendar events.
+//! The states are:
+//! - "no calendar events ongoing"
+//! - "one or more calendar events ongoing"
+//! Not every calendar event start / stop produces an event, but every transition is guarenteed
+//! to put an event.
+
+
+const TimelineEventImpl *calendar_get_event_service(void);
+
+//! Used to determine if there is currently an event going on, used for Smart DND
+bool calendar_event_is_ongoing(void);
+
+#if UNITTEST
+#include "pbl/services/new_timer/new_timer.h"
+TimerID get_calendar_timer_id(void);
+void set_calendar_timer_id(TimerID id);
+#endif
diff --git a/include/pbl/services/timeline/calendar_layout.h b/include/pbl/services/timeline/calendar_layout.h
new file mode 100644
index 0000000000..6b83c184a1
--- /dev/null
+++ b/include/pbl/services/timeline/calendar_layout.h
@@ -0,0 +1,28 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/gdraw_command_image.h"
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+#include "applib/ui/ui.h"
+
+typedef enum {
+ CalendarRecurringTypeNone = 0,
+ CalendarRecurringTypeRecurring,
+} CalendarRecurringType;
+
+typedef struct {
+ TimelineLayout timeline_layout;
+ TextLayer date_layer;
+ char day_date_buffer[TIME_STRING_DAY_DATE_LENGTH];
+} CalendarLayout;
+
+LayoutLayer *calendar_layout_create(const LayoutLayerConfig *config);
+
+bool calendar_layout_verify(bool existing_attributes[]);
diff --git a/include/pbl/services/timeline/calendar_layout_resources.h b/include/pbl/services/timeline/calendar_layout_resources.h
new file mode 100644
index 0000000000..0ddddc8541
--- /dev/null
+++ b/include/pbl/services/timeline/calendar_layout_resources.h
@@ -0,0 +1,33 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/graphics/gdraw_command_image.h"
+#include "applib/graphics/gdraw_command_private.h"
+#include "util/attributes.h"
+#include "util/size.h"
+
+#define START_ICON_POINTS { { 0, -2 }, { 9, 4 }, { 0, 10 } }
+
+typedef struct PACKED {
+ struct {
+ GDrawCommandImage image;
+ };
+ GDrawCommand command;
+ GPoint points[STATIC_ARRAY_LENGTH(GPoint, START_ICON_POINTS)];
+} CalendarStartIcon;
+
+extern CalendarStartIcon g_calendar_start_icon;
+
+#define END_ICON_POINTS { { 0, 0 }, { 10, 0 }, { 10, 8 }, { 0, 8 } }
+
+typedef struct PACKED {
+ struct {
+ GDrawCommandImage image;
+ };
+ GDrawCommand command;
+ GPoint points[STATIC_ARRAY_LENGTH(GPoint, END_ICON_POINTS)];
+} CalendarEndIcon;
+
+extern CalendarEndIcon g_calendar_end_icon;
diff --git a/src/fw/services/normal/timeline/event.h b/include/pbl/services/timeline/event.h
similarity index 89%
rename from src/fw/services/normal/timeline/event.h
rename to include/pbl/services/timeline/event.h
index 493eb000a9..e9a1f3f74b 100644
--- a/src/fw/services/normal/timeline/event.h
+++ b/include/pbl/services/timeline/event.h
@@ -1,22 +1,9 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
-#include "services/normal/blob_db/pin_db.h"
+#include "pbl/services/blob_db/pin_db.h"
#define TIMELINE_EVENT_DELTA_INFINITE (INT32_MAX)
diff --git a/include/pbl/services/timeline/generic_layout.h b/include/pbl/services/timeline/generic_layout.h
new file mode 100644
index 0000000000..8cd26821ef
--- /dev/null
+++ b/include/pbl/services/timeline/generic_layout.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+#include "applib/ui/bitmap_layer.h"
+
+typedef struct {
+ TimelineLayout timeline_layout;
+} GenericLayout;
+
+LayoutLayer *generic_layout_create(const LayoutLayerConfig *config);
+
+bool generic_layout_verify(bool existing_attributes[]);
diff --git a/include/pbl/services/timeline/health_layout.h b/include/pbl/services/timeline/health_layout.h
new file mode 100644
index 0000000000..d40beca034
--- /dev/null
+++ b/include/pbl/services/timeline/health_layout.h
@@ -0,0 +1,53 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+#include "util/attributes.h"
+
+#define HEALTH_METRIC_BUFFER_LENGTH 128
+
+//! The different types of health cards the app shows
+typedef enum HealthCardType {
+ HealthCardType_Activity = 0,
+ HealthCardType_Sleep,
+ HealthCardTypeCount
+} HealthCardType;
+
+//! Shared with insights to allow the app to launch into the appropriate card
+typedef struct PACKED HealthLaunchArgs {
+ union {
+ struct {
+ HealthCardType card_type:8; //!< Tells us if we need to launch into an activity or sleep card
+ };
+ uint32_t args;
+ };
+} HealthLaunchArgs;
+
+typedef enum {
+ ActivitySessionMetric_Duration = 0,
+ ActivitySessionMetric_Calories,
+ ActivitySessionMetric_Distance,
+ ActivitySessionMetric_Pace,
+ ActivitySessionMetricCount,
+} ActivitySessionMetric;
+
+typedef struct {
+ KinoLayer *icon_layer;
+ const char *value_fmt;
+} MetricData;
+
+typedef struct {
+ TimelineLayout timeline_layout;
+ MetricData metric_data[ActivitySessionMetricCount];
+} HealthLayout;
+
+LayoutLayer *health_layout_create(const LayoutLayerConfig *config);
+
+bool health_layout_verify(bool existing_attributes[]);
diff --git a/src/fw/services/normal/timeline/item.h b/include/pbl/services/timeline/item.h
similarity index 95%
rename from src/fw/services/normal/timeline/item.h
rename to include/pbl/services/timeline/item.h
index 08da6cd8b5..33f8eefcb7 100644
--- a/src/fw/services/normal/timeline/item.h
+++ b/include/pbl/services/timeline/item.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/timeline/layout_layer.h b/include/pbl/services/timeline/layout_layer.h
similarity index 91%
rename from src/fw/services/normal/timeline/layout_layer.h
rename to include/pbl/services/timeline/layout_layer.h
index ec3985274a..06b9c820fc 100644
--- a/src/fw/services/normal/timeline/layout_layer.h
+++ b/include/pbl/services/timeline/layout_layer.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/timeline/layout_node.h b/include/pbl/services/timeline/layout_node.h
similarity index 90%
rename from src/fw/services/normal/timeline/layout_node.h
rename to include/pbl/services/timeline/layout_node.h
index 910a540e1f..520441e2df 100644
--- a/src/fw/services/normal/timeline/layout_node.h
+++ b/include/pbl/services/timeline/layout_node.h
@@ -1,28 +1,15 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "applib/graphics/text.h"
#include "applib/ui/kino/kino_layer.h"
-#include "apps/system_apps/timeline/text_node.h"
+#include "apps/system/timeline/text_node.h"
#include "resource/resource_ids.auto.h"
-#include "services/normal/timeline/attribute.h"
-#include "services/normal/timeline/layout_layer.h"
-#include "services/normal/timeline/timeline_resources.h"
+#include "pbl/services/timeline/attribute.h"
+#include "pbl/services/timeline/layout_layer.h"
+#include "pbl/services/timeline/timeline_resources.h"
#include "shell/system_theme.h"
#include "util/attributes.h"
diff --git a/include/pbl/services/timeline/metricgroup.h b/include/pbl/services/timeline/metricgroup.h
new file mode 100644
index 0000000000..365cd29b77
--- /dev/null
+++ b/include/pbl/services/timeline/metricgroup.h
@@ -0,0 +1,36 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "attribute.h"
+#include "timeline_resources.h"
+
+typedef struct MetricGroup {
+ StringList *names;
+ StringList *values;
+ Uint32List *icons;
+ int num_items;
+ int max_num_items;
+ size_t max_item_string_size;
+} MetricGroup;
+
+//! Create a metric group
+//! @param max_num_items max number of items able to be added to the group
+//! @param max_item_string_size max length of any string in the group, name and value
+//! @return newly allocated MetricGroup
+MetricGroup *metric_group_create(int max_num_items, size_t max_item_string_size);
+
+//! Destroy a metric group
+//! @param metric_group MetricGroup to destroy
+void metric_group_destroy(MetricGroup *metric_group);
+
+//! Adds an item to a metric group
+//! @param metric_group MetricGroup to add an item to
+//! @param name_i18n i18n key of the name string
+//! @param value value field string
+//! @param icon TimelineResourceId icon id
+//! @param i18n_owner i18n owner to use
+//! @return true if the item was added, false otherwise
+bool metric_group_add_item(MetricGroup *metric_group, const char *name_i18n, const char *value,
+ TimelineResourceId icon, void *i18n_owner);
diff --git a/include/pbl/services/timeline/notification_jumboji_table.h b/include/pbl/services/timeline/notification_jumboji_table.h
new file mode 100644
index 0000000000..75407cc137
--- /dev/null
+++ b/include/pbl/services/timeline/notification_jumboji_table.h
@@ -0,0 +1,49 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "applib/fonts/codepoint.h"
+#include "resource/resource_ids.auto.h"
+
+#include
+
+typedef struct {
+ Codepoint codepoint;
+ ResourceId resource_id;
+#if UNITTEST
+ const char *string;
+ const char *resource_name;
+#endif
+} EmojiEntry;
+
+#if UNITTEST
+#define EMOJI_ENTRY(string, codepoint, resource_id) \
+ { codepoint, resource_id, string, #resource_id }
+#else
+#define EMOJI_ENTRY(string, codepoint, resource_id) \
+ { codepoint, resource_id }
+#endif
+
+// Codepoint sorted table of supported Jumboji
+#define JUMBOJI_TABLE(ENTRY) { \
+ ENTRY("♥️", 0x02665, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("❤️", 0x02764, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("👍", 0x1f44d, RESOURCE_ID_EMOJI_THUMBS_UP_LARGE), \
+ ENTRY("💙", 0x1f499, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("💚", 0x1f49a, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("💛", 0x1f49b, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("💜", 0x1f49c, RESOURCE_ID_EMOJI_HEART_LARGE), \
+ ENTRY("😀", 0x1f600, RESOURCE_ID_EMOJI_BIG_OPEN_SMILE_LARGE), \
+ ENTRY("😁", 0x1f601, RESOURCE_ID_EMOJI_SMILING_WITH_TEETH_LARGE), \
+ ENTRY("😂", 0x1f602, RESOURCE_ID_EMOJI_LAUGHING_WITH_TEARS_LARGE), \
+ ENTRY("😃", 0x1f603, RESOURCE_ID_EMOJI_BIG_OPEN_SMILE_LARGE), \
+ ENTRY("😄", 0x1f604, RESOURCE_ID_EMOJI_BIG_SMILE_LARGE), \
+ ENTRY("😉", 0x1f609, RESOURCE_ID_EMOJI_WINK_LARGE), \
+ ENTRY("😊", 0x1f60a, RESOURCE_ID_EMOJI_SMILING_BLUSH_LARGE), \
+ ENTRY("😍", 0x1f60d, RESOURCE_ID_EMOJI_SMILING_HEARTS_LARGE), \
+ ENTRY("😘", 0x1f618, RESOURCE_ID_EMOJI_KISSING_WITH_HEART_LARGE), \
+ ENTRY("😜", 0x1f61c, RESOURCE_ID_EMOJI_WINK_TONGUE_LARGE), \
+ ENTRY("😞", 0x1f61e, RESOURCE_ID_EMOJI_SAD_LARGE), \
+ ENTRY("😟", 0x1f61f, RESOURCE_ID_EMOJI_SAD_LARGE), \
+}
diff --git a/src/fw/services/normal/timeline/notification_layout.h b/include/pbl/services/timeline/notification_layout.h
similarity index 88%
rename from src/fw/services/normal/timeline/notification_layout.h
rename to include/pbl/services/timeline/notification_layout.h
index 5592861a6c..915d473b4b 100644
--- a/src/fw/services/normal/timeline/notification_layout.h
+++ b/include/pbl/services/timeline/notification_layout.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -25,8 +12,8 @@
#include "applib/graphics/perimeter.h"
#include "applib/ui/bitmap_layer.h"
#include "applib/ui/kino/kino_layer.h"
-#include "services/normal/timeline/attribute.h"
-#include "services/normal/timeline/timeline_resources.h"
+#include "pbl/services/timeline/attribute.h"
+#include "pbl/services/timeline/timeline_resources.h"
//! Banner height of notification and reminder layouts (excluding status bar)
//! Rectangular banner is the same size on both the top and bottom
@@ -94,9 +81,7 @@ typedef struct {
typedef struct {
TimelineItem *item;
-#if !PLATFORM_TINTIN
bool show_notification_timestamp;
-#endif
} NotificationLayoutInfo;
typedef struct {
@@ -105,9 +90,7 @@ typedef struct {
AppResourceInfo icon_res_info;
LayoutColors colors;
NotificationLayoutInfo info;
-#if !PLATFORM_TINTIN
KinoLayer *detail_icon_layer; //!< Not common, so not inline with the layout
-#endif
const NotificationStyle *style;
GTextNode *view_node;
GSize view_size;
diff --git a/include/pbl/services/timeline/peek.h b/include/pbl/services/timeline/peek.h
new file mode 100644
index 0000000000..1c2957b651
--- /dev/null
+++ b/include/pbl/services/timeline/peek.h
@@ -0,0 +1,35 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "event.h"
+
+//! Default time at which the Timeline Peek will show an event before it starts.
+//! This setting is user configurable.
+#define TIMELINE_PEEK_DEFAULT_SHOW_BEFORE_TIME_S (10 * SECONDS_PER_MINUTE)
+
+//! Time at which the Timeline Peek will hide an event after it starts.
+//! This settings is not user configurable.
+#define TIMELINE_PEEK_HIDE_AFTER_TIME_S (10 * SECONDS_PER_MINUTE)
+
+//! TimelinePeek event subtypes which signify the relation between now and the event timestamp
+typedef enum TimelinePeekTimeType {
+ TimelinePeekTimeType_None = 0,
+ //! The event is next, but not immediately, specifically > show_before_time_s
+ TimelinePeekTimeType_SomeTimeNext,
+ //! The event will start almost immediately, specifically <= show_before_time_s, and should be
+ //! presented to the user
+ TimelinePeekTimeType_ShowWillStart,
+ //! The event has started moments ago, specifically < TIMELINE_PEEK_HIDE_AFTER_TIME_S,
+ //! and should be presented to the user
+ TimelinePeekTimeType_ShowStarted,
+ //! The event is ongoing and will end and has already elapsed >= TIMELINE_PEEK_HIDE_AFTER_TIME_S
+ TimelinePeekTimeType_WillEnd,
+} TimelinePeekTimeType;
+
+const TimelineEventImpl *timeline_peek_get_event_service(void);
+
+//! Sets the show before timing of timeline peek.
+//! @param before_time_s The amount of time before event start the peek should be visible.
+void timeline_peek_set_show_before_time(unsigned int before_time_s);
diff --git a/include/pbl/services/timeline/reminders.h b/include/pbl/services/timeline/reminders.h
new file mode 100644
index 0000000000..505251b4ad
--- /dev/null
+++ b/include/pbl/services/timeline/reminders.h
@@ -0,0 +1,45 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "system/status_codes.h"
+#include "pbl/services/timeline/item.h"
+#include "pbl/services/new_timer/new_timer.h"
+
+typedef TimelineItem Reminder;
+typedef TimelineItemId ReminderId;
+
+//! Set the reminder timer to the next stored reminder chronologically
+//! @return S_SUCCESS or appropriate error
+status_t reminders_update_timer(void);
+
+//! Insert a reminder to be popped up at a certain time
+//! @param reminder pointer to the reminder to be inserted
+//! @return S_SUCCESS or appropriate error
+status_t reminders_insert(Reminder *reminder);
+
+//! Initialize the reminders so they can be activated on the watch
+//! @return S_SUCCESS or appropriate error
+status_t reminders_init(void);
+
+//! Delete a reminder
+//! @param reminder_id pointer to an Id of the reminder to be deleted
+//! @return S_SUCCESS or appropriate error
+status_t reminders_delete(ReminderId *reminder_id);
+
+//! @return True if the reminder can snooze for a non-zero amount of time, false otherwise.
+bool reminders_can_snooze(Reminder *reminder);
+
+//! Snooze a reminder
+//! @param reminder Pointer to the reminder to snooze
+//! @return S_SUCCESS, E_INVALID_OPERATION if cannot snooze, or some other error otherwise
+status_t reminders_snooze(Reminder *reminder);
+
+//! Creates an event to alert the system that a reminder has been removed
+//! @param reminder_id Pointer to the uuid of the removed reminder
+void reminders_handle_reminder_removed(const Uuid *reminder_id);
+
+//! Creates an event to alert the system that a triggered reminder has changed
+//! @param reminder_id Pointer to the uuid of the updated reminder
+void reminders_handle_reminder_updated(const Uuid *reminder_id);
diff --git a/include/pbl/services/timeline/sports_layout.h b/include/pbl/services/timeline/sports_layout.h
new file mode 100644
index 0000000000..99eef56f6d
--- /dev/null
+++ b/include/pbl/services/timeline/sports_layout.h
@@ -0,0 +1,27 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+#include "applib/ui/bitmap_layer.h"
+
+typedef enum {
+ GameStatePreGame = 0,
+ GameStateInGame,
+ GameStatePostGame
+} GameState;
+
+typedef struct {
+ TimelineLayout timeline_layout;
+ GameState state;
+} SportsLayout;
+
+LayoutLayer *sports_layout_create(const LayoutLayerConfig *config);
+
+bool sports_layout_verify(bool existing_attributes[]);
diff --git a/src/fw/services/normal/timeline/swap_layer.h b/include/pbl/services/timeline/swap_layer.h
similarity index 86%
rename from src/fw/services/normal/timeline/swap_layer.h
rename to include/pbl/services/timeline/swap_layer.h
index 72f47d0f2e..4ed20e6af4 100644
--- a/src/fw/services/normal/timeline/swap_layer.h
+++ b/include/pbl/services/timeline/swap_layer.h
@@ -1,25 +1,12 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "applib/ui/layer.h"
#include "applib/ui/click.h"
#include "applib/ui/property_animation.h"
#include "applib/graphics/gpath.h"
-#include "services/normal/timeline/layout_layer.h"
+#include "pbl/services/timeline/layout_layer.h"
struct Window;
struct SwapLayer;
diff --git a/include/pbl/services/timeline/timeline.h b/include/pbl/services/timeline/timeline.h
new file mode 100644
index 0000000000..fc6187fa0d
--- /dev/null
+++ b/include/pbl/services/timeline/timeline.h
@@ -0,0 +1,159 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+#include "pbl/services/timeline/item.h"
+#include "system/status_codes.h"
+#include "util/iterator.h"
+
+struct TimelineNode;
+typedef struct TimelineNode TimelineNode;
+
+typedef enum {
+ TimelineIterDirectionPast,
+ TimelineIterDirectionFuture,
+} TimelineIterDirection;
+
+typedef struct {
+ TimelineNode *node;
+ int index;
+ time_t start_time;
+ TimelineIterDirection direction;
+ TimelineItem pin;
+ bool show_all_day_events;
+ time_t midnight; // midnight at iter_init
+ time_t current_day; // midnight of the current pin
+} TimelineIterState;
+
+//! initialize the timeline (builds the list of TimelineNodes)
+status_t timeline_init(TimelineNode **timeline);
+
+//! Add a timeline pin we've created to the timeline.
+//! Call \ref timeline_destroy_item after this in order to free up the memory used by the item.
+//! @return true on success, false otherwise
+bool timeline_add(TimelineItem *item);
+
+bool timeline_add_missed_call_pin(TimelineItem *pin, uint32_t uid);
+
+//! Remove a timeline pin we've added to the timeline
+//! @return true on success, false otherwise
+bool timeline_remove(const Uuid *id);
+
+//! Check whether a timeline pin exists
+//! @return true if it does, false otherwise
+bool timeline_exists(Uuid *id);
+
+//! Enables bulk action mode for ancs actions to avoid filling the event queue
+void timeline_enable_ancs_bulk_action_mode(bool enable);
+
+//! Returns whether or not bulk actoin mode is enabled for ancs actions
+bool timeline_is_bulk_ancs_action_mode_enabled(void);
+
+//! invokes a timelineitem's action. This can end up triggering a bluetooth message.
+void timeline_invoke_action(const TimelineItem *item, const TimelineItemAction *action,
+ const AttributeList *attributes);
+
+TimelineIterDirection timeline_direction_for_item(TimelineItem *item,
+ TimelineNode *timeline, time_t now);
+
+bool timeline_nodes_equal(TimelineNode *a, TimelineNode *b);
+
+//! Get the UUID of the originator of a timeline item. For pins and notifications, this
+//! returns the first parent_id of the item, which is the app's UUID (for pins) or source ID
+//! (for notifications). For reminders, it will return the parent_id of the parent, which is the
+//! app UUID of the pin that created the reminder.
+//! @param [out] id pointer to storage for returned uuid. Set to UUID_INVALID when false
+//! is returned
+//! @return true if success, false on failure
+bool timeline_get_originator_id(const TimelineItem *item, Uuid *id);
+
+//! Timeline item time comparator which sorts items as they would appear in Timeline with the
+//! exception of all day events.
+//! @param new_common The common that the resulting value is in reference to.
+//! @param old_common The other common that is being compared against.
+//! @param direction The Timeline direction.
+//! @return < 0 if new_common should be before old_common, > 0 if new_common should be after
+//! old_common, and 0 if equal in priority.
+int timeline_item_time_comparator(CommonTimelineItemHeader *new_common,
+ CommonTimelineItemHeader *old_common,
+ TimelineIterDirection direction);
+
+//! Whether a Timeline item should show up in the Timeline direction with the exception of all
+//! day events.
+//! @param common The common header of the item to consider.
+//! @param direction The Timeline direction.
+//! @return true if the item would show up, false otherwise.
+bool timeline_item_should_show(CommonTimelineItemHeader *header, TimelineIterDirection direction);
+
+///////////////////////////////////
+//! Timeline Iterator functions
+///////////////////////////////////
+
+status_t timeline_iter_init(Iterator *iter, TimelineIterState *iter_state, TimelineNode **timeline,
+ TimelineIterDirection direction, time_t timestamp);
+
+// Copy an iterator's contents into another one
+void timeline_iter_copy_state(TimelineIterState *dst_state, TimelineIterState *src_state,
+ Iterator *dst_iter, Iterator *src_iter);
+
+void timeline_iter_deinit(Iterator *iter, TimelineIterState *iter_state, TimelineNode **head);
+
+//! refresh the pin at the current timeline iterator. Does a fairly naive refresh, i.e. does not
+//! correctly place the pin in the timeline if the timestamp changes
+void timeline_iter_refresh_pin(TimelineIterState *iter_state);
+
+//! Remove a timeline item from the iterator list
+void timeline_iter_remove_node(TimelineNode **timeline, TimelineNode *node);
+
+//! Remove a timeline item from the iterator list
+//! @return true if a node exists and was removed, false otherwise
+bool timeline_iter_remove_node_with_id(TimelineNode **timeline, Uuid *key);
+
+///////////////////////////////////
+//! Timeline datasource functions
+///////////////////////////////////
+
+// ed429c16-f674-4220-95da-454f303f15e2
+#define UUID_NOTIFICATIONS_DATA_SOURCE {0xed, 0x42, 0x9c, 0x16, 0xf6, 0x74, 0x42, 0x20, 0x95, \
+ 0xda, 0x45, 0x4f, 0x30, 0x3f, 0x15, 0xe2}
+
+// 6c6c6fc2-1912-4d25-8396-3547d1dfac5b
+#define UUID_CALENDAR_DATA_SOURCE {0x6c, 0x6c, 0x6f, 0xc2, 0x19, 0x12, 0x4d, 0x25, 0x83, \
+ 0x96, 0x35, 0x47, 0xd1, 0xdf, 0xac, 0x5b}
+
+// 61b22bc8-1e29-460d-a236-3fe409a439ff
+#define UUID_WEATHER_DATA_SOURCE {0x61, 0xb2, 0x2b, 0xc8, 0x1e, 0x29, 0x46, 0xd, 0xa2, \
+ 0x36, 0x3f, 0xe4, 0x9, 0xa4, 0x39, 0xff}
+
+// 42a07217-5491-4267-904a-d02a156752b6
+#define UUID_REMINDERS_DATA_SOURCE {0x42, 0xa0, 0x72, 0x17, 0x54, 0x91, 0x42, 0x67, \
+ 0x90, 0x4a, 0xd0, 0x2a, 0x15, 0x67, 0x52, 0xb6}
+
+// UUID: 67a32d95-ef69-46d4-a0b9-854cc62f97f9
+#define UUID_ALARMS_DATA_SOURCE {0x67, 0xa3, 0x2d, 0x95, 0xef, 0x69, 0x46, 0xd4, \
+ 0xa0, 0xb9, 0x85, 0x4c, 0xc6, 0x2f, 0x97, 0xf9}
+
+// UUID: 36d8c6ed-4c83-4fa1-a9e2-8f12dc941f8c
+#define UUID_HEALTH_DATA_SOURCE {0x36, 0xd8, 0xc6, 0xed, 0x4c, 0x83, 0x4f, 0xa1, \
+ 0xa9, 0xe2, 0x8f, 0x12, 0xdc, 0x94, 0x1f, 0x8c}
+
+// UUID: fef82c82-7176-4e22-88de-35a3fc18d43f
+#define UUID_WORKOUT_DATA_SOURCE {0xfe, 0xf8, 0x2c, 0x82, 0x71, 0x76, 0x4e, 0x22, \
+ 0x88, 0xde, 0x35, 0xa3, 0xfc, 0x18, 0xd4, 0x3f}
+
+// UUID: 0863fc6a-66c5-4f62-ab8a-82ed00a98b5d
+#define UUID_SEND_TEXT_DATA_SOURCE {0x08, 0x63, 0xfc, 0x6a, 0x66, 0xc5, 0x4f, 0x62, \
+ 0xab, 0x8a, 0x82, 0xed, 0x00, 0xa9, 0x8b, 0x5d}
+
+// UUID: 0f71aaba-5814-4b5c-96e2-c9828c9734cb
+// Special UUID that allows the watch to send SMS messages to a specific phone number
+#define UUID_SEND_SMS {0x0f, 0x71, 0xaa, 0xba, 0x58, 0x14, 0x4b, 0x5c, \
+ 0x96, 0xe2, 0xc9, 0x82, 0x8c, 0x97, 0x34, 0xcb}
+
+// UUID: 68010669-4b38-4751-ad04-067f1d8d2ab5
+#define UUID_INTERCOM_DATA_SOURCE {0x68, 0x01, 0x06, 0x69, 0x4b, 0x38, 0x47, 0x51, \
+ 0xad, 0x04, 0x06, 0x7f, 0x1d, 0x8d, 0x2a, 0xb5}
+
+//! Get the name of a non-app, i.e. "private" datasource like Weather or Calendar
+//! return NULL if parent_id is not a private data source, otherwise the name of the source
+const char *timeline_get_private_data_source(Uuid *parent_id);
diff --git a/src/fw/services/normal/timeline/timeline_actions.h b/include/pbl/services/timeline/timeline_actions.h
similarity index 82%
rename from src/fw/services/normal/timeline/timeline_actions.h
rename to include/pbl/services/timeline/timeline_actions.h
index cb9c36e514..5186118bc1 100644
--- a/src/fw/services/normal/timeline/timeline_actions.h
+++ b/include/pbl/services/timeline/timeline_actions.h
@@ -1,24 +1,11 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "applib/ui/action_menu_window_private.h"
-#include "services/normal/notifications/notification_types.h"
-#include "services/normal/timeline/item.h"
+#include "pbl/services/notifications/notification_types.h"
+#include "pbl/services/timeline/item.h"
typedef enum TimelineItemActionSource {
TimelineItemActionSourceModalNotification,
diff --git a/src/fw/services/normal/timeline/timeline_layout.h b/include/pbl/services/timeline/timeline_layout.h
similarity index 88%
rename from src/fw/services/normal/timeline/timeline_layout.h
rename to include/pbl/services/timeline/timeline_layout.h
index af947ced9d..450ef8d3c0 100644
--- a/src/fw/services/normal/timeline/timeline_layout.h
+++ b/include/pbl/services/timeline/timeline_layout.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include "layout_layer.h"
@@ -26,10 +13,10 @@
#include "applib/graphics/text.h"
#include "applib/ui/status_bar_layer.h"
#include "applib/ui/kino/kino_layer.h"
-#include "apps/system_apps/timeline/text_node.h"
-#include "services/common/clock.h"
-#include "services/normal/timeline/timeline.h"
-#include "services/normal/timeline/timeline_resources.h"
+#include "apps/system/timeline/text_node.h"
+#include "pbl/services/clock.h"
+#include "pbl/services/timeline/timeline.h"
+#include "pbl/services/timeline/timeline_resources.h"
#define TIMELINE_MAX_BOX_HEIGHT 2500
#define TIMELINE_TOP_MARGIN 10
diff --git a/include/pbl/services/timeline/timeline_layout_animations.h b/include/pbl/services/timeline/timeline_layout_animations.h
new file mode 100644
index 0000000000..a073fc96b8
--- /dev/null
+++ b/include/pbl/services/timeline/timeline_layout_animations.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "timeline_layout.h"
+
+void timeline_layout_transition_pin_to_card(TimelineLayout *pin_timeline_layout,
+ TimelineLayout *card_timeline_layout);
+
+void timeline_layout_transition_card_to_pin(TimelineLayout *card_timeline_layout,
+ TimelineLayout *pin_timeline_layout);
+
+Animation *timeline_layout_create_up_down_animation(
+ TimelineLayout *layout, const GRect *from, const GRect *to, const GRect *icon_from,
+ const GRect *icon_to, uint32_t duration, InterpolateInt64Function interpolate);
diff --git a/src/fw/services/normal/timeline/timeline_resources.h b/include/pbl/services/timeline/timeline_resources.h
similarity index 85%
rename from src/fw/services/normal/timeline/timeline_resources.h
rename to include/pbl/services/timeline/timeline_resources.h
index 667df9b075..f53e2438d2 100644
--- a/src/fw/services/normal/timeline/timeline_resources.h
+++ b/include/pbl/services/timeline/timeline_resources.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
@@ -20,7 +7,7 @@
#include "applib/graphics/gdraw_command_image.h"
#include "util/uuid.h"
-#if !RECOVERY_FW
+#if !defined(CONFIG_RECOVERY_FW)
#include "resource/timeline_resource_ids.auto.h"
#else
typedef uint32_t TimelineResourceId;
diff --git a/include/pbl/services/timeline/weather_layout.h b/include/pbl/services/timeline/weather_layout.h
new file mode 100644
index 0000000000..6bd0665393
--- /dev/null
+++ b/include/pbl/services/timeline/weather_layout.h
@@ -0,0 +1,25 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "item.h"
+#include "layout_layer.h"
+#include "timeline_layout.h"
+
+#include "applib/graphics/graphics.h"
+#include "applib/graphics/text.h"
+#include "apps/system/timeline/text_node.h"
+
+typedef enum {
+ WeatherTimeType_None = 0,
+ WeatherTimeType_Pin,
+} WeatherTimeType;
+
+typedef struct {
+ TimelineLayout timeline_layout;
+} WeatherLayout;
+
+LayoutLayer *weather_layout_create(const LayoutLayerConfig *config);
+
+bool weather_layout_verify(bool existing_attributes[]);
diff --git a/src/fw/services/normal/timezone_database.h b/include/pbl/services/timezone_database.h
similarity index 84%
rename from src/fw/services/normal/timezone_database.h
rename to include/pbl/services/timezone_database.h
index 4465b658aa..0ec22af342 100644
--- a/src/fw/services/normal/timezone_database.h
+++ b/include/pbl/services/timezone_database.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/touch/gesture_event.h b/include/pbl/services/touch/gesture_event.h
new file mode 100644
index 0000000000..069f326335
--- /dev/null
+++ b/include/pbl/services/touch/gesture_event.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2026 Core Devices LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Gesture event type
+typedef enum GestureEventType {
+ GestureEvent_Tap,
+ GestureEvent_DoubleTap,
+} GestureEventType;
+
+//! Gesture event data, carried directly in PebbleGestureEvent
+typedef struct GestureEvent {
+ GestureEventType type:8;
+ int16_t x;
+ int16_t y;
+} GestureEvent;
\ No newline at end of file
diff --git a/include/pbl/services/touch/touch.h b/include/pbl/services/touch/touch.h
new file mode 100644
index 0000000000..366e6f2797
--- /dev/null
+++ b/include/pbl/services/touch/touch.h
@@ -0,0 +1,60 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "touch_event.h"
+#include "gesture_event.h"
+
+#include
+
+typedef enum TouchState {
+ TouchState_FingerUp,
+ TouchState_FingerDown,
+} TouchState;
+
+typedef enum TouchGesture {
+ TouchGesture_Tap,
+ TouchGesture_DoubleTap,
+} TouchGesture;
+
+void touch_init(void);
+
+//! Enable or disable the kernel's touch subscription used for the touch backlight feature.
+//! When disabled, the touch sensor is only active if apps have subscribed to touch events.
+void touch_set_backlight_enabled(bool enabled);
+
+//! @return true if at least one subscriber is currently registered for touch events.
+bool touch_has_app_subscribers(void);
+
+//! Globally enable or disable touch. When disabled:
+//! - The sensor is powered down, even if subscribers exist.
+//! - touch_handle_update() drops incoming events at the source.
+//! - touch_service_is_enabled() returns false to apps.
+//! Subscribers remain subscribed and resume receiving events when re-enabled.
+//! Intended to back a user-facing setting (e.g. "water mode") — the shell
+//! pref system persists the value and calls this on boot.
+void touch_service_set_globally_enabled(bool enabled);
+
+//! @return the current value of the global touch-enabled flag.
+bool touch_service_is_globally_enabled(void);
+
+//! Pass a touch update to the service (called by the touch driver)
+//! @param touch_state whether or not the screen is touched
+//! @param x x position of touch
+//! @param y y position of touch
+void touch_handle_update(TouchState touch_state, int16_t x, int16_t y);
+
+//! Handle a gesture update (called by the touch driver)
+//! @param gesture gesture that was detected
+//! @param x x position of gesture (if applicable)
+//! @param y y position of gesture
+void touch_handle_gesture(TouchGesture gesture, int16_t x, int16_t y);
+
+//! Reset the touch service.
+void touch_reset(void);
+
+//! Set whether the display is rotated 180° (left-hand mode). When rotated,
+//! incoming touch coordinates are mirrored to match the rotated framebuffer
+//! before being dispatched to subscribers.
+void touch_set_rotated(bool rotated);
diff --git a/include/pbl/services/touch/touch_client.h b/include/pbl/services/touch/touch_client.h
new file mode 100644
index 0000000000..dd7006e739
--- /dev/null
+++ b/include/pbl/services/touch/touch_client.h
@@ -0,0 +1,21 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "touch_event.h"
+
+#include
+#include
+
+//! Touch event callback
+//! @param event Touch event
+//! @param context callback context
+typedef void (*TouchEventHandler)(const TouchEvent *event, void *context);
+
+//! Dispatch touch events to specified handler
+//! @param touch_idx index of touch for which to dispatch events
+//! @param event_handler callback to dispatch touch events to
+//! @param context callback context
+void touch_dispatch_touch_events(TouchIdx touch_idx, TouchEventHandler event_handler,
+ void *context);
diff --git a/include/pbl/services/touch/touch_event.h b/include/pbl/services/touch/touch_event.h
new file mode 100644
index 0000000000..1b3acc55ee
--- /dev/null
+++ b/include/pbl/services/touch/touch_event.h
@@ -0,0 +1,20 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+//! Touch event type
+typedef enum TouchEventType {
+ TouchEvent_Touchdown,
+ TouchEvent_Liftoff,
+ TouchEvent_PositionUpdate,
+} TouchEventType;
+
+//! Touch event data, carried directly in PebbleTouchEvent
+typedef struct TouchEvent {
+ TouchEventType type:8;
+ int16_t x;
+ int16_t y;
+} TouchEvent;
diff --git a/include/pbl/services/vibe_pattern.h b/include/pbl/services/vibe_pattern.h
new file mode 100644
index 0000000000..2958d952de
--- /dev/null
+++ b/include/pbl/services/vibe_pattern.h
@@ -0,0 +1,16 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include
+
+void vibes_init();
+
+int32_t vibes_get_vibe_strength(void);
+int32_t vibes_get_default_vibe_strength(void);
+void vibes_set_default_vibe_strength(int32_t vibe_strength_default);
+
+void vibe_service_set_enabled(bool enable);
diff --git a/include/pbl/services/vibes/vibe_client.h b/include/pbl/services/vibes/vibe_client.h
new file mode 100644
index 0000000000..0a46c1e61f
--- /dev/null
+++ b/include/pbl/services/vibes/vibe_client.h
@@ -0,0 +1,19 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "vibe_score.h"
+
+typedef enum VibeClient {
+ VibeClient_Notifications = 0,
+ VibeClient_PhoneCalls,
+ VibeClient_Alarms,
+ VibeClient_AlarmsLPM,
+ VibeClient_Hourly,
+ VibeClient_OnDisconnect,
+} VibeClient;
+
+// Returns the appropriate vibe score for the client.
+// This is determined from alert preferences.
+VibeScore *vibe_client_get_score(VibeClient client);
diff --git a/include/pbl/services/vibes/vibe_intensity.h b/include/pbl/services/vibes/vibe_intensity.h
new file mode 100644
index 0000000000..e6d34ca1c5
--- /dev/null
+++ b/include/pbl/services/vibes/vibe_intensity.h
@@ -0,0 +1,37 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+
+typedef enum VibeIntensity {
+ VibeIntensityLow,
+ VibeIntensityMedium,
+ VibeIntensityHigh,
+ VibeIntensityNum,
+} VibeIntensity;
+
+#define DEFAULT_VIBE_INTENSITY VibeIntensityHigh
+
+void vibe_intensity_init(void);
+
+//! Returns the corresponding strength for the given level of intensity.
+//! The strength corresponds to a percentage of the max strength, ie in the range [0,100].
+uint8_t get_strength_for_intensity(VibeIntensity intensity);
+
+//! Sets the intensity of ALL vibrations (not just notifications)
+void vibe_intensity_set(VibeIntensity intensity);
+
+//! Gets the current vibe intensity
+VibeIntensity vibe_intensity_get(void);
+
+//! Returns a string representation of the provided vibe intensity.
+//! @param intensity The intensity for which to get a string representation
+//! @return A string representation of the provided intensity, or NULL if the intensity is invalid
+const char *vibe_intensity_get_string_for_intensity(VibeIntensity intensity);
+
+//! Gets the next intensity in the vibe intensity cycle
+//! @param intensity Input intensity for which to get the next intensity
+//! @return The next vibe intensity in the cycle
+VibeIntensity vibe_intensity_cycle_next(VibeIntensity intensity);
diff --git a/src/fw/services/normal/vibes/vibe_score.h b/include/pbl/services/vibes/vibe_score.h
similarity index 75%
rename from src/fw/services/normal/vibes/vibe_score.h
rename to include/pbl/services/vibes/vibe_score.h
index 890601ebbc..bef0765047 100644
--- a/src/fw/services/normal/vibes/vibe_score.h
+++ b/include/pbl/services/vibes/vibe_score.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/include/pbl/services/vibes/vibe_score_info.h b/include/pbl/services/vibes/vibe_score_info.h
new file mode 100644
index 0000000000..575c5d1c6a
--- /dev/null
+++ b/include/pbl/services/vibes/vibe_score_info.h
@@ -0,0 +1,48 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/vibes/vibe_client.h"
+
+#include
+#include
+
+#define VIBE_DEF(identifier, enum_name, name_str, alert_types_arg, res_id)\
+ VibeScoreId_##enum_name = identifier,
+typedef enum VibeScoreId {
+ VibeScoreId_Invalid = 0,
+ #include "vibes.def"
+} VibeScoreId;
+#undef VIBE_DEF
+
+#ifdef CONFIG_BOARD_FAMILY_ASTERIX
+#define DEFAULT_VIBE_SCORE_NOTIFS (VibeScoreId_StandardShortPulseHigh)
+#define DEFAULT_VIBE_SCORE_INCOMING_CALLS (VibeScoreId_Pulse)
+#define DEFAULT_VIBE_SCORE_ALARMS (VibeScoreId_Reveille)
+#define DEFAULT_VIBE_SCORE_HOURLY (VibeScoreId_Disabled)
+#define DEFAULT_VIBE_SCORE_ON_DISCONNECT (VibeScoreId_Disabled)
+#else
+#define DEFAULT_VIBE_SCORE_NOTIFS (VibeScoreId_NudgeNudge)
+#define DEFAULT_VIBE_SCORE_INCOMING_CALLS (VibeScoreId_Pulse)
+#define DEFAULT_VIBE_SCORE_ALARMS (VibeScoreId_Reveille)
+#define DEFAULT_VIBE_SCORE_HOURLY (VibeScoreId_Disabled)
+#define DEFAULT_VIBE_SCORE_ON_DISCONNECT (VibeScoreId_Disabled)
+#endif
+
+// Returns the ResourceId for the VibeScore represented by this id.
+// If the id does not exist, the ResourceId of the first vibe in S_VIBE_MAP is returned
+uint32_t vibe_score_info_get_resource_id(VibeScoreId id);
+
+// Returns the name of the VibeScore represented by this id
+// If the id does not exist, the name of the first vibe in S_VIBE_MAP is returned
+const char *vibe_score_info_get_name(VibeScoreId id);
+
+// Returns the next vibe score playable by the client from the array defined by vibes.def
+// Wraps around and continues searching if the end of the array is reached
+// Returns current_id if there is no next vibe score
+VibeScoreId vibe_score_info_cycle_next(VibeClient client, VibeScoreId curr_id);
+
+// Checks if the vibe score id exists and if the associated VibeScoreInfo contains a valid
+// resource_id
+bool vibe_score_info_is_valid(VibeScoreId id);
diff --git a/include/pbl/services/vibes/vibes.def b/include/pbl/services/vibes/vibes.def
new file mode 100644
index 0000000000..538037ca43
--- /dev/null
+++ b/include/pbl/services/vibes/vibes.def
@@ -0,0 +1,15 @@
+// IDs must be monotonically increasing, i.e. they must never be reused
+// ID 0 is reserved for "Invalid". Do not use!
+
+VIBE_DEF(1, Disabled, i18n_ctx_noop("NotifVibe", "Disabled"), (AlertType_Notifications | AlertType_Calls), RESOURCE_ID_INVALID)
+VIBE_DEF(2, StandardShortPulseLow, i18n_noop("Standard - Low"), AlertType_Notifications, RESOURCE_ID_VIBE_SCORE_STANDARD_SHORT_LOW)
+VIBE_DEF(3, StandardLongPulseLow, i18n_noop("Standard - Low"), (AlertType_Calls | AlertType_Alarms), RESOURCE_ID_VIBE_SCORE_STANDARD_LONG_LOW)
+VIBE_DEF(4, StandardShortPulseHigh, i18n_noop("Standard - High"), AlertType_Notifications, RESOURCE_ID_VIBE_SCORE_STANDARD_SHORT_HIGH)
+VIBE_DEF(5, StandardLongPulseHigh, i18n_noop("Standard - High"), (AlertType_Calls | AlertType_Alarms), RESOURCE_ID_VIBE_SCORE_STANDARD_LONG_HIGH)
+VIBE_DEF(8, Pulse, i18n_noop("Pulse"), AlertType_All, RESOURCE_ID_VIBE_SCORE_PULSE)
+VIBE_DEF(9, NudgeNudge, i18n_noop("Nudge Nudge"), AlertType_All, RESOURCE_ID_VIBE_SCORE_NUDGE_NUDGE)
+VIBE_DEF(10, Jackhammer, i18n_noop("Jackhammer"), AlertType_All, RESOURCE_ID_VIBE_SCORE_JACKHAMMER)
+VIBE_DEF(11, Reveille, "Reveille", AlertType_Alarms, RESOURCE_ID_VIBE_SCORE_REVEILLE)
+VIBE_DEF(12, Mario, "Mario", AlertType_All, RESOURCE_ID_VIBE_SCORE_MARIO)
+VIBE_DEF(13, AlarmsLPM, "ALARMS LPM", AlertType_AlarmsLPM, RESOURCE_ID_VIBE_SCORE_ALARM_LPM)
+VIBE_DEF(14, Gentle, i18n_noop("Gentle"), AlertType_Alarms, RESOURCE_ID_VIBE_SCORE_GENTLE)
diff --git a/src/fw/services/normal/voice/transcription.h b/include/pbl/services/voice/transcription.h
similarity index 85%
rename from src/fw/services/normal/voice/transcription.h
rename to include/pbl/services/voice/transcription.h
index 2d56ef48cf..9d8f4718d7 100644
--- a/src/fw/services/normal/voice/transcription.h
+++ b/include/pbl/services/voice/transcription.h
@@ -1,18 +1,5 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
diff --git a/src/fw/services/normal/voice/voice.h b/include/pbl/services/voice/voice.h
similarity index 87%
rename from src/fw/services/normal/voice/voice.h
rename to include/pbl/services/voice/voice.h
index 3d5bd31da6..917b9b3d86 100644
--- a/src/fw/services/normal/voice/voice.h
+++ b/include/pbl/services/voice/voice.h
@@ -1,27 +1,14 @@
-/*
- * Copyright 2024 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
#pragma once
#include
#include "kernel/pebble_tasks.h"
-#include "services/normal/audio_endpoint.h"
-#include "services/normal/voice_endpoint.h"
-#include "services/normal/voice/transcription.h"
+#include "pbl/services/audio_endpoint.h"
+#include "pbl/services/voice_endpoint.h"
+#include "pbl/services/voice/transcription.h"
#include "applib/graphics/utf8.h"
diff --git a/include/pbl/services/voice/voice_speex.h b/include/pbl/services/voice/voice_speex.h
new file mode 100644
index 0000000000..ab60beb444
--- /dev/null
+++ b/include/pbl/services/voice/voice_speex.h
@@ -0,0 +1,60 @@
+/* SPDX-FileCopyrightText: 2025 Joshua Jun */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include
+#include
+#include
+
+#include "pbl/services/voice_endpoint.h"
+
+/**
+ * @brief Initialize the Speex encoder
+ * @return true if successful, false otherwise
+ */
+bool voice_speex_init(void);
+
+/**
+ * @brief Deinitialize the Speex encoder
+ */
+void voice_speex_deinit(void);
+
+/**
+ * @brief Get transfer info for audio endpoint
+ * @param info Pointer to AudioTransferInfoSpeex structure to fill
+ */
+void voice_speex_get_transfer_info(AudioTransferInfoSpeex *info);
+
+/**
+ * @brief Get the frame size in samples
+ * @return frame size in samples, or 0 if not initialized
+ */
+int voice_speex_get_frame_size(void);
+
+/**
+ * @brief Get the frame buffer for audio input
+ * @return pointer to frame buffer, or NULL if not initialized
+ */
+int16_t *voice_speex_get_frame_buffer(void);
+
+/**
+ * @brief Get the frame buffer size in bytes
+ * @return frame buffer size in bytes, or 0 if not initialized
+ */
+size_t voice_speex_get_frame_buffer_size(void);
+
+/**
+ * @brief Encode a frame of audio samples
+ * @param samples Pointer to 16-bit audio samples (processed in-place)
+ * @param encoded_data Buffer to store encoded data
+ * @param max_encoded_size Maximum size of encoded data buffer
+ * @return number of encoded bytes, or -1 on error
+ */
+int voice_speex_encode_frame(int16_t *samples, uint8_t *encoded_data, size_t max_encoded_size);
+
+/**
+ * @brief Check if Speex encoder is initialized
+ * @return true if initialized, false otherwise
+ */
+bool voice_speex_is_initialized(void);
diff --git a/include/pbl/services/voice_endpoint.h b/include/pbl/services/voice_endpoint.h
new file mode 100644
index 0000000000..fdc3440900
--- /dev/null
+++ b/include/pbl/services/voice_endpoint.h
@@ -0,0 +1,43 @@
+/* SPDX-FileCopyrightText: 2024 Google LLC */
+/* SPDX-License-Identifier: Apache-2.0 */
+
+#pragma once
+
+#include "pbl/services/audio_endpoint.h"
+#include "pbl/services/voice/transcription.h"
+#include "util/attributes.h"
+#include "util/uuid.h"
+
+#include
+#include