From 5d443014f48c9a3b722f634e263d08c447948f97 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Mon, 19 Jun 2023 14:55:12 +0200 Subject: [PATCH 01/32] initial test --- .github/workflows/cloudpod_release.yml | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/cloudpod_release.yml diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml new file mode 100644 index 0000000..de9d153 --- /dev/null +++ b/.github/workflows/cloudpod_release.yml @@ -0,0 +1,35 @@ +on: + workflow_dispatch: + inputs: + release_tag: + type: string + required: true + +name: Create Release +jobs: + build: + uses: ./.github/workflows/main.yml + secrets: inherit + upload: + name: Upload Release Asset + runs-on: ubuntu-latest + steps: + - name: Save the Cloud Pod + uses: HarshCasper/cloud-pod-save-action@0.1.0 + with: + name: 'release-pod.zip' + location: 'disk' + directory: '.' + - name: Build project # This would actually build your project, using zip for an example artifact + run: | + echo "Cloudpod Release Version ${{ inputs.release_tag }}" > Release.txt + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v1 + with: + tag_name: "v-${{ inputs.release_tag }}" + name: "Cloudpod for LocalStack release ${{ inputs.release_tag }}" + body: "Test Release ${{ inputs.release_tag }}" + files: | + ./release-pod.zip + Release.txt \ No newline at end of file From f1305105d3959ced4174062cb1f07bc3c75900b8 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Mon, 19 Jun 2023 16:06:24 +0200 Subject: [PATCH 02/32] testing --- .github/workflows/cloudpod_release.yml | 33 +++++++---- .github/workflows/setup.yml | 79 ++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/setup.yml diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index de9d153..a563c23 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -4,32 +4,45 @@ on: release_tag: type: string required: true + database_type: + type: string + required: true + push: + paths-ignore: + - 'README.md' + branches: + - main + - cloudpod_workflow name: Create Release jobs: build: - uses: ./.github/workflows/main.yml + uses: ./.github/workflows/setup.yml secrets: inherit + with: + store-cloudpod: "true" + database-type: ${{ inputs.database_type || 'mysql' }} + localstack-version: ${{ inputs.release_tag || 'latest'}} upload: name: Upload Release Asset runs-on: ubuntu-latest steps: - - name: Save the Cloud Pod - uses: HarshCasper/cloud-pod-save-action@0.1.0 + - name: Download Artifact + uses: actions/download-artifact@v3 with: - name: 'release-pod.zip' - location: 'disk' - directory: '.' + name: cloudpod + - name: Display structure of downloaded files + run: ls -R - name: Build project # This would actually build your project, using zip for an example artifact run: | - echo "Cloudpod Release Version ${{ inputs.release_tag }}" > Release.txt + echo "Cloudpod Release Version ${{ inputs.release_tag || 'latest'}}" > Release.txt - name: Create Release id: create_release uses: softprops/action-gh-release@v1 with: - tag_name: "v-${{ inputs.release_tag }}" - name: "Cloudpod for LocalStack release ${{ inputs.release_tag }}" - body: "Test Release ${{ inputs.release_tag }}" + tag_name: "v-${{ inputs.release_tag || 'latest'}}" + name: "Cloudpod for LocalStack release ${{ inputs.release_tag || 'latest'}}" + body: "Test Release ${{ inputs.release_tag || 'latest'}} for database ${{ inputs.database_type || 'mysql' }}" files: | ./release-pod.zip Release.txt \ No newline at end of file diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml new file mode 100644 index 0000000..2b9e9ce --- /dev/null +++ b/.github/workflows/setup.yml @@ -0,0 +1,79 @@ +name: Setup LocalStack +on: + workflow_call: + inputs: + store-cloudpod: + required: true + type: string + database-type: + required: true + type: string + localstack-version: + required: true + type: string + +jobs: + setup-localstack: + name: Setup infrastructure + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Setup Nodejs + uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Install dependencies + run: | + make install + + - name: Start LocalStack + env: + LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} + LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test + MYSQL_FEATURE_FLAG: ${{ inputs.database-type }} + run: | + mkdir ls_test + ls -la ls_test + docker pull localstack/localstack-pro:${{ inputs.localstack-version }} + # Start LocalStack in the background + if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then + LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d + else + LS_LOG=trace localstack start -d + fi + # Wait 30 seconds for the LocalStack container to become ready before timing out + echo "Waiting for LocalStack startup..." + localstack wait -t 15 + echo "Startup complete" + + - name: Deploy the application + env: + AWS_ACCESS_KEY_ID: test + AWS_SECRET_ACCESS_KEY: test + AWS_DEFAULT_REGION: us-east-1 + run: | + make build + make bootstrap + make deploy + + - name: Store Pod + if: ${{ inputs.store-cloudpod == 'true' }} + run: | + localstack pod save file://pod.zip + - name: Upload Pod as Artifact + if: ${{ inputs.store-cloudpod == 'true' }} + uses: actions/upload-artifact@v3 + with: + name: cloudpod + path: release-pod.zip + retention-days: 1 + + \ No newline at end of file From 6a34703a3f3f6137f91b4183b547da9fdeef264e Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Mon, 19 Jun 2023 16:11:48 +0200 Subject: [PATCH 03/32] fix workflow --- .github/workflows/cloudpod_release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index a563c23..56e3885 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -24,6 +24,7 @@ jobs: database-type: ${{ inputs.database_type || 'mysql' }} localstack-version: ${{ inputs.release_tag || 'latest'}} upload: + needs: build name: Upload Release Asset runs-on: ubuntu-latest steps: From 07520d8edbe6b354f98144b16d19420612544cfb Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Mon, 19 Jun 2023 16:18:39 +0200 Subject: [PATCH 04/32] fix pod name --- .github/workflows/setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 2b9e9ce..8da4349 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -67,7 +67,7 @@ jobs: - name: Store Pod if: ${{ inputs.store-cloudpod == 'true' }} run: | - localstack pod save file://pod.zip + localstack pod save file://release-pod.zip - name: Upload Pod as Artifact if: ${{ inputs.store-cloudpod == 'true' }} uses: actions/upload-artifact@v3 From 78bf9a29b2dd3531230bfbbf4ae4656eba5a104f Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Mon, 19 Jun 2023 18:16:25 +0200 Subject: [PATCH 05/32] add write permission to release workflow --- .github/workflows/cloudpod_release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 56e3885..02c2482 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -13,6 +13,9 @@ on: branches: - main - cloudpod_workflow + +permissions: + contents: write name: Create Release jobs: From c9a71d83b91a6ec377345358754e273a5840ba4d Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 14:22:27 +0200 Subject: [PATCH 06/32] improve workflow, add both pods to the release --- .github/workflows/cloudpod_release.yml | 93 ++++++++-------- .github/workflows/setup.yml | 148 ++++++++++++------------- 2 files changed, 121 insertions(+), 120 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 02c2482..f029c37 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -1,52 +1,55 @@ on: - workflow_dispatch: - inputs: - release_tag: - type: string - required: true - database_type: - type: string - required: true - push: - paths-ignore: - - 'README.md' - branches: - - main - - cloudpod_workflow + workflow_dispatch: + inputs: + release-tag: + type: string + required: true + push: + paths-ignore: + - 'README.md' + branches: + - main + - cloudpod_workflow permissions: - contents: write + contents: write name: Create Release jobs: - build: - uses: ./.github/workflows/setup.yml - secrets: inherit + build: + strategy: + matrix: + database-type: [mysql, mariadb] + uses: ./.github/workflows/setup.yml + secrets: inherit + with: + store-cloudpod: "true" + database-type: ${{ matrix.database-type }} + localstack-version: ${{ inputs.release-tag || 'latest'}} + upload: + needs: build + name: Upload Release Asset + runs-on: ubuntu-latest + steps: + - name: Download Pod Artifacts + uses: actions/download-artifact@v3 with: - store-cloudpod: "true" - database-type: ${{ inputs.database_type || 'mysql' }} - localstack-version: ${{ inputs.release_tag || 'latest'}} - upload: - needs: build - name: Upload Release Asset - runs-on: ubuntu-latest - steps: - - name: Download Artifact - uses: actions/download-artifact@v3 - with: - name: cloudpod - - name: Display structure of downloaded files - run: ls -R - - name: Build project # This would actually build your project, using zip for an example artifact - run: | - echo "Cloudpod Release Version ${{ inputs.release_tag || 'latest'}}" > Release.txt - - name: Create Release - id: create_release - uses: softprops/action-gh-release@v1 - with: - tag_name: "v-${{ inputs.release_tag || 'latest'}}" - name: "Cloudpod for LocalStack release ${{ inputs.release_tag || 'latest'}}" - body: "Test Release ${{ inputs.release_tag || 'latest'}} for database ${{ inputs.database_type || 'mysql' }}" - files: | - ./release-pod.zip - Release.txt \ No newline at end of file + name: cloudpod + - name: Display structure of downloaded files + run: ls -R + - name: Prepare Release.txt + run: | + echo "Cloud Pod Release for LocalStack Version ${{ inputs.release-tag || 'latest'}}." > Release.txt + echo "Please use the 'release-pod-{database}.zip' you need for your configuration." >> Release.txt + echo "By default LocalStack uses the engine 'mariadb'. If you start LocalStack with 'RDS_MYSQL_DOCKER=1', please use the 'mysql' pod." >> Release.txt + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v1 + with: + tag_name: "${{ inputs.release-tag || 'latest'}}" + name: "Cloud Pod for LocalStack Version '${{ inputs.release-tag || 'latest'}}'" + body: "The release features a cloud pod for LocalStack version '${{ inputs.release-tag || 'latest'}}'" + files: | + ./release-pod-mysql.zip + ./release-pod-mariadb.zip + Release.txt \ No newline at end of file diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 8da4349..9a45498 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -1,79 +1,77 @@ -name: Setup LocalStack +name: Setup Sample with LocalStack on: - workflow_call: - inputs: - store-cloudpod: - required: true - type: string - database-type: - required: true - type: string - localstack-version: - required: true - type: string + workflow_call: + inputs: + store-cloudpod: + required: true + type: string + database-type: + required: true + type: string + localstack-version: + required: true + type: string jobs: - setup-localstack: - name: Setup infrastructure - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - - name: Setup Nodejs - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Install dependencies - run: | - make install - - - name: Start LocalStack - env: - LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} - LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test - MYSQL_FEATURE_FLAG: ${{ inputs.database-type }} - run: | - mkdir ls_test - ls -la ls_test - docker pull localstack/localstack-pro:${{ inputs.localstack-version }} - # Start LocalStack in the background - if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then - LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d - else - LS_LOG=trace localstack start -d - fi - # Wait 30 seconds for the LocalStack container to become ready before timing out - echo "Waiting for LocalStack startup..." - localstack wait -t 15 - echo "Startup complete" - - - name: Deploy the application - env: - AWS_ACCESS_KEY_ID: test - AWS_SECRET_ACCESS_KEY: test - AWS_DEFAULT_REGION: us-east-1 - run: | - make build - make bootstrap - make deploy - - - name: Store Pod - if: ${{ inputs.store-cloudpod == 'true' }} - run: | - localstack pod save file://release-pod.zip - - name: Upload Pod as Artifact - if: ${{ inputs.store-cloudpod == 'true' }} - uses: actions/upload-artifact@v3 - with: - name: cloudpod - path: release-pod.zip - retention-days: 1 + setup-localstack: + name: Setup infrastructure + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 - \ No newline at end of file + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Setup Nodejs + uses: actions/setup-node@v3 + with: + node-version: 16 + + - name: Install dependencies + run: | + make install + + - name: Start LocalStack + env: + LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} + LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test + MYSQL_FEATURE_FLAG: ${{ inputs.database-type }} + run: | + mkdir ls_test + ls -la ls_test + docker pull localstack/localstack-pro:${{ inputs.localstack-version }} + # Start LocalStack in the background + if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then + LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d + else + LS_LOG=trace localstack start -d + fi + # Wait 30 seconds for the LocalStack container to become ready before timing out + echo "Waiting for LocalStack startup..." + localstack wait -t 15 + echo "Startup complete" + + - name: Deploy the application + env: + AWS_ACCESS_KEY_ID: test + AWS_SECRET_ACCESS_KEY: test + AWS_DEFAULT_REGION: us-east-1 + run: | + make build + make bootstrap + make deploy + + - name: Store Pod + if: ${{ inputs.store-cloudpod == 'true' }} + run: | + localstack pod save file://release-pod-${{ inputs.database-type }}.zip + - name: Upload Pod as Artifact + if: ${{ inputs.store-cloudpod == 'true' }} + uses: actions/upload-artifact@v3 + with: + name: cloudpod + path: release-pod-${{ inputs.database-type }}.zip + retention-days: 1 From 3f9c78213b81c6abdafe7c283e993abf7cab728e Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:12:58 +0200 Subject: [PATCH 07/32] add test_cloudpods workflow --- .github/workflows/test_cloudpods.yml | 73 ++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/test_cloudpods.yml diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml new file mode 100644 index 0000000..240ba07 --- /dev/null +++ b/.github/workflows/test_cloudpods.yml @@ -0,0 +1,73 @@ +name: Test Released Cloud Pods + +on: + #schedule: TODO activate + # “At 00:00 on Saturday.” + # - cron: "0 0 * * 6" + workflow_dispatch: + push: # TODO remove + paths-ignore: + - 'README.md' + branches: + - cloudpod_workflow + +jobs: + get-releases: + name: Retrieve Released Cloud Pods + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - id: set-matrix + run: echo "::set-output name=matrix::$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" + + test-pod-release: + needs: get-releases + runs-on: ubuntu-latest + strategy: + matrix: + tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} + db: ['mariadb', 'mysql'] + steps: + - name: Start LocalStack Default + env: + LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} + LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test + MYSQL_FEATURE_FLAG: ${{ matrix.mysql-feature-flag }} + run: | + mkdir ls_test + ls -la ls_test + docker pull localstack/localstack-pro:${{ matrix.tag }} + # Start LocalStack in the background + if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then + LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d + else + LS_LOG=trace localstack start -d + # Wait 30 seconds for the LocalStack container to become ready before timing out + echo "Waiting for LocalStack startup..." + localstack wait -t 15 + echo "Startup complete" + - name: Retrieve Pod mariadb + uses: dsaltares/fetch-gh-release-asset@master + with: + repo: 'dsaltares/godot-wild-jam-18' + version: 'tags/${{ matrix.tag }}' + file: 'release-pod-${{ matrix.db }}.zip' + target: './release-pod.zip' + - name: Inject mariadb pod + run: localstack pod load file://release-pod.zip + - name: Run Smoke Tests + run: | + awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output + echo "show tables:" + cat output + awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output + echo "select Author from Books:" + cat output + return_status=$(cat output | jq -r .status) + if [ "SUCCESS" != ${return_status} ]; then + echo "unexpected response: ${return_status}" + cat output + exit 1 + fi + \ No newline at end of file From 4d894d22b73a9e06a8d2488dbdfd1949078c103c Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:22:25 +0200 Subject: [PATCH 08/32] add debug output --- .github/workflows/cloudpod_release.yml | 1 - .github/workflows/test_cloudpods.yml | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index f029c37..c83b361 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -9,7 +9,6 @@ on: - 'README.md' branches: - main - - cloudpod_workflow permissions: contents: write diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 240ba07..3fc6b31 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -19,7 +19,10 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - id: set-matrix - run: echo "::set-output name=matrix::$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" + run: | + echo "gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]'" + echo "$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" + echo "matrix=$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" >> $GITHUB_OUTPUT" test-pod-release: needs: get-releases From 22eebbbbe7b193f094e0c37ba767e72fb3f92876 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:28:12 +0200 Subject: [PATCH 09/32] fixup --- .github/workflows/test_cloudpods.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 3fc6b31..13aea31 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -19,10 +19,10 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - id: set-matrix + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]'" - echo "$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" - echo "matrix=$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" >> $GITHUB_OUTPUT" + echo "matrix=$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" >> $GITHUB_OUTPUT test-pod-release: needs: get-releases From d53e87a6031e68cb671b1d883516155c76f2e6c8 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:35:24 +0200 Subject: [PATCH 10/32] fixup --- .github/workflows/test_cloudpods.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 13aea31..b836521 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -22,14 +22,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "matrix=$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')" >> $GITHUB_OUTPUT + echo "matrix=\"$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')"\" >> $GITHUB_OUTPUT test-pod-release: needs: get-releases runs-on: ubuntu-latest strategy: matrix: - tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} + tag: ${{ needs.get-releases.outputs.matrix }} db: ['mariadb', 'mysql'] steps: - name: Start LocalStack Default From bf4b02cd29e095d5bd5670eaf2283c891c101c96 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:41:45 +0200 Subject: [PATCH 11/32] fixup2 --- .github/workflows/test_cloudpods.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index b836521..0421baa 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -22,7 +22,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "matrix=\"$(gh api repos/$GITHUB_REPOSITORY/releases | jq -r '[.[].tag_name]')"\" >> $GITHUB_OUTPUT + output=$(gh api repos/$GITHUB_REPOSITORY/releases | jq '[.[].tag_name]') + output=$(echo $output | tr '\n' ' ') + echo "matrix=$output >> $GITHUB_OUTPUT test-pod-release: needs: get-releases From 0dc33c93fc8c8aabc09a216327f83361a08c8a25 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:45:17 +0200 Subject: [PATCH 12/32] fixup3 --- .github/workflows/test_cloudpods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 0421baa..4425d9b 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -24,7 +24,7 @@ jobs: run: | output=$(gh api repos/$GITHUB_REPOSITORY/releases | jq '[.[].tag_name]') output=$(echo $output | tr '\n' ' ') - echo "matrix=$output >> $GITHUB_OUTPUT + echo "matrix=$output" >> $GITHUB_OUTPUT test-pod-release: needs: get-releases From 09ed09999e297f7ac5eb59ab437be2a30f5c291a Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:48:37 +0200 Subject: [PATCH 13/32] fixup4 --- .github/workflows/test_cloudpods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 4425d9b..6926655 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - tag: ${{ needs.get-releases.outputs.matrix }} + tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} db: ['mariadb', 'mysql'] steps: - name: Start LocalStack Default From 118ca8f69f767411c7a481ee481139a6d20daa28 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:51:23 +0200 Subject: [PATCH 14/32] fixup5 --- .github/workflows/test_cloudpods.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 6926655..31fc8b7 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -38,7 +38,7 @@ jobs: env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test - MYSQL_FEATURE_FLAG: ${{ matrix.mysql-feature-flag }} + MYSQL_FEATURE_FLAG: ${{ matrix.db }} run: | mkdir ls_test ls -la ls_test From 956f0ec6a51785dc6f177b7e4b1ceb5ba19c9cb7 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 17:56:45 +0200 Subject: [PATCH 15/32] fix if-else-fi --- .github/workflows/test_cloudpods.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 31fc8b7..da2f4f6 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -48,6 +48,7 @@ jobs: LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d else LS_LOG=trace localstack start -d + fi # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." localstack wait -t 15 From a05aad3bc81631f004dc07ad0d91328e78d4c55f Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 18:01:57 +0200 Subject: [PATCH 16/32] add dependencies for localstack + awscli to workflow --- .github/workflows/test_cloudpods.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index da2f4f6..497ada9 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -34,6 +34,13 @@ jobs: tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} db: ['mariadb', 'mysql'] steps: + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + - name: Install Dependencies + run: | + pip install localstack awscli-local - name: Start LocalStack Default env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} From d36fe40fc06494109c0429425e63ab71848a08f9 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 18:05:30 +0200 Subject: [PATCH 17/32] fix repo name --- .github/workflows/test_cloudpods.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 497ada9..925acfd 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -41,7 +41,7 @@ jobs: - name: Install Dependencies run: | pip install localstack awscli-local - - name: Start LocalStack Default + - name: Start LocalStack env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test @@ -63,7 +63,7 @@ jobs: - name: Retrieve Pod mariadb uses: dsaltares/fetch-gh-release-asset@master with: - repo: 'dsaltares/godot-wild-jam-18' + repo: $GITHUB_REPOSITORY version: 'tags/${{ matrix.tag }}' file: 'release-pod-${{ matrix.db }}.zip' target: './release-pod.zip' From ca65540571061010a0467cc98a1b9683fa290715 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 18:49:30 +0200 Subject: [PATCH 18/32] remove action, retrieve pod using api --- .github/workflows/test_cloudpods.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 925acfd..5f325a8 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -60,14 +60,18 @@ jobs: echo "Waiting for LocalStack startup..." localstack wait -t 15 echo "Startup complete" - - name: Retrieve Pod mariadb - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: $GITHUB_REPOSITORY - version: 'tags/${{ matrix.tag }}' - file: 'release-pod-${{ matrix.db }}.zip' - target: './release-pod.zip' - - name: Inject mariadb pod + - name: Retrieve Pod + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # TODO the download url seems to follow the pattern $GITHUB_REPOSITORY/releases/download/{TAG}/{ASSET_NAME} + # alternatively we can query the asset-id, and browser_download_url, but it seems like an overhead + # asset_id=$(gh api repos/$GITHUB_REPOSITORY/releases/tags/latest | jq -r '.assets[]' | jq --arg DB $DB -c 'select(.name=="release-pod-\( $DB ).zip") | .id) + # download_url=$(gh api repos/$GITHUB_REPOSITORY/releases/assets/$asset_id | jq -r ".browser_download_url") + download_url="https://github.com/$GITHUB_REPOSITORY/releases/download/${{ matrix.tag }}/release-pod-${{ matrix.db }}.zip" + curl -L download_url --output release-pod.zip + ls -la + - name: Inject Pod run: localstack pod load file://release-pod.zip - name: Run Smoke Tests run: | From 6317da69272ea867858d551b1d6d855d285f6fce Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 18:53:29 +0200 Subject: [PATCH 19/32] fix download-url, move retrieving of pod --- .github/workflows/test_cloudpods.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 5f325a8..8b54201 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -34,6 +34,17 @@ jobs: tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} db: ['mariadb', 'mysql'] steps: + - name: Retrieve Pod + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # TODO the download url seems to follow the pattern $GITHUB_REPOSITORY/releases/download/{TAG}/{ASSET_NAME} + # alternatively we can query the asset-id, and browser_download_url, but it seems like an overhead + # asset_id=$(gh api repos/$GITHUB_REPOSITORY/releases/tags/latest | jq -r '.assets[]' | jq --arg DB $DB -c 'select(.name=="release-pod-\( $DB ).zip") | .id) + # download_url=$(gh api repos/$GITHUB_REPOSITORY/releases/assets/$asset_id | jq -r ".browser_download_url") + download_url="https://github.com/$GITHUB_REPOSITORY/releases/download/${{ matrix.tag }}/release-pod-${{ matrix.db }}.zip" + curl -L $download_url --output release-pod.zip + ls -la - name: Setup Python uses: actions/setup-python@v4 with: @@ -60,17 +71,6 @@ jobs: echo "Waiting for LocalStack startup..." localstack wait -t 15 echo "Startup complete" - - name: Retrieve Pod - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - # TODO the download url seems to follow the pattern $GITHUB_REPOSITORY/releases/download/{TAG}/{ASSET_NAME} - # alternatively we can query the asset-id, and browser_download_url, but it seems like an overhead - # asset_id=$(gh api repos/$GITHUB_REPOSITORY/releases/tags/latest | jq -r '.assets[]' | jq --arg DB $DB -c 'select(.name=="release-pod-\( $DB ).zip") | .id) - # download_url=$(gh api repos/$GITHUB_REPOSITORY/releases/assets/$asset_id | jq -r ".browser_download_url") - download_url="https://github.com/$GITHUB_REPOSITORY/releases/download/${{ matrix.tag }}/release-pod-${{ matrix.db }}.zip" - curl -L download_url --output release-pod.zip - ls -la - name: Inject Pod run: localstack pod load file://release-pod.zip - name: Run Smoke Tests From a016328f4e365fed707c4629ab02b95e3154a35b Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 20 Jun 2023 19:35:10 +0200 Subject: [PATCH 20/32] show logs on failure --- .github/workflows/test_cloudpods.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 8b54201..3d2b927 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -63,9 +63,9 @@ jobs: docker pull localstack/localstack-pro:${{ matrix.tag }} # Start LocalStack in the background if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then - LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d + DEBUG=1 RDS_MYSQL_DOCKER=1 localstack start -d else - LS_LOG=trace localstack start -d + DEBUG=1 localstack start -d fi # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." @@ -87,4 +87,8 @@ jobs: cat output exit 1 fi + - name: Show Logs + if: failure() + run: | + localstack logs \ No newline at end of file From de4da7e8da7b464b982b2982d0c0a0292f6fbff4 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 10:21:19 +0200 Subject: [PATCH 21/32] wait for rds db to be available, cleanup --- .github/workflows/cloudpod_release.yml | 12 ++++---- .github/workflows/test_cloudpods.yml | 39 ++++++++++++++++++-------- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index c83b361..86b66a8 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -38,17 +38,17 @@ jobs: run: ls -R - name: Prepare Release.txt run: | - echo "Cloud Pod Release for LocalStack Version ${{ inputs.release-tag || 'latest'}}." > Release.txt - echo "Please use the 'release-pod-{database}.zip' you need for your configuration." >> Release.txt - echo "By default LocalStack uses the engine 'mariadb'. If you start LocalStack with 'RDS_MYSQL_DOCKER=1', please use the 'mysql' pod." >> Release.txt + echo "Cloud Pod of the Sample created with LocalStack Version ${{ inputs.release-tag || 'latest'}}." > Release.txt + echo " * Please use the 'release-pod-{database}.zip' you need for your configuration." >> Release.txt + echo " * By default LocalStack uses the engine 'mariadb', so you need 'release-pod-mariadb.zip' " >> Release.txt + echo " * If you start LocalStack with 'RDS_MYSQL_DOCKER=1', please use the 'mysql' pod ('release-pod-mysql.zip')" >> Release.txt - name: Create Release id: create_release uses: softprops/action-gh-release@v1 with: tag_name: "${{ inputs.release-tag || 'latest'}}" name: "Cloud Pod for LocalStack Version '${{ inputs.release-tag || 'latest'}}'" - body: "The release features a cloud pod for LocalStack version '${{ inputs.release-tag || 'latest'}}'" + body-path: ./Release.txt files: | ./release-pod-mysql.zip - ./release-pod-mariadb.zip - Release.txt \ No newline at end of file + ./release-pod-mariadb.zip \ No newline at end of file diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 3d2b927..37c4ca0 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -57,38 +57,53 @@ jobs: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test MYSQL_FEATURE_FLAG: ${{ matrix.db }} + DEBUG: 1 + POD_LOAD_CLI_TIMEOUT: 300 run: | mkdir ls_test ls -la ls_test docker pull localstack/localstack-pro:${{ matrix.tag }} # Start LocalStack in the background if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then - DEBUG=1 RDS_MYSQL_DOCKER=1 localstack start -d + RDS_MYSQL_DOCKER=1 localstack start -d else - DEBUG=1 localstack start -d + localstack start -d fi # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." localstack wait -t 15 echo "Startup complete" - name: Inject Pod - run: localstack pod load file://release-pod.zip + run: | + localstack pod load file://release-pod.zip + state=$(awslocal rds describe-db-instances | jq -r ".DBInstances[0].DBInstanceStatus") + while [ "$state" = creating ]; do + sleep 1 + state=$(awslocal rds describe-db-instances | jq -r ".DBInstances[0].DBInstanceStatus") + done - name: Run Smoke Tests run: | - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output + awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output1 echo "show tables:" - cat output - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output + cat output1 + awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output2 echo "select Author from Books:" - cat output - return_status=$(cat output | jq -r .status) - if [ "SUCCESS" != ${return_status} ]; then - echo "unexpected response: ${return_status}" - cat output + cat output2 + return_status1=$(cat output1 | jq -r .status) + if [ "SUCCESS" != ${return_status1} ]; then + echo "unexpected response for query1: ${return_status1}" + cat output1 + exit 1 + fi + return_status2=$(cat output2 | jq -r .status) + if [ "SUCCESS" != ${return_status2} ]; then + echo "unexpected response for query2: ${return_status2}" + cat output2 exit 1 fi - name: Show Logs if: failure() run: | localstack logs - \ No newline at end of file + # TODO add slack notification + # add https://github.com/marketplace/actions/keepalive-workflow + adapt commit message https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs From 9fda55bbf49309629a72028e0fc7a528a10f7bfa Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 10:28:52 +0200 Subject: [PATCH 22/32] set fail-fast to false --- .github/workflows/test_cloudpods.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 37c4ca0..a189a93 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -30,6 +30,7 @@ jobs: needs: get-releases runs-on: ubuntu-latest strategy: + fail-fast: false matrix: tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} db: ['mariadb', 'mysql'] From e43cf836345b58bb276e29d5f92ea62e8cf516bf Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 12:53:14 +0200 Subject: [PATCH 23/32] test cloudpod release --- .github/workflows/cloudpod_release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 86b66a8..81b10d2 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -9,6 +9,7 @@ on: - 'README.md' branches: - main + - cloudpod_workflow # TODO remove permissions: contents: write @@ -41,7 +42,9 @@ jobs: echo "Cloud Pod of the Sample created with LocalStack Version ${{ inputs.release-tag || 'latest'}}." > Release.txt echo " * Please use the 'release-pod-{database}.zip' you need for your configuration." >> Release.txt echo " * By default LocalStack uses the engine 'mariadb', so you need 'release-pod-mariadb.zip' " >> Release.txt + echo " * Click here to inject the 'mariadb' pod into your running LocalStack instance: [![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mariadb.zip)" >> Release.txt echo " * If you start LocalStack with 'RDS_MYSQL_DOCKER=1', please use the 'mysql' pod ('release-pod-mysql.zip')" >> Release.txt + echo " * Click here to inject the 'mysql' pod into your running LocalStack instance: [![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt - name: Create Release id: create_release uses: softprops/action-gh-release@v1 From 1c804f0dd5f795d25b523aa549e80738b69f4834 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 13:10:32 +0200 Subject: [PATCH 24/32] fix issue with release body, use helper for running smoke test, use action to store pod --- .github/workflows/cloudpod_release.yml | 2 +- .github/workflows/setup.yml | 13 +++++++++---- test-helper/smoke-test.sh | 26 ++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 5 deletions(-) create mode 100755 test-helper/smoke-test.sh diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 81b10d2..018915a 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -51,7 +51,7 @@ jobs: with: tag_name: "${{ inputs.release-tag || 'latest'}}" name: "Cloud Pod for LocalStack Version '${{ inputs.release-tag || 'latest'}}'" - body-path: ./Release.txt + body_path: ./Release.txt files: | ./release-pod-mysql.zip ./release-pod-mariadb.zip \ No newline at end of file diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 9a45498..6b58e51 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -63,11 +63,16 @@ jobs: make build make bootstrap make deploy - - - name: Store Pod - if: ${{ inputs.store-cloudpod == 'true' }} + # TODO should we run smoke tests before creating the pod? + - name: Run Smoke Tests run: | - localstack pod save file://release-pod-${{ inputs.database-type }}.zip + ./test-helper/smoke-test.sh + - name: Save the Cloud Pod + if: ${{ inputs.store-cloudpod == 'true' }} + uses: HarshCasper/cloud-pod-save-action@0.1.0 + with: + name: 'release-pod-${{ inputs.database-type }}.zip' + location: 'disk' - name: Upload Pod as Artifact if: ${{ inputs.store-cloudpod == 'true' }} uses: actions/upload-artifact@v3 diff --git a/test-helper/smoke-test.sh b/test-helper/smoke-test.sh new file mode 100755 index 0000000..d143c53 --- /dev/null +++ b/test-helper/smoke-test.sh @@ -0,0 +1,26 @@ +# simple smoke test: runs two queries using the lambda that should be deployed +# which connects to the database +# it fails if the lambda cannot be called, or the database is not accessible/the tables are not available + +awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output1 +echo "show tables:" +cat output1 + +awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output2 +echo "select Author from Books:" +cat output2 + + +return_status1=$(cat output1 | jq -r .status) +if [ "SUCCESS" != ${return_status1} ]; then + echo "unexpected response for query1: ${return_status1}" + cat output1 + exit 1 +fi + +return_status2=$(cat output2 | jq -r .status) +if [ "SUCCESS" != ${return_status2} ]; then + echo "unexpected response for query2: ${return_status2}" + cat output2 + exit 1 +fi \ No newline at end of file From 808a43696365b6498b10df97039c90e5c1ab0c04 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 13:12:47 +0200 Subject: [PATCH 25/32] fix action name --- .github/workflows/setup.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 6b58e51..feb3295 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -69,7 +69,7 @@ jobs: ./test-helper/smoke-test.sh - name: Save the Cloud Pod if: ${{ inputs.store-cloudpod == 'true' }} - uses: HarshCasper/cloud-pod-save-action@0.1.0 + uses: HarshCasper/cloud-pod-save@v0.1.0 with: name: 'release-pod-${{ inputs.database-type }}.zip' location: 'disk' From c8c634f3e75e38fd247ec554fcd2115accfc4755 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 13:37:36 +0200 Subject: [PATCH 26/32] change release notes --- .github/workflows/cloudpod_release.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 018915a..c78419a 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -37,14 +37,18 @@ jobs: name: cloudpod - name: Display structure of downloaded files run: ls -R - - name: Prepare Release.txt + - name: Prepare Release Notes run: | - echo "Cloud Pod of the Sample created with LocalStack Version ${{ inputs.release-tag || 'latest'}}." > Release.txt - echo " * Please use the 'release-pod-{database}.zip' you need for your configuration." >> Release.txt - echo " * By default LocalStack uses the engine 'mariadb', so you need 'release-pod-mariadb.zip' " >> Release.txt - echo " * Click here to inject the 'mariadb' pod into your running LocalStack instance: [![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mariadb.zip)" >> Release.txt - echo " * If you start LocalStack with 'RDS_MYSQL_DOCKER=1', please use the 'mysql' pod ('release-pod-mysql.zip')" >> Release.txt - echo " * Click here to inject the 'mysql' pod into your running LocalStack instance: [![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt + echo "This release includes the Cloud Pod of the sample created with LocalStack Version `${{ inputs.release-tag || 'latest'}}`." > Release.txt + echo "Please use the `release-pod-{database}.zip` you need for your configuration." >> Release.txt + echo "### MariaDB" >> Release.txt + echo "By default LocalStack uses the engine `mariadb`, so you need `release-pod-mariadb.zip`." >> Release.txt + echo "You can click the Launchpad to inject the pod into your running LocalStack instance:" >> Release.txt + echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mariadb.zip)" >> Release.txt + echo "### MySQL" >> Release.txt + echo "If you start LocalStack with `RDS_MYSQL_DOCKER=1`, please use the `mysql` pod `release-pod-mysql.zip`" >> Release.txt + echo "You can click the Launchpad to inject the `mysql` version of the pod into your running LocalStack instance:" >> Release.txt + echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt - name: Create Release id: create_release uses: softprops/action-gh-release@v1 From e927e1cfe17a4a365ea283bd48a8d6a9e8b3340d Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 13:58:53 +0200 Subject: [PATCH 27/32] fix description for release; add cloudpod section in README --- .github/workflows/cloudpod_release.yml | 10 +++++----- README.md | 25 +++++++++++++++++++++++++ images/screenshot_launchpad.png | Bin 0 -> 113683 bytes 3 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 images/screenshot_launchpad.png diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index c78419a..41ac5e8 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -39,15 +39,15 @@ jobs: run: ls -R - name: Prepare Release Notes run: | - echo "This release includes the Cloud Pod of the sample created with LocalStack Version `${{ inputs.release-tag || 'latest'}}`." > Release.txt - echo "Please use the `release-pod-{database}.zip` you need for your configuration." >> Release.txt + echo "This release includes the Cloud Pod of the sample created with LocalStack Version \`${{ inputs.release-tag || 'latest'}}\`." > Release.txt + echo "Please use the \`release-pod-{database}.zip\` you need for your configuration." >> Release.txt echo "### MariaDB" >> Release.txt - echo "By default LocalStack uses the engine `mariadb`, so you need `release-pod-mariadb.zip`." >> Release.txt + echo "By default LocalStack uses the engine \`mariadb\`, so you need \`release-pod-mariadb.zip\`." >> Release.txt echo "You can click the Launchpad to inject the pod into your running LocalStack instance:" >> Release.txt echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mariadb.zip)" >> Release.txt echo "### MySQL" >> Release.txt - echo "If you start LocalStack with `RDS_MYSQL_DOCKER=1`, please use the `mysql` pod `release-pod-mysql.zip`" >> Release.txt - echo "You can click the Launchpad to inject the `mysql` version of the pod into your running LocalStack instance:" >> Release.txt + echo "If you start LocalStack with \`RDS_MYSQL_DOCKER=1\`, please use the \`mysql\` pod \`release-pod-mysql.zip\`" >> Release.txt + echo "You can click the Launchpad to inject the \`mysql\` version of the pod into your running LocalStack instance:" >> Release.txt echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt - name: Create Release id: create_release diff --git a/README.md b/README.md index 5337c8d..2f3ff22 100644 --- a/README.md +++ b/README.md @@ -197,6 +197,31 @@ The implementation can be found in `lib/resource-initializer.ts`. More details about the original sample can be found in the AWS blog post — [Use AWS CDK to initialize Amazon RDS instances](https://aws.amazon.com/blogs/infrastructure-and-automation/use-aws-cdk-to-initialize-amazon-rds-instances/). + +## Cloud Pods + +[Cloud Pods](https://docs.localstack.cloud/user-guide/tools/cloud-pods/) are a mechanism that allows you to take a snapshot of the state in your current LocalStack instance, persist it to a storage backend, and easily share it with your team members. + +You can convert your current AWS infrastructure state to a Cloud Pod using the `localstack` CLI. +Check out our [Getting Started guide](https://docs.localstack.cloud/user-guide/tools/cloud-pods/getting-started/) and [LocalStack Cloud Pods CLI reference](https://docs.localstack.cloud/user-guide/tools/cloud-pods/pods-cli/) to learn more about Cloud Pods and how to use them. + +To inject a Cloud Pod you can use [Cloud Pods Launchpad](https://docs.localstack.cloud/user-guide/tools/cloud-pods/launchpad/) wich quickly injects Cloud Pods into your running LocalStack container. + +> **NOTE**: The Cloud Pod linked here, was created with the `latest` LocalStack version, make sure you also run `latest` when injecting. +Further, LocalStack needs to be started with the flag `RDS_MYSQL_DOCKER=1`. For different flavors check the available [releases](https://github.com/localstack/amazon-rds-init-cdk/releases). + +Click here [![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/localstack/amazon-rds-init-cdk/releases/download/latest/release-pod-mysql.zip) to launch the Cloud Pods Launchpad and inject the Cloud Pod for this application by clicking the `Inject` button. + +![Cloud Pod injection with the Cloud Pod Launchpad](images/screenshot_launchpad.png) + +Alternatively, you can inject the pod by using the `localstack` CLI. +First, you need to download the pod you want to inject from the [releases](https://github.com/localstack/amazon-rds-init-cdk/releases). +Then run: + +```sh +localstack pod load file://$(pwd)/release-pod-mysql.zip +``` + ## Contributing We appreciate your interest in contributing to our project and are always looking for new ways to improve the developer experience. We welcome feedback, bug reports, and even feature ideas from the community. diff --git a/images/screenshot_launchpad.png b/images/screenshot_launchpad.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6e34c6f88ef51a1121d4679f37d345d014219a GIT binary patch literal 113683 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

G#_B7iKM?Wjt%~Uf7w;sq` zi|j08(-qg|SZz8feN2!FIx4}eK3<22E0XJ!>t2sH_?)7UK)ctTzAJe5tN7^^)tcw- z$!QUia?#g$5d*BG%YC~I#i~rtnHIWf&pxs3K<~q49j?}U!|O7wnvh1ZA06y^m8qLF z?Xg_ec3fOc+o9imP6HYpWenJL)NuN3#rmU3Gb*#RQFWqUe{p{6EA;3XgCy-&bShA+ zTtE5?an;f*iLpN$k0w6n@mFEtK11mF2KB7~kmbaC4V<(2M+^tm`Mv&C!}ZG`Iz21*SC#&B=^?HC(#4$7cjI5FpvLLb&Z3h_7jTeLrN zuKOJaDbe>IpX`SAo=V*Usx<+b;%7I(g^IlO)>a+0!c|htjCo%S1;nYaMa9r|E=m;c0ePOte7yNLFS@OLIQ=&HQrcJc#F-cV6Dx^|o zqg6I2_#AA_mDqX2Vcb-@>~XM0_j;`H%(>~7`)OP_VS1$06=a3oEFj2Ognuhkxz7qp zuh?;a3$F2&+BF*=$(XY2t78n(Bxeb{oMC=|xJTfm*zoO-dc<3F;}k?z#eTO}-|Sin z#W8GsMNpq;L;n3O_6zy9NQP@r4hK4E%%B^IsU$x7LFWo`pJ3XYICv z)eXztz6N|`e65<`{X;bvmlXs`db$?DufOLKv$Q_syMvpu=o!cUxE*#Sanqw*QEc2s+RK^Gojxq@k4w<)K&vMlC~BXx&CH z8i#j zbEff=mY{vZZB^qcN8L+^w-m?Nr8Men)%4@v9s#cei2Ym{^NgpXhcl@>=)2~e4t%|R z?pKF-{j=v+L;h|@myOMB*5z_Cinu?84FmffU7DOBRFofPJTFC!te=bu^jLgCfXd9= zmiu~+rlpdYuu`ki(ZQgX%lET<*`jZ*^>1RfDoX)HFcactg zPxi!_?bk{Z=sg5IK19jAQ$}6&hZFER%wyEKJV5G{mc~MvW+y`4T^|Sbs!XXmunu#7 zqSO=i@ua+6nVYQF3uY~_xaP&oW)`_>qtcBcVOMYX_Fq|2&m|f z{=7X0yS1hs%BybcCJOwe3g20Lf8R8*&sJv|Tkh-2NEtsnC%J$?#I^$stG`6wo?H3P zC|)+o4adnB!$svx1FrJU1|ao0mQkaAB%GSY$H6DmyxS!SypH?hi9+gtrfe-i&3E;7N_}A7NG4>&2Q$6dlLth@yK@v zHIn4ds2Nhv3k72ga8`V;W&MKH<9*MqhRRbwMVT$UfP}y^hDOO83LUShL_sy zOAs;TUT_AlZ)n5Zc_t2}Uy*jXzE050gZcRPP&91YU>lB|ik`7Wp=KzpzC4ijuK-}z zp4xAfe7cjohK+HB%`-cEJq{&USxB zgsPg!PXbM+5c9hDXrPO2b=7~s{aSpcl)8gR%b~$O?dF*?s(>>M#mHN}y9TQ*T)oeu8uJ$|ngg^Ka4P&y=(cHx=FS`_y^=(aL~LZL72>n3~Z zp@=(^dPZ(&P$IILUfT0Do~b6Z~>nt=gnc}Y7D&{X%n7vP!Byg=3dSeVAD z&!ul#0QjuvY*nmg$WpO>0+`= zqf24}=$7253xw+W!cumoDGw)3Wbgk?_lcF>Om+db9%{iu@ohieY~%&fct0F5)!rbp zMz$wQonI83T}V--PP5@2QV>U<)W@wQG3PandmEjMQQ|0Bq0V}*2I-jILV|nu$rK&X zPl|T(Qfozb8@t__4%a%>C1E!vz7JCBpQuGQ8fOj=VUgsWJZOaB^N-cY5Jq6>ew<`L z<2{daY$H1;sKx-GdE5%+<_)^vjTc2HT?%1TCK+xI?o{1|Q^7KID=b4&1gzC8g1xkg z?@xZrok2>d6a}}#d4kRo{K4n%s6UNpXBE9{ntZ!Bt>{GB9}|*7`I2jk;o-U19fmIq zup{8rd;HlNU|=ccblr~#se;J?g9>V|gW!OB$R$bdopsam0@rdIpWTj5MI|1hp7Y|% z#wx{?Bh=XESMegY@{z zw9q7Tw@27Q$|cNH?LzzRV|O*26Fxg;&K|R91@dt&vwGdUp-a#P$zmVaeua8Y9iPw0 zk|5(E?0T6?%*)~2>-66Y8G#TAq6#nZ)GEwuCKBhT=bU#Hf6it`%`w8R>1l+QEe)a;rd`}}qTZ!#*`v{rf_V=krGTSc`BRm{a_8a5*E2~95GwA zvw9FT@j65ENRgvpNoYRBJx>L{5_GPKT!Skl4! za^ZjN*Fj;F<}ZX5cW?TM)Q9%uzP=i&n+#qDPkwhjh*w|n8!hz6z|y2KlUb+@j6$fW z9PMfu$KYxEdE=HVVLd?yeNIg1Rk8mqE75$>lE`G;Q3fykdQDTwZ!&hye)^@~W$T;S zN<%sXIEyY<2mu)5y~!spd=*(&=Qp$Y**5=(!=yU#LJX=Y;25x-vtYCNtAA(5Ph7c;RoiFYWev_^9Jm_!8j%^!yGN>|! zzyzj9qH?7M_+k%!x~xbnv)ra4^LP-@ELM?gXC}EN8cN`c;I~`Wy}O`hqZ}7kHU#Xk zaTlix+0{5#W(1%Dl#fEyMta@|OaQ=Dxg&Zm% zMInL~Gw$FadLlO66wM;gp0c$hT&vgt&33gs>4M570Y?;W$g2NcA+u z9z4koS9jYU$uYnDgwsBOD}Mjc&(RAe_a*tnTW*O(x2dU>xRpdrAhHN@>!{OYvz(?^ z`HFQ8ebmq+R?OK86i+;6Ynj3wj64?+MXcQ1S#oJ?J7o6lr2wl2+lB8`!QAa+)f|nE z8g;_jj!GKo6!Y+YigHml8?$QJO5J4!ZHf4XDZWUiq?C%SX^YB!?p~2nTG|=7qEKCq zF1bg76d9}aA4_RHnJNA(>wz`Ux5NyrSEJ9d77Udc3@2hURuT2sXTKy9bmyC*Zi7Wr zNcage;7X~Pp!`PcUatli;!%n|zm}_y9W29fec66TQ19j(6?uuA`u}BJjrJgdD{SK_`d+}fndz^h30uh%p{8&wCWvb`4 zQ2PaTZlPO>p=PIsyFsf}bAZU9XRUQ2vlk?l>O5 za+2=aEkLTH-S5(yZOTO*Al{rcWhX%Fgj9~`LSMLP;*MPpV z+EYOwElumgO3H%B(|S?83JodNBiG#OBX`E_(W+Di)0`gA88k9Ag|Bk_(Uf7!B$(}W z8!=ymAf9|I1*Vm28z{AggNS`r0kGz|LD!dfr@brjL_7hIQ(LYHs3x4g7*e#mTiy5( zv3yA>9=}dPsVrtBHIgDWfkkhvnTG>8KV3F^7(yjyUBM11d?*IH!sz!N*fk5A2vzC= zYGKWEIE$6=c^>u6=7Gw#_4*&V-h%Xwmyea~L@+?#kJ^0C56*$wH^&}uO7%`Y#yW{# zpapl9GWA#GZz{*%a65-9&8%#XtOem|kj*2E5h1Z_?gMx5u#Uuo6m7V_#H?tqpK5ie zV({T20o2rH31ey=KAI!ec-v}zBxQVy|lU1|f)gU}W|5y=}w+c5qD-X|L z^*uC5m&$;5Ur7y*<#0>6vb9}p{WI39$@B!qDFSXQ95jDqr9#f`c_5U+G`a{vKqzhi z_1$Vxm&$Q_2G(7kF7-bhe@g8Q!q48b0bPD!D70 zEnVs2hOc*{^7{7RBM?_*v^?aQjfZr&{7lk{fd+gcg<+d9q6Lz-I|+4)znFZ?xmDVs zCJZT;;anwniXyE?(H&ouBi!_A4t}@;MFdf$-59y}e;o);^jqo~Bs?4)g_j zpX4_<&S{m;Rk9QG2e6;-z?p>ZZ{HcT?0N%o{iGP|$Afm1SNv4L;GJW4tbCv2S{d1D zod>iAcpy_C0O9C1TuyNur}mfRG|Jq?$TJ)>m8**Jx63QjEr=y&fK2*3%|V*H~MS?Al!VMgA~gX^u6jouwkpO$m3 zHZ`TRDwdk|lXx*gdw6Xxm|bTIZnRTje%G`)Xg(Nyb0xdbVOhZ7t={ja-Zyo96zl|5 zgB2QpVmnZN4Q~9{SK~zhbV}I?J=gjFG7aB}o$K9(SBID~N@Bf95 ze-eq*{ghr~C=}}8Rb1Qg#BnZUJ5kP^e)gv+VHW=ZO*j@w!kTs@jh(6;AFV8RyBx;P zW{c(Y8jHJW9z@91uB^CTGbR%-lQt}6(K%+3#$_VIwhQ{1k5&((39MT3^yafe!zND6 z=u|ryUnm0^)Oka=R)i)-aps)oU$X5-Yis1R=kmY%c+Ue78mi%D(eeDA&L_`>yW7|c z2Jl~L+H%MHdjJQ}du2bZR$@ii@m}s|@cK?F7?g$m%I{O&^=z0Ty^^R?#OP-N>HTRa4(+`Act_M(j}DfQuWovM_~i0I5@h>qTM zqW8tFM#kxZPnzIj9zy=67)V4G-4H&D&5sZZ@R?k>2P@|#89#PeQr1G5@ej0}#k}u& zK~zF7Q;@NjIZ9Yx3OeckvWhuVGaO03StQiGmVM_G8}^SOq!`l=Dj2c4-vZIhJH+2zh7LcYIH~uIE4b zbq4@h-lx}C7UQjY9pIS%;9FGq7Agned=UOdwHmwVN!IFBZUo1%tbbFiMpYz3qSpfL zx|_ZOR9Mc9y-Kn_@Q3k#UD+NzxDYoRa*!D3I`Y3HZ%j4>WDP>ji!1DZKDEwBO6}MI z%-G>Rvkf^nZXNhJhUvEkS*|r%DvDhlKkqw^Q_Y&&KMLm9hJt=Qd!RgMf08>MlUi0 zOA)FA0RgAQ*%jvVZ57W;2e;Q^xLsmDB_OX$>y{S9GWEZ1yd)#oZM6MmoTv|t8{Nlm z-eqdvi5vbn5ee6tt1{Wk1p^KYrLqdg&jzmx!I77_UrHcGKR1d;m&7cW3nS?-ZULHb zYLYb3@{dcko>AC9yJ2eo+%%1->OHOg!J50+@2)ViGSi9>e#wHW%4z9znF^rI^87#H zBMWH=m9NBL34(~_hoBI7(&!nR-6P;4vF$lS+j@DOMcf4J%QH?3O=^M;#++%!uB{#- z?jOeXAJoknh?|~cUe!5I)E@O!1;{O}9tM@8$3Bgq55@SYrD~o&eY-(YB`%48xo9}!%UyXXT%=}@jW)|g#q@Mu>ZR9L5dn#vq zov05>#W7WJGUgqve|V;^Cv*%p9T$`bgk}YC;M4~VmKCq|yX_}WsBKK>2Buayt(B(y zAj@gzt9?#h{L!xT_ywbKT1ubjNqrjFjV#Y$Z&QT1>8a1oN~d?6vVU>MG;?WU-&uyf zgz8zT?J09!$ClAE{oqRDvSL%^zS7^H1C3^aVlb7kv7yt(_=Nm6Wd2^>Pg!XY}<)f5@+Y8`3jb?x?4ukbIpNVtTjkt(1KfWcRZa z;QtUVZq|VK%yD-3gN)uFGQdd*KeA-4S#*!j{%*RK*K;!N_`*x-P`gjBrh`O5K!W#%XNZ zW@Fp7t;Tj5+qQ9^9`~I0-f#EYe~kTMk7Vz)=bBt=&fl8P>H_(=lnSRB>L|&a%v`y~ z?kZUFk+rR};2#NwNdS@|NO%`z#nRV|ls%HA=yOXH*7`h>10Vgce;P-9(}FRUTiJ|? zG(%NIp)XSnBw2|;gYyi6&0%ha-9u$)u1;LCw6(0Fp}Uk)=@&#QX{i}|FTC?n<|}P^ z-dF|Y03*3~;G6b;_5u)~29s3s8*NR}dR2ALs_H6gLs`H#f0of2@XKhACG<|1S~Q3>S2CO{?LjAWlzl5zX`2}hcjca2eLX*OHxav-s<}H_e{FOwkBk31%aYkf9wFe$M_p;Q{W zxVv>-i<^yI&~zD9CF1nj)xo*{F}Yx0v!3{{1j^!TV1b)H)k(R9&g8C9G?WHX>?TUP zP_G|T!FWEjoG*c-REYATdP@xU-mC%|zJ_%^x2BO~tKaPaHEQ#&bzz!+>I-L(lnKV? zb{+j61>!{qO-;t7Uz#WI?p-kAsWWIb^fPM`tK5xGTs50E){2Y`DGAe`D4$brIhgMF zb8SX!`l%GB2*_7-yQ=pwXjqGdoD%|U4BaiJM_`b*d}7SQxJFW2<5qf0NYTrS@R4QPH z8?y>o@n4kYt8(-%GhtJzaS%A^D7KPzafHnO`Ugl?8&nz_tZOHhL{^j6P@dxEU&Ev1?_1BM*qUcs3%TdntZP>6LEKkNeQmIgVj*?fC`aZgXPp0YB_FX8X z*`cOgm!9ame#WInGhKCyq|@RT&ok-dGT3~X1JzgA1b-8g0L?OCt|nfox>3;8P54q- zbTG9aT!nhj@mR~NRaZTAdtCnh9LY#lhVxgwkDlk;VK*4b>MOTLT(^PEyYv0Ig|-PM zMAVC^2kIEd&IT4FlSIGijYB$8p15gh!s}^lo_Jh>y2+#sQPMrhZBv$0Mxy>I>iMwM!vG~f2!ph)=rCV^H zZs@CMP|?K?X8H9r+fTf60?_N=(ZJlzpyhtgQuIA5f6Rl)a&{rFj>q8AgHfA$9d9D+ zgA$A#?RNp1b}?VTsn(Lf9hY>iw3YyJTAG%}aBb_?+bY8TGUVqpZ@3m|WJ_&aR-*pw zuvnkqY%?{wVW(aOWR|NRCmhlWdS9H;jHX~@o$xoD{N9|#QDt0UwoxnQ-(3L0yaRMz z^Uau5iOo#enxOl@c;wBI(ja=X+43aH5K~D6GVx~&edua+F>g#{_|(L)QuWK-;gSn> zhem>_#XIRzkocE4N2v55!IWhBdgw9%+B^H7A&JmW>Ee)zo$%X%%~*!4Q2$&~P+r|Bk`%yLeC4Ktyo?~4`v)l>DM zuca@cWkA<5f~2)JU(!%X@O=d)?_kde54BS?*k(=AYf%jHi&6LRx4XMB9JSo+cB_SN zWutRod2YQFr+eWmOUp>E`HXa6qIBUt#6}aDLUbutM|F7vBkWz->JWK_G>S>ljPjoL zFyL&8AR|d@&7|bi9ea79*KLFcixi6G&irX1q@!p;LkaJn9EzWU2I2M39t2$Xs)$F- zRQOYxc-;0Yk2p{%l&|2Q*6P0{2(`0x7%-fSQ&sKUh8Gcs)YS;VH$?QV@5j_;3+wNg zi|23W`jzupz7Ft_7b}4~Xw6I9p61qL-AcFw$pS)?RZ}EMGr{ z-@Jx6w0~Cqm(ixuZd&G{|Ngk;l=u!JPu$ZgaZGb70p9gb~d8&h2rg?G7vJ+3PG>ST|bW{~V z{W7n#!Xz1Neu0q>sx$)?pYi@Kw(3(+CVlXCWnrV){1zBQ<8ni^o*LPW@0iF2%TQ>} zw{O%D^%YG}1b^iIjX(iAmCjfBK(Dr1)psmv1d|4RZFvx*3bP(52Tg4XfRo?ldfK!c z66kNIXZ09Z3_rMX^dTBxHVll$B1e%abq@qN1otEIn_^Dg#nz>KXnD`90v3}ifnh!yqeKCsiXF`O?#neja#$-%UOld-cXQh*OI!azgxx(_>nLNmv;>Qmg?c z)x_y^Ycb-tJq%2$?xp$a&@u&`d zCxg*oF$!Ir8)&xJg^m&2Mq(Sa?FJXAXtdxD>9Y6L6m)MIpm!uet z1u0P=pWrn#qq_AHf@Tq$NKy_B)E;JC_+)*6iZUKAR7*_4;c!qu>nftIuus5lWtk^2 zu^@5i6y{)Aqp?&w#tfofBkgWHQJH5pUn@M6PoFfLBu|cE);~}u3lUFhRLKZX*vZfaMaEfs6QJG zg;jg_Ma4>(vZ1D2r%Kj0ac6QC8W6>fvNs^24es+tqes)&ddUNu?>J?47vy|QvdxEc z7v$2>K&@Vy;K(wOQ^$n0I*$3q*)(@eK=gGb7bQh&UW>5`z61&Ec z-S!rqxjf92T7VK+(T_s^Qnj{amaB+Z<~;ZM*o@gcwTdp9#2gjKSY?0t;rbPI&nlx0 zaK@at`cYR>^!meb7So+N z^?tcxs!!>ZL~)*_Jd2W6ql-5yNcohrE@X30l#ApHo0{ii`c({OgHwRgUK8foemAQXOa+H6*6!FO1Lr zSBAaIX9mWZ(|uA)O^Qb0`)#dK?km)E2FN(;$(OS}PO57`HyD`Y+#{fEcvQR=cdNcD zNJVI^4twS1a-s>J>y8?Dy_H_gG}^ji&Rx0E_nfGHY^Raln_ocejwP3hUx!b%3s@$x zzAmkA*ez(*JEfOTO=>iouBBz}oGJ9>n=!F~A=eDi1>4CO^l;TFQHvjYN>VEtEP#H$ z)b}h@lteYohduV3TV4qE<|LJR@ zc50&G(rBCp^spfZ+DphVyR{ZK&`BJI%~U_oF;lGJLcq*1FJ_;na>ljUo|Y+}1<-)p z=KCuOoo|>uGt3j2yvgC`4u(bPZoQf)6F0SYF1MvR1fV500#y)T-;S9M9Oq=+KXQ%B znAflXiW>@}Qph=eDH)FuYo5ili|C>e?E>oTFrrKX5OxL_bVld1Q!Q^oI>S3j&WGq3 zCP{nhyPA%_VVM!touiF2vL%?EQtyQ373PwL^9Yqs4kPHApBiSA;czPJ z=YU*4Ye3UC5w}t4IFl+4T_4)EKYm0=csM+bR83+rOs)wq%DoeK5gvWfp_}r~kR(zkxpj#bku5%}< zgz9Pl_q0!}*b1+pFDGNKGO(jmfbp=>ZxQ_6t#}|zh$={@mN#UVBDRnXjgIJ9GC5g%!Lb`czeBOlV}Pm3r(SG%`*@2jAw&NozpB|rVvk`w`Xl=4I=cB= zj9HO@D@~$cGbzJi`lF_D^!}=85O~q?Cbz@uN{hol&>6Q?$;SmtnB7PJ*N&62a`l%- zEwh$Xvq@Cc_J>Pzt*^%?dw=Zg5T)@&dW&&%Bh*pTQ`QP#fv&VzVy=Kq;v3zUg!d9~ zt|v!FVCa$0HxErUvz;&&>RelFWh%YR8WZh>*y_qK^X zHreb(%jr{!x3_}X4VEf?q=Dbq5q>l;g+4GrHZZQTT)WUVLR&tp920e|If=R?X&4_7 z4vnKakz8-HACHm9nA269>G8-Eo=m6P#Y)Nv@y<*fw_f;kSWwZvo5D1qS8Mud?W@|# zcVOYu<@(--SBT+@dUI6ZlpBNylQW#V_A+zm;-?Wna+W_dCWzxX)h}npwqV?QMJ{!>drI)(HNSwfRBZBDR65VbNiLLIH*(s=xvdo=!s!4Yx zfyL4T9mD-BJTq1I>sA zcyf&x<%*aW^AovZJ+?h)qaoa*Zi6&*nyAykZ_Nc%<^FMLnG(Xu_E~p4pT3Z~;>OCt z1aJ0=n@WbSmI{vFXk~J&3Jv?;gQ&MT_DW zvf|@^Xd_SphQn%@d*?Q)Kjrtn`EdY~Ck1XUK+_{dl}`$As9og#Y2j}WTLBD^I;wO+ z{5Cs2qHyLQ#)(F(^-`N6H6tPY z-5?7He;ystEwPb8lm$k^A5juY%;`dG<4y1aJR>L52^{!(zfv%j>#TNj_aoD$8M~lK z#C)|;N!S=We&x{P@8k8}(^2orq5m9-xv)wf^*w-$7pQrg;@;2%2X98gUOlll204Pi zKvV;qfTf8ZuIm`AH!QK&6u!WPoD(ytb`^cSnP$c)xz)p8C_Qvwwwhsoo3uaw@E4L1 z2(m{8z}M%I0ib^)kq`%%e}W8C@^|_Ff-?SvD7*k*`w)2;Z2mFOAGg(T0ER5&7d6TL z7ZLaj7_evj8}@(5_^r7RU%jyj4a(nW&p$wlh&+G+FBk|R{+jon62xBu^!1B0PfmvM z|BJ9chyK55{mBV{T>ej5f9nqK|0&_$mj3@~TLWq4<=2cY6NDlN;@>xLZ1x9e*lZa2 z!f`olk~Kaifc!lS0J;bYwLKCA=$|-3>uiG>_uLeEbK7PZyZ3xf1O_cZ48xgFDW!!u4-jcgu9`3-=jR<_G&p+8GkBe849~cKqFl%=(-{< zG6&+)8HnCf`NBB`)L*>B03aBY<1L5sx1ziQl|}|;mae?`Z9D*`I%gnX zw+Rh0DiQnuGB*29+~iMZWR?8B^1>$!3lUNe6yU5d_?Xg$YiE%GVdNK}_27H$h5((5b2H@H8sjsEwRtZIrrKgfu;r>Y)zEv@j z_OexRz4}}Q3jig)Cag0|_s0VMFS$e$b~b)wW5 zaeo>8Cl(c-8X&n`e_ZGPdjA48z<>qLAhyo`a5BH&de{E+$!IRy|8>c!yMO^xci~2M zena^G;nW7Sn3g=YHsQ4rHxQ96y*>a$#?_WOk@UEBEfSU~T-0YK-xorx?EmF9E> z_`eCocSY>n#CNT|B6p1Qh0q|>f>$GpqnsT=vOk-&k1UZ1M$!kMnJShfH9a;UoNsz3 zFDG6shvXwXsqoslqyT4hP{~zm{W8kGR837aT4N0Y&IEPPaxsIayXU#xPNp`7u$P?m zp0We_1z;$*PZL{btfCM0pS>jS(Cz^`i4NHRSkBlv5(E2(n5rQFZD6WJIBeq%Bs0HM zMPE*USPqP(Ep3mv(%8j=*H;KEt=bGubcj~zE)-LmJ|cggDRFCx;|1!)i){r&}pNKQLfGKd@X__9qi^8+kkZ})%B81NCQ;UBv20OZD2&2hP0dX{!PJ#R)i0G%5U73ESn&P@~v)OW(U+}5xz zUl8zySO`~9r=?h{nBK1Nchb8A<}^oh6_Kf`WX0cXjjAyG$)IAQgcDh8$(d08z zXB`XYa!TAT4?Okv{ToE5Nlx^J<8Ll64Bz6cw>mDbgce1MsM#GkCBQRW(>Sl^>ujcP z5X55o%=O=1+sc<6dF~^$ay6C|l~;+WlkMZX0}+O6wfb3M-t+MJ!5zsUti16!pWKLS ze`8=5@8A~L32&i|tQl{XMCH%h)+#2u%xzSS-GSDJVDWEaF&&N}a1u^~LJfm;%Bz%1^_KC5wW}SHIK(ecS|oSN4_Y0m zyX@=khZhlgXR8{Q%P@`yyqD-W*II<09b3*kQdV1wC8u#&=qnUjMLHj&r#hzqJ$U&b zE^vq(%QtBR&!$MGVB39qpWQXvUtdjKK|JJ-?SwizWLkeE7qZ zhL-cH4x819ch&jLSf$D)syS$xrp*P`x;M$cPdB2K)bOT7F#q|JIEm!5lFJ?ET2mD0 zIC^`U$dTm_>z6u&fnM}w0vNP0g}feabkiK+I`EH!wkDmD5^ANQPz^lsE<3|&ojXm+ zTiT396LQ>Guhri$p8V|;^Jc>qMYxP-3hNY#6{cUlF^%UHGdAz!ld5BdKVRq;&^aGR zIp&!k;mQ@tey%WT|A(W)M`Qtbx=mr>fKq<#LipnlG;(s5=cWoCiMOlV_w1R^N`~2Z z@kf@Y#LT{&dgo!6zVNx4P6xQkHyM5Kj^aM)T;Rj~8SP|nhYgYX!*7wUryVnny7RTp zWt?trYH~TkAP+Bh2c+tkW;i_^myZHA{_xFb&qp<<_sMk<`sJz=-=;nQYvMkYe`!y? zK4up5z-AbUu$FCbkbm%)>A&2RxO>!Jg1zmuMJhu!+p||*+XMGT;B<=%E$0!xI-9Q& zDsSB^M-=kUYui|a*g1Yx9*B8+u919x;8;S9u`^mzGawx`QwyltYFB^>@6YA$HKE^; zp@|y3?|7Jt8T09y3d6nf=X^S&-4WL}@ZAwbGF1b3-)R*gxAP0z^2DedZhLQnqmrAx z!i)g17G|zI<1L5F`IsNWf+xr%-5pLEn(ofAC?VOfHo?)aUwDT@-)5AkQR+b*3mVhp z+FF6<%Cu-4)jTCs>2sqgIxuG}PjSNU)6{W~_Rux0V%%;{QZ}2|V4t3un(oRI()0zS z6?5_bxg-#!1}qech(+2ZNhgYTlB(5pp+OUPINk0eL)qv=A=a6#%u5*>Zn^Xi2O=N2 zZ?4NQJ1c9K42M9T=A%RNh83(%VKrJ{?fP4j9wJA?ct#Z7o}%#BV{Y>gDZcLBzqlaS zXDrx~400i8(gY&le2Z1Yb=nqhSUXgzS4S->1hG#sACF^baADm>RJ+ME2n)D;NT~3q z8Z_KXEu91OOFFw4ZaWAFoITl~a8@>4-TI9A1;_wyqTODmNj&bo!TTzw1I~xD;kyU@ z0(;%%9?NHfaBMazKw|(qGZ;1`>Wz?P-UmGvGz}HO~&vo;}XEi>bEZ#(= zwbT!eyGW&DbH?K9_PM2J&wA&v?8vnOy2)`4&JIg3SUe{H`bXZDsW(kDl{xhjx|1dp zeC}3?W^weuU^%7aDWS%C+}a;c-RxW&{G~gy9H8S9A4O&qu_+>;b7%1wyQdAmK0s7O zzGta&*$OJ;6}~pe@^qlRN&=M;!A%&j70QZup|-9X_1v$`O-Ki z-0_9{{w5ZPt9jG!*h&d#2G`fm=&u zLv`0@bF%x8DifiZo#2NY>gI!l%x;2Xi5yP_8@`>}{p4ed>7BIYv^(Bse`V>Dnn5ue z=OI&k=@_O%669F(C1x;BKt|&4g|D~5d(l@ZCPkrWC}2Pn>~?q8JjtXG($rFyn@4tS zP6|LH37gl0_{{CM8b@5O&nOz$o(FAFetvfN*Q+fGQ3O+9Fd+mXAz(K(=&|Fgt}hA- zC<=nH*>*sDxp%7qz);?it5^zx7OSmyeFG5QsjiiT zLZe+-_q>RK-gut3*iwx}Twy8m0qw85ii1izPDgcG`xhds)DB$U{%9E<7r?>OJ$+%S zs4eBhLB5<-)1JEzgN!!n^2v5;2&$%fI`}abP_Jg=me_jL6ekW2){20WTd&s)G5b3| z3goS1Kddl6&~F{<_w`0?q*(F@B3l^s7hkbd6@3RjTrvdZx|=c7k7pXogfhb3uNH5G zF|`Up3$#AJxmDJ+JzX~5(i3PU(EUn-LZ|RO>UzWu8piU=@oShk2J+VBPOzyv^I_MK8I5}ZE7f}!b%oct!6(s&U;J+`cJWzbrMmZm5)m8F|K;XxQJn$HB z*?V6?xQxyXjlmkRi$NDDZProBGoAiZqx!{_khHP1ZPV;zkK-Qh+1h$@*F?q(jPws3 zmuqarW}Xgn4LUcpL+x5iW%%{hSTWDLq(!Zt)@t_X9N71CJ%UL~q>EPp!5+1R1Pai) zRe9`o_xT*xe61>7(3CH)W}1(>r#~b2IF-u8a(nx8d2syq)C!iWwDz$D4G*9cgUSy7 zm#2oQXdchZqX4OVC2Drl*;p5p{)mbW&IlK};!y!{G?oP?6p43<#gX<1k>ZT(+Nkf?u{bb_c^Dmy*>_ z=i3_wotv6G&I|88y+<=gYMA zsSMr)=whHA3lN?qPaVkjo}&VJNjuxRlZ;xaROF$#5V>}yv)Ihkfv}E1cKdya;rZY! zBXI0pYIJ>c|4MNBA>(YP-HwNRjAGN()pj(}iM4U}h}5*SgESV8JepQluNlgcHm+t3 zskbz?6hYnfGfz7YRJm!p`sXx`>(4i#orE#&D0XMeqG`hpuA6j~SU(86`unvWm=ZhI z4SrWz=VI>|<@ zCZVH(w+hrs6&a!H%{00xx5o=tAoS!YOrF4~AQ59g7I1iBYBbaPR(E)^S+tTWqM@O$ z7VbKgi8S|!M;r8^0g_h{imU zY7epE{zHk$G`f#*?A%{HQPuuE5YT18Ju)=)sIr-BA6uXTbOWWH8GUL`O3wifIQobUlmpI=)EYK|3OW=zF zZF)Wai~+FN0Y}*?C%qWr2{4pO;3m2Ag~1RfwpRI5$SvP~ngIF3UI#fxx!c&@kfJpk zL-0_WS<07zv5W93WI+j&bGf*D)W}ZwZM|r7TtP0adJaix?h=~8Q}B(AFwtkUf$(?n zKJ(|pAr7od(R;hQ)mI(JcFY^Gd8LQ1oA2mpX+<>9J;9{D#A&AD80hVr&FF99%F@o~ z!XIdXRvb&T)YhxC@)0BNq)$$cItg(FMUQ3ZGrfTj-zvBGR~mQnM}8Yo@Qo2WNygUS zbU8U!GrGP<+dkM3nrs!PO@=16W~8CK82aY#jAL_pxG61_Qkx|)!bNi`N^ck(KNK5J zGKRIn#VOfWQ2WeeEtO7bjYJ;K_;iga{Pq=SzR-F!&Ou757UB-{Pctag1nyd`>rbtA zaSd-#iFpSKF_)_*WUr=XrCn-lWqo5I{%Gvpq(;N<8w4R7rKX1u0~dWTBf%5jLiK5p z21vKd`{cIz_L>SmliU5W3$L|oKafbxLEOs9E*CxhC3;jH_}~?T&_qUe66r77D?##F z?<{sYskcd_m_L~~VyEGTW4!XCe2=+pxFfg8QgWP1(u@GiB*5#?k4T#2DD52JQuPM4 z;8CkTJXVT|Bp}0SFEGjo?FjbgEC5zri2;m=JwGC=R8E*Y!8?LXQDThG?|a{XJ{Oe4 zzvB`nH%C$#<`_CKAX;~8F5B_mTUo0k1Fh~kp50+zD(i-DVZ5LJac>RPEZcg93>}bB z{70;mwFahBEM%=Qq5VoN54K?Q*+C`}u^;&@GjXciwO`#w56KsS}pF*@n`uL zY$jPjBhI8YpE@}|aPa%(d$ZxB{^uq0pWI~buTyWcF^~s?@=t0Cc=qmYk>h=1MtNNq zMcx4N0|yrj`sGW2uX<^`2fSAv&~iMMU%HxAuZY6uO~Of5F@YcL52u<`eddS#3lDzd zhrRbZ2gO2|9EC7*D(w?rhO_4(V6V@m)`*3mKo7?tUDTf<#TjG}MM80SwHx+jKDx*quR65lZ3p>bF)`I0gB8a16R+0$k1w}FnvP_H$ZV`78SaK!(7-s7IC>E_u@Tg`D>=6AzJ)gh= z4zB0ED-@(6+siM5CPNw{Je9aycMB=kqXBu>Cw+O>w>}FqtpX{ZhMyq7rtVT+iP+*v zuN#~3+SuNXF7=oOr}HHsnm1O-NsQyTj91&4+HS6tuTKJquUB|Hrx-F?`EK}q;AVpn z_XiO)ca9_ue1&)>>R2LJ)MG?dcAhS533hhr5|lmeV@Z~6IWS<9hliDL;&x%aBL z7b3kb5!1`Q#m)P#e7d+(?j%u4fn* zn{P98ev}h^-p+Nsw`EC-;E|X%bBiX>|CZnQK=AyCqGShE4kv_U~&>qDyeT2Xx(DgNo zF^cpKNl;?lJ0T;#Hdf;L{C?>mrGYye>$Ju9QPVZ7SySnuuPk|5W1NdWwEYEeMDrG0 z^?7BS@$eSQc-x#Mw!~wQ2>H<~^PP*{Gm6XY?UTw;XPmIqTpT)_Przu(gnbO@R40A6 zVp^Z4;P85va(WJOVEB}VZ~tWAc>DLQnV9D5qrB=krS@7=IaVqXIjE1XueMBFbS_9Q zEjBn@x2K^ft8|NvP!t|NYTl~IP#PVkZmxGq&Zay`B=bhDVO>tA8({gv3iHDb!VB=^ zj!!?(C8K#T1pYr|sSt4_jeS|p_7zcUOH#cK$+Fy~QXw}PMyK52r z^nE_%lFk&q8qLrt)SR7Pqr-(w^I2~JSs@=;nhdMyhtyN$yF9qzIay7Ma`B^y7Oaw) zI|by^lcTpRYEN_7gY0Ckjdb$s{)i4a!?CUXZAs4&wa%C-vP1fPija-L^}+7`nOt%X z1_>!`h>ISp9Uo#ldU~*!7+Y#UV}4NM8A(f`0=Arh`~kgJC5CDrnD^m(`dxO ziB@|)TH4}dJ2gjbX~0&H8VOlea7l|MPDkN@)u`NddQya(wy3+!-F0SashNa|=kJ?@;nU0g^Tl;h55+?6vu!V(3O7G6oTNthpmpeXGte=Bick;ioOF zIRTK=*!LZ&$5cb(!&`$#u7@6b(*5#QM()iAUB(n;d+Q!3C`kMfQmyjV;;a}Vp46(s z-4?jR{X9iN{mgmsmOt7Ua8_-3!^)QN4@OiDnKKct%!^Nd7|wUf9a+wmqwaNt;@$IjhyK?ICZh3!V-_Ac<4ch--|vSdtwO?ZC_p3MX*&wc zkL>vCX*E3(xV7jrp62}PFI{aYVW8%oZz0OI9HqWL)3y_eF#mvrhEt+aAb9;X`XiIM z9v~$ihkF^}1-;uqNukAV-qU4&9C1YHSNkOXJm3A6<7cU?qG*KQ`KD2)DdpsP-XjN- zjf6Ym<7dyA6-#F@G&*F)r&KmglQ*@(fR~ekmzZD9R+XvESi#A2KU8DKRbhdSiW;rO z`>w6;aMdC`-Og<7BO3m-BE_X#XBg==@@ab*@X-+{F^C944(Y0=m@&`sgJa8-M=~jES~x(y670HthqODn=Eygy+z`XZ7P`XP^0ow}ja%k>yXH zrF=wWnu7aQ>`OkT81ZpFyizi5tS%k!>wI!{akYNEE0TCyrTQ?C&%DAuHIdTy;WBi> z;F559aI`y2PF~I!zF~#6(Hd`Md1WB#D9i|@8+lcOCu zr#LMb0x~Gm4?<7%rwU^Fvv}PGNP%~_na|Ih#EI{v0=IjvuCEGe6rJA_K#4qHFVtzZ zgl&9SDW!jDG2lvR^!xmF6i}J*t;Fc6*uK_cFyzy4f}*2fj?rS1ap;C7QZSEoh|W^| zr`%wCv(4+G>s92pJfCMbf#!P-NIjrYnw(354};oezWL^A#cq?O)|JjTE=X4yB`QWU z@&0sEXM|Kie7~+Zbb%*W>GHiBg@6e}2exJG!IL6iYc6S{Q4iJ(#}yk+2lHX}Hj(x_ z!@0zfzdqNh9lR81?arPl9yUv!_s+RZre=^aP;2DrSMq*cWMY^pzOiqRQYhKsaXSY? zy*Rum)=HSj4Ll?H%)$b1_8@z_e%yvF}ScGv>Fcz(z#mP>uH%}Ry z&TRrx*Fr74B$*b+44Y>>N}s_QKFwts4N*Q5esT9WiQb7#iYj8{m7`H-JUB{&ZQ*|y9@VO^)@_IoLWDd{rlQ;bGwB;B_gM2h~h@hW=Hbx_T-Pii|S;>F|Cj795 zkYB{*tqA=9Z!VjR(ofhwCNMDYas#m+I3kfGOl3Y+a(so}cPu@Gvc#$AM|XBM*^OI> zSUQ7Sgayb`A>+jsoiCW~6}R43TvL+|5ag5}i5F_!fNO5_fs!FZdtkSdk3=Zo`~*EJ z1SJgK>NOZm7YRvxu(w>^|8p%{DFcvk<+ybPa@*@sgFebI^KsWkR&kq7KK|hmlB$Er zFgI|j6YzExc584y$}4`w_77KeR!&&NSF=84xo@HbR2vO=0I+`a*K+`TzK0 zuYQRE@%b$wcqxU)U5sEI@uQys^w-q!#S4Jd6+tya!Vv|@>i4g`VOmgS{%ipN4AFH8R!b8XuH%Fz;|3>u|O5mL5v8)j@tk{wGy{FzxI(w2{_qvSH z{QQglDFHW#p4$*~S60?c2osILx3rO6GqNN_$>TW*@|tB19bOy=JNER^8&t(`|7bh(%%8gykt|Gc3iSvPa@VTGI_0d{RTl{I*mZCsgQ-rs_Rg0fu$=f)93 zQlZuCGv$m_?mrWnpsX&0cs}4qE}rK$asPfOR=a;KWxv-IZ@Ri9$5Y!YxiOtdtrxWe znx;IVfq!HJD%+Y&N>n>lX0y7a^V<&t3fDJUE$6@<=JtFayo%$q#oF2JTd|8h*gYV= zn*o2)YI9dR=3Fs7>L&uk8b3y6k@+!)Yn{icKqivr>oWmM?#tAV6~}1wTeF7b2WCiI zwoC3L#pgxGkTo7(f<9IVx~Uiu-u(c@$cszBd2jQnMsZcKgGQek@Pm}vAAysc@!SEf zF~i{i$uujK)S8!!kMTqN+ck%2^R*#qINbj70Ru%_E{_gDP0A>cUauxU5=RpX9yW+D z9CeXs)6~_%G5(1hCfI?$f$B#sPaZ&`^aCIta-Pyxw6|L?QcyAsH~%r86b5$Njp>Od z67joFHH;y$qWWtP?=ewA0)0$nGLt^zSoWZ;)gG?N$ScpU`Q6S$Kw_ki5wSuMRIg6a ztk+d@I^zZTe%d?D6%M&6m*HY4YvZmoKP@#gWjo}semhK;!%8BHiGxy7O6=?S3towg zhRimt7wrM%g`ne*^Z6Fq&m?E? z7jzX0p)1Z(0fMKN$ePB?@MY{;Xahv)VzTMaYo3q90`V?pJZsTlz@M7pDg#DQ^SSQG z%(Xg#m1`NCK9wO04urfSx6W=}W_aYVow+NSfxWPD1Y&bq_-&R!Y3iue>Gj8nD7NXx zdB!`M&9|77y5Af=QFJ`Bb;DDv%rEx@OCb&wzp1OYUOIpDiBfOtmP%5W7|^2*sOHyM z#>i{ZNtIz#nYvN`Hcg4i<9uE@bx21;I=;R}r8hJ_n7`JZZs-;aX6&ypkkOjz#y$*; zFzJR^hDgs7xxTX{1(!{@za5oh7YxRny|Q^ya#W%e#d7!JxB9gpK7jC-yhvul~sYdHJ#|TJ8WViQY1I*qC&v)c?6cze%=}!x-+EW74v24Nl zI%{bs7d7*GU$-uqP^KB@CS(q33b!hBwIJH5P@+%Zdl~VI#Rw0_OKx-y@v}-Vmsre{ zPWBnhB8z3}rDLff?`muXRm5mZUOPOVVx%;&jX62`VuS0h&B-dZLrFqNP$nOZ4(|I~ zwc^%`_Lx9sUW6cLeWgr#0=we^6k!r50>h|p_^}r@2%E(O7OOV2X6w&ZU;MuDT#!mr z#2|~sv{xA7A?M6b<{6O=*m7DwqA;_u^-HtKP=qD(G@XD5UrA#eJM#D0Pt2RfW%AWJ z{KsM#;lCNwI$c+%m3y5>}^<*^OOh_rj(%#$cjryEU5UKfh8h^d1CmN3a81wt~ z=OafY|M6{exVD*aaC9dK|4YAs<1)_~bC!t;tugviJ<}akJMA}EPBD+`H1s;6?$1g$ z`UGn!FOWgP-!UDAzNE`WJ%_i>X4jq|rC1M`)Jh%-P0$}5A?!!nDD3k}s1#1-S<2WS zb+_D2ziD~|TDV_xH%EcNSC{xeLUX6x~S4~KB-?Xss6ItEO zd)1+iRjG(9_Dbv~RP3uWe&qkcu(Q2E*t(;`=YNF6yxAk?XBF>bL^QKy&13s4NH3BV ze@O`UXFV^|0U7eP-ONU{MJ;4*mKczEoAI9XS8$#p#pOm8)uOcAPnprHGjr&WC|9!~~s6qh}d+V9m693%&|8Xy?_%qc=5nTxJ zCu#qzctire&CFW3kMxVP{C%URfC|WS7KacW0{thI_znn*=v|jL96Uuc=r5D`{iBLP z?|giV34&dI5&Q4o?F9dspZ@=Cno6bplU;)$bvY*gVw4)bm$NVRH=UDX5CFSv)g@JT zw)ZV;!jb>=93mYl;6b+csmi}kKNt1L+WN9i=cEwxR|a;XL29pR!{mJ7czV~xcY=)` zqtwLll#;py`s;J=Ku4ee4@!gX{lOOFUYAsCjlu4+cGNSk;$L!`??4Yf0VUB6v;qNv zmhu5o)TXj^{AsH+a09)A{m@J~;=dB>-7Lww3-t-GK?XAYnTS`_E0e9LaAov^P+AY6 z_+{kGawI?sbOafZw=?-?>W*ZEqFk+B`Qpw9w8o!eH{|daQDxE~Azpzd;b~*_HM6?d zmyC|tmoyobAtEvnAr$Zqjmc!S`Y2G4jpTpN2JZZqdQ^S|Ccuvb6qfHmt^FV~z?nJc z>q<=l`dD~ zKkvPRR7eH<6V)&P>3`UOHlW=DYh_B7u*few`CTD1H-8!kD?{wB``6z&-SQEj<}0vF z?9l&1%~44Kg6~br0{tK4%mW}Q@W%#)lb?ST*>9#)$O`x;#TYE{FHHZ#J}e*s_Q4_$ z7XIJLgBO53yjHT-24q10gB*vSHH{Vw6FZdu!8;0RfJufh2tfT0aw-7_?Xc%ZWpi@= z2k!u7D@1ICR1EQ7vp>I0*=q$6pmi1jm^l9|qW!@~?+|2w%lbc2{+}rS->owBB)@=p zX_8<%Jt-|&vj^i>L*h*%T-RRR)PdT?u!09x6bEQ9MXyR)T$La19naczb#3MVnPys9 zSKGhLs8pacYv7CQIxqZXiWV_Of!f|`Au1@~rvf1CPuV6w!P&oh`{sbKv9(0zPHO*R8)W{xpFh7xMMJwJ&49kVDk_v^A#J4M=)}%Macfin`{^`*gJzY% zj*!Wm`Q8V2b}r0@rKZvO&GzFt0{=5&dLNSFhx$rOOCN4+ZVEquJ;Y|D~Z*T4@8LEZ{{L2R@-~g#`+TB{^x29qb4Ug*& z>%YepeL=)kz|o)4lLVN*E@mCG1rei_eio1f#;>a`fd5SKQkC3xzr3^&a_ZCpfkZfd z@~+f5tHQ}a-B6O6C18v^18U0$RC*PCQ30!xe+a`14lz7yCC(DT= zDqHlAT$Qud<-s0&RN9omHGDKxS+K(S*WAN@ zt`z!xEqBTVthDtzdak$>#nMf2 zN>Jk$7p}boO6OU5a#5DF3YZ$hvbFLrllk3K7b5@EW#n!@;eTn{PZi)D1-ST3gT}4$ zUk3gi*dR*^h*h$r0Z?JTlK0z3ypsX3lW)|jU*mrTUFo00O2Z;!Lj8|O#sr9DzR4Tm z{||d_8B}N2Y>OsHaJS%Y!QCymI|O%kcL*Lr(1itecXxMpclU+6oRz)zIrZi{@4s7h z>;Aa^RzdObte!n*caI)(bj!cJP#O{Fv1y+vSW*8r-hYKp%ReasTMzzUtd9R3khuT2 z5;v2KIoaQC`d^+t3;)NVLwL^rEz-LL{5d=flO`qp&3=DKBeU>ss~G?CLdOuG#~$}G zX2txQ{aF539{aqJ=HFfj=Felp48D^7oBd4xSpNU@1>MwUY3S1t`cB2k8RYHlebgO% z9T)3}B4HW*J+T0*kM(EX=r4F~-xmpl`rKnX{FzE7E^baG?N!O)v9Yoz+(WC{-pLJt z@7<&zJX#4hjo)Y5@}9oPP(Z*B79KwT*C;%<8+&`MwZuPB<`4c#FoHXoD!h&6vS2y= z+VY^ONhB^nk9an_z~&JlA`<3gQ{EeN*;WTfF2{v3+INo|uG`e$kPwZ!t%T3@=1XD@ z_)Lzisz4p3y*1ApH6KE^*D-PvA@09y9w!O%4Q3Q#@V|cg--qBL!$%Ou2)LMYK%|ca zp__V3#>L64u-)Y3I;FQGXZzqqceYjosIIC01^5de|KJb%r)vA!7>x}fm|2eUBPy!I zO18ZEF25iz*86X$V^a#Wp!Vc9r-i3KVs-{+dH}x9XJ(FWP6a3n5e0{bAvYZi{6srp z8VdG4$MaVikU58 zDD#0xI_Jx;)qS3;e7uDds^Ep9*YheBx{Q0frZfZLAcl0d%?gLIkgso*NAh)u^5PZo2^VKKRKS3azqr> z_RA|rOctadM=%?W&zPT|KN&+BYJNK`KrJ9pv1s#!JJN(NML0By#LUc0v&9rr$B;6( zKg+>d`FO_cL)bewlDvGg`(*&myNi{&qT#m2PHBj{3HHx<;f?k{i5G&Pkf50*r_1BD zZ*5QVUubDrXZ19V2Pn)|t(6%kEJ8)H!dCl;-UGr)# z&CEv<{8YS_Yb_>#ns8E5a=GBot}~#y)kTGsFTj%G&wl?*R;&|1=L$Pdt?EiuiF-HN zrd|{!A+E&}_&c#4p`Qyl2PTQR5Jd>UE=BD8oIn#*UMzWLGKJyMA&}$fgS>l$u)aPr-{Yt>Z_#v}G)3kbOt+m$+?$o=XyBiCiFQb1hHkb5YiPN7*v`_0yK1=e+to~lpW zvqvS7>F(eOH7QNtw7aVN)viUUlHbyq#EIHjk$6d!%X44Y-=+;v*s$CsIVm5e#jS3;D1UdA1Vo<&K=#BshjeZwO{xQLnrn)4BY=L!Pv zGF$au(pX3HT0kiPslFUT9Z$B*rxvIBCh%3#ndz&rY*V>u^-5x3tdj`oX4V3ZiWWzX6nn{ zi%*s_hM8~liKlL!2~4^s_sqC?Nn*L2bIRAerUwYyRm;;vJujV>GKGTX@xsMXsa5oiASuBSZU+(3uVkE$SJOZv-S9DC^Ki?F|KiJZfKK|# zjj9Tji2|9n#8vGzNi|6{)NuvJD-YGE(rmdFuTK@Jn3ZbX^0f{nuPGi=xLO2D=>x164wJe&;0F`9&{vKIfia{!cYSaqZ<(`ftk_GASKr+;NJ z7#%a)BJYR8=Sc#G_5%@bQ99f=r2>NNjN3WC%E&JFu2g3#ThuBqB73bNd#5lSU?e$_ z??6CD?=5Ohl#E?t<|oEe|0)gHdQ6D6_M;rz6W?VQ;}JAKF{R#a#rpF*jlp8JC~mnx zhOg22yS28s#;H@L$q75F#k7jAc=FW43FXv5Mq2?}Mej~4VLP#h>sX+<%r6{1A#&hS zUC&E(-*vqWH>j2XpfX!8RV!M2`LW-1i)NdZK({iTpUTeQH6Xp67C=qu=qYL-_$G7dOvj=SN|S%}j$&UH&q@I2^X!#dE=|&n5B*G!5CV zZ@~PHxnb9hc6DVLnbIvarq-wPy)Drp?~J@~KQ(=C)$hMbe+utUyV^O~hxiHzFIKgPFMH(A~CRIrkj&c?UJP9PE z%kG@?J1CAMRyy=>Kiy~ChDdjtog?Wfx7^{+U886V#HD?qC_GUgz6j;gtFkv~+R{y7 zFE3!leBiygn3=89l4n=f_;%bv49TVzBE`9VbR?QHa2WK71U;GMz^^}1`WGBfmF6uo zxZ}-yu;#8JUg|s1S3#z&Z(RZPK|!27E+YRt#ZLj9CT-@=rvjcjLSQ2abj&C?5)K++ ziIT3Cny_V>ui{lWCd~9SZ|wQRP~%&P%u>--*=(}IsAAqA>hj~MD2^MwCF9=9TMS(9rQ^v-v=Z(X$~R4 zp$W3SrOBT8(GqLBE#5|z5lh?ky!2^`&;eZMLoz4Y=){P+&@WI2vs^K7}E$OcC4i29_UWcU?@bkU(UZ1*O z60LaGun4gGAtQvPrs4re;*WATqgpTbS7eW406IJkGuxsaNx77%5gc3#a>jMKUww2R z6Od7-1@Zg5g(+SVx`)sPR2*M774oQwHPMn8e)g=|Nej^!dCPi}-xxT7UsoR9L)LmN zunSjn-l5GPUlVnM`*nN>Ux0;$RdvN`i~7V>G|GvyF*99b;l0M`OL5LRBp#4dD`O9B)z>FM#G&ECTgoAQE3~!osKBO|<70%}x=R3f;2qcaLELtF+E7 zQmGufGxqQ>BQ--#1`6!)4RX7GU0ad;1NiMXYL=-d+yx@pAm^WBVa!Dnq+S{q-Papu zlwn+4Ud|MaICVqR*U;1aa1x^X@%pIRT1?*p{{u~&Zt(b|sm4swDkmX*ga^Cz?pUTd z82>4Zg}2HhF$!WTb#a)7>7`2(DH#b0B$NL{<%99;a!qu`gh(#iN@A#$50HqpMORLjb&EWi{`<9Ph;L6MWzh<&_qV=*qQ9%9Bf8xSYODrNHz((@8v~=< z%(j7N#q+j|Vk!muq}?rLi%cB)YQ!jKEiaFot;tN(HW=iR)D$PW+El$yJiho&eH@1` z-*Z?rK5@{Lf1sBILkj%hU69#$Dg_gY$3Yvz;L1wh=JVGT`l@XBx;uzjxXJ9k$aGz9 zKuTO(oZ*6$6f*I`Sc8mWA{Om~B9{X#wVmXV$72(@4)f`+*wGahlD|MBkn!9oei$2T^|a;466}0A<&`RT-R6-e+?MGWFVVSLtHOFbT(iIoB$I z#3)We>+$qALiY=Yyr#)IEe6!**WnwcVD(tKrMi>`p?Z}#9a2;@SvC~1jKV=_&XKRs zFq%98V1aW@c>)oOin$O|3DIFy`>PWXXSY7y-gLz^3o{!7jr>e{mB!ursRdtl)VU+~ zY{E~^nGTN)zC4??+T<EqCrkZoBjB6{($FW^uH_>L7W|1J~8poLWS*Z_6o*yoj{dZ5L+Nn2 zE-`P{QnqB2Q!U@0ISk7z$grQJMLj7rB*IX`ezQ1MG@5Kn3VYbeSdx?UE4+gt^)h=X z;+gvWm$Rq`-A17Qz&G4(b(rDyrz^m8b)u)NjHk#-Kkttr1)B9p#qK4Dw9a8(q`%nw zr{RCL7~8tq(b-2=Dys2MPd_eU8 zH3{?Z1FDC+=X8X%BhfNs%OY3CKHppHx|iQ`q>jwh$k3z#X*^88WAH=JOmVv|-*ZgU zQ`2Gx2XwfCD678^D5GtqbL8I&(UMTPjp*t07pCUUkD2aXY&0lqCJVqgYO&sO?~w(> z10;5sw=0Ao$gA1*V#(oV^GMjqzg6F;V-Rv%qd)Uba($Z}b}>ANQ7X?DHtDZowwd>a z{ekp@-A4AAuH#f!juJ!M4lx|4XWb*?j^_4r-K6f*jWcxbuZG=AT036o+`?0*7KxTN-v zSUC|c@M}f7U{3ANgnXB?;j?90gm*H8U%l>6b5l>PE%8=_}-b7){#uWthiCoU71Hn!p6%D5~o*oOhLM%bEg2bzt3CG5<3H`Pq zm#d7zhc`+kY0`~FCo$L4E2R$z&~aCSLJ$c>X%ZQ-Iu^?EiG|CR(XP$Xy?(zfHAXhn zNasV(>zenqa7pMmX85s}bF3B=KbaR!(q5g8s#|QVr=d^0M%YZprQNxxaP77m-em@7 z?E8o_SH+#k^Sz?Vb2lhh4wJ{);D|yKeL3}exl9?V{|y>Ol9k?yk$;MKxvN~`KGN^E zbV>~3#QbP>J(Fy4vtwD6Z;^K)q+y9nV3irRY&gv)25c`3P4~0HC-HyK~glbI1^LE(cFT-F4MX!wspb`s5&6Wlb(>s zfxPx(v~Wd-`&C;ec`%k%Rz7sS(XL~L;pTRqS&;6tl>6&)$S=b$m0st|npr>+B-?(O zgx&)Xx7O{Ret2{|v)+b>+6Hq;b=ObNdk~CDxr3i49`n~C3aPB^11k%% z>D~>=_EGq5fGvJhE_ZuEpZl=`iWX!Q6T%2Pisg?L9n65Uc|t`nv@=b1yQ=$@Zo;L= zS35dMd=u2Cm(c-t$Y-JST{hOKQDm{2j<;ET%Pfqzn?ybDQsGaiW+5gK*6 zygfhKY;|2DAyI^JG|&pgqu~AE8U__t;%>|W9%|2*eo+(RWNo5R)34tJ2vF0P3)y zi}Ylb+CSaEJcZ+jtviq4Q&8|+t$W{(VeQ>DDa`x)g}i5;quE1;AFBo`2R9>4TJmiU z$r8U))=%iJ`>M6bs;bjkzGV?_p<}E?&mE@C?e0u=y?z4TU^HbE6eJc?vetf-znM8) zoD#MS4U9dGE_=bbDsCzCCFF9f{Iv&lQ@(EVPPlZYy`Vc2WP^=t7s%J zphc9<>(QFKQpl`2CC()4{u&V#uhBKjLs9%3R_wjAxX-I0o3k?zStw~Gi7-`#m?L2@ z_T|EXww23?Le7T#n-aDpmU3|asi2}-Y7{=7%ywKgd+_itBa>x@mtIP7XaT)y(fu$q zafE#ar3_90x-tqA5{g>?megl4F|iUl=Dy3_$7{*{IW_54C^-83Ri-phbuDbydKcgb zjf0Kd16C-3sZaK01Ew0E{QvZJ1lP!-V|*naogB$@CG?fWA&?7U|MZ9>xlma$p1g- zpmz=k+2C6~a2A%42D<)5rx7e8|3C;;=W2fJ+>_~`P!Ng~@fX z1rDCI_yf!zZ3*xEGgKn??MWzJ^OODB8JrK1{m*^A!J|&z1Bbvy_ft z)&1w?%s*Y2G>T2_0=jJW>!-%DswLIy$~L48d7S!Z56eEh+wu^wj_CuY8aEleD1@ zi+1+(q&(f=%PBI+%3e{D_s=}JNK9r+t`FP&5N=uzxo)Ph%qf1J}!(>6H3T~b@Z$-J6$D@*rjML9wVdTHR z4Wx04K_ObxRF!JmyCpt16g=IM{&0`=W#WptJ72PH?C{u{oTRc`%BLyQe5-jR2RNa8 zkV(Hvk^+tW;cm`if9D1B)glF-7=b zA|t0`fgvjnPO`6@^lvCeu+#SsAF0DgFDw0?kn?ANJ9E3`9vF9`y_BqyurNuH)c4;E+KanQgT*CdcA4)Q&WSVzj7eNv9PZ0;c`I(GN%To8fNZmHnLk^cy}z3 z|HI=ejsBE_mz#+VC+qya=$KQ{uGU)e1BgH-bZP0fL9|hA9Op6j^lt;zo%&EFrnytg zY#rEFDrUK&;p4k!XYw6%53%$YQXN5`3=rmEy$Z%(4=d*2EZ(9rFs)(>fqGtR#!@B* zp)wETH|Ko6>L8ep+{$Sw3i?!VXxvJH7a`Vnicwcz^eLj_+(V8-MHCbiz~_-C zEj-L^%vTH9(##N|J-ub&$Rk2$owj?0=u)_UE=j%%2Yo*M z3G#new$=EPQp%E3X{s-@{2Kf|$BZ^>wIS2f^u@d+#*M`r63gwk3{pP?iqtlBv{z@@ zb_9N7AJx80c!cC)wtm@&V*~eoJ)VM0M+TY^2USIXl_B@M#r|60e)~S@e-`4{AA_vh zB+s3wkBl=|7xb_rMTD#^u*z8?*{burPKNVI8q23(+DF5PDBr<}+#JN(f<(&cG#U0hwoaRv zc#HM%X+9?;LhCm)VrptC6?Z;N7`Cwfg-MtHqkEhy;51dnMPn56?`9OJl`2RIB0hl{?wF9Cb7Oz2bxbH!J)a2h zKNK6I;y-Up5aIKL&rh&vnLYx9T5PnJp%1@(`~;6D%THUm*klwqd@y=^WB4WdcZ^Ud zJh?2XI3m#0>AN&V*tSzAK=yMis;v4!os6OHRMm)T?db#|!to7t!s|=xC;h?km5mHA9+yo$KYM9ksR57&u*HbMwp~ zlQI=4UxZr4iz+!3LH52$!%zbi_l=r?_J-l9lI}qnNzXgGThzm%}!&U#frEsN60jy+B5?a6RKh)O~a{~_lHL8T_sK) zFuYC}`I=m9$zSWolP3L3dC8dL6X6{K%338gLff6G>-R^vG+x)t(l39dkf0sYDfcIJ zrv%r*Sfe#2ggW>(BFK+wjOCwD#;sgX{#xjD-&Je)C{MngkE@4O_o_PL$5b_z7}geq zl4D!*Z9X2T7_&Ky_M+Pss$}G<@_8Z|f+q3xE0%|}m~@s+Xu5MG<(A=31H7wS(7bC8 zT+y+Q26A%jXC^GLQwq?CFbp#une{r^(0CMbp3%*&go3IdAl(nHdM@vQYw>0Rb}wl< ztd1spT$`ck@mQo&TDVUdS| zCc+q*@iAdv>U@}e57B7ieB^TLlMctF7sGqzal+w9cu_0Ev*e8kfGV$Y#Zt7pTmwmk z$s`1FLJ)R#)?~PwA!lDQ8fB!OZdoG#P*A(Ywd*jHkSZ4eIvR?BrT}XIPR;MH+e@7D zUnNwRaW%bYJkhUzfyR_7iqy)%^-hnYV3eUf{zr~>%>Qwqc?0sMa~WcqWoEYC-vEWF z&z2k@EuPLgGXEZH9gi_Yx63ofBk9I1QI`F# z?=4HQrl@Teo{$Fm%GyC+np%~GR6#-&)4fh+ail$_vMb7Dz5<0E>Cw$P5luGF53fkQ>)MBpZZWWcEN@R2tOMQm2? z$q3g298OHrjD&ZZ+gg1rkmcXtuC9+}!-OpjZM^wca?x)*RX zZ*ZvoIieP7d(KS==>ru>>-st}p{rE#Hj+4=^QIn^UxikHt=1fcw=A6UO(F|&$`X42 zDR%sb;!LyI6}>AUsv_g*$5Xq9grp=hG@@~6kmo77!@cVW7&LW@>D<@jffhvP6W_Wg z3C-1_oLbY{uVKZTCwm3UWaBX8rt*xydUPC2w;?uoFJLx*_)AO*L^l^@RFyiiR zP$(*7y&y%U(VHuDrrnq|l4ND5o~Bc0hs$oR^ZSaBG#q#=l>cOxS%D!MD7O7PO%}8{ z<4yU1e&xq}d2@AF!d7;(l?LYRzVLDBn30bzm@-8&WaurPRcRFC zQjQ>0O94{mn#zlVi|gWt7)ImOnCYAlNODsd%!vyhDou+~O*b3_|Ero&mmvy#bs17y zxgr!VZ{%0`0QMEco>_jvn^o!(vgr%{yW|2biIDyGf=(QWO}r@_6-CN_si_vBLB)@? zG0_ylzg0$`{!~Un7$6qb|MjQeBmPj3#Xg~~{TqGT>d!C#|9|=aEyJ2wsr&>{@gS^I zzC&?Me?9Q5o|**6{(E*RY~RVYHn+s;sWF#p7tJKi zEjJtrpV|Syg0VX596hvM}Vy!2~ENr$~%HG?9z(8|$!Twh_lmd^O31L!80#{8V-ek$(4dGj|=l zzf@q@i}=Umn%W3T^L>y!xhS7K8=&v*7N;~~%Pu;jajhY7vkfJL)oC9@k#G5f%S+&KO*{thdeR>e(T(ux zmH9YC4Uuf{AMKuMsK^j0pltcSD8%w(nsQHH_C-1y_}$7iR=`SUiStk>M?bac54u{%O8{{6W*VR<|xvl5oJ=vzIg~gTdlp&rEW`)RwSk zzF#bzaE-<7k&8upAyIapaA$&IfAZ?)7(+(&)+<&!Nt|VZu=vg`w;>RT?+{bWKaxHl z2rU3i&QyS~BH>a1V<$lKD41)sZ~m2%gF~67AT*uFFfsg`uGj`_DdW|uziEGVZ^){A zLL2Oh_d6&&5aVM!UONbtxX0HgBcqaZ&-78>-OHN}d(D^(c1kI}^(rYI*!5>cFf=kuCOuNcDcnHl1%XT@eotmoVlQ z-8~+z`3TWMVxQ)P%(smz%b>?CbW+1GZHkGGH!NFVt;@v+NX+@xcu~9|SfT$&=^weT z8g-G0)e|o}|pErd7>>SIvpst*pbD2C9 z{-9(@eS4#5&7?l^d(SY<@+vaMtp9rw-lI%2_1VHSc@5?QejdZBfO>W&yJ(z?TtP6= zV=4Xje_4oby7Qz)P{e3 zD0+|Q+n!W0ujV6y!k&BdSVD1xittD-J6w_j?r~+jtEq?OTMv8mt^8N^Z6Mn^n*986 z(>!Gm;(o6B3QzXa)-aHV3%g%<;Fj6%5fQogDncRG!R%?-{jgtl-4mwSSzeqHXG`lJ zi&dXL7`-wyG$iZAeFH3ivzQ_vxjihTl;jh(B*^8nP8CnoqOZCDjs6D1y~!%QK`RZm z7n`#>6PW*u#(=dA+`wDT(DvErn15K0{a6;}w^7Eo?~?V_sy*MP3=H*V!d;JTo^-CQ z!u)d?1``Ppbob2NzI3q`#n%5O+6{dz-tjy8^|7S4P~;Qd$V9fV2X^VUmS9OW{p50~ zvD99Ci~31JE`ySsMwMuDaUbuNXo0=sLCzDU#5+(y6$WW{qt2G#N3+NhD#4WS2&g=?;#>#TB(D}^H>CO!8fM&5Na`O zz|h)QtrA~ab8!nMsJV|ivxcjaLOM<5C>l3oksrRq5gx0-pRcYjXfGLyPy&?Pm|y0n z#L*4Pu)SxqHAkcMq^uTh!`ArHjzXm$<0u2o`}EK5Mb=}QiZ0{K_S||Wk)|*eTAhL4 zMdq6N)yIEV>6d}($>XDQY{44k()ae2(HawBU`rCENU)5F0kgCgm-d^R$i2SBM!se< zKVVCPR@R+pqQI_=J&OIL{VMZ~%5L~y6M3#z6{`y0F$cM(&+a(E^pq}B0Fn= zz_xpMB8h$d zpuz2^<^%PE33|e&==(rl*nr5o#ZZNqIA6|-PM3%Ck?8PC7WcZ_wb_VSxBIYmYur!f zN1pl9CC7_Pl6&I7p(YEo;p8!(gc3_?r;X$fg zKCc?{_jPMW{lTk>h$LbO0u0XcPKU>OKqwtm=kKRGgEEdIz50m{i$Dp z?+v3AC%c~dxRjqXE?NimhSFQuE$oZQo#-y!bO`goMuk<3C)Z8H%=U5NGa{lRLw3qa zM&1Pbb%&@Lyorxp5yd6pnwx(sd*b_AB9^ufgZ;B*PX|z~H>g;s^Bm^ey?WW&P95I| ze*U-J1HxVbK|HGeM*hp|<%Wj?0X1+Ky9YEINOP_`md#U)i64^B=f9sz^2mhJa=PJc z>1L=^lXjWW<7Xv;B~MCBAU`qQlD%gZ6Re!s?hdWGv~xHs`@B_U`pPD~{fK4-&88c? zULHTjvRtn>ihCVkuYaGQTZjsWHsdIPLrf)MF8cmVk`BFlUkD9Cz*+7acT9R5i~2Aq`j#;uOp)^> zrZ-+8&z!!AaOG;;`hX?unnyOH}A_p*B5iwbVkznMpuYCk~h5y{T(4m@_>7|STT z*}zh66E{^D)&k-LK@s$XM0<6VI8TU*ed1z=CXX6wh&D2Z#vtI5YJ&64>+U7HrEOk! zq1+q$EgY<&@iKlwFnR1=Km6Q2LZ%t?0g}3a+U)E=N`YwJgoIInFsD)3S=#Z}X;FW2 zMX}@DWxH2P!{)sX#Q=9#CqoB$OjHBQSQy-* z*_K?S5EDZ1JE*nteIQdCg4f+}t^jEN^QVPntN=Ar`h11f*C9z5ilceX%X_5UDzx+b z_>qH|%be#@hj5${r$T^$teb`4y$N1kPjCX?*McgIugaM8&Zd+~vO0W6AKn||Gkv{O zg-3GWblh!=QzR~K{3)#x>)?&|^UDMu z`TdgW5ZB4=+%UPFGlYO;enV6h;2sb|6+$N=A-c38fR#a!u7Hb9@_ITC1oxn74sR)q z5{CEhV**v7%yR1!%TTw2W%oYC6HQtjWKw$?b;VI7%Hod(K*9F%dDZ*96b1M&K?Mr> z7w1cc$x3cXHKdJ-?yMO>2n>y$4(j+vQveciB{g_`{RpCt*oo z7|VqD3y?qxMp~JdO6zhYgKIk*2$^H zEdoagQ}Lh%1Jx{?>5WZ%L;4;}oYTdx<3RKo2zYuMqro<(()2d)CTD9AY=-wyv~$+m z^%C)6nd{CdHmXwm(F{5%=>j;rRvTmj_YF>eD!K@I{(SGx1#K>9qE3g$ zvBd<{#P0>BY0ZfP<9t<8^yuYv#HbJ^zj$Zq%ZU#M=G~Cn*Y!&T%TjbbNIm&wD*9!q ztK_40@nWEln^R$httQ!r$KS*H2YF5%eB#PL!~zC>fq`ytOq>e=+C3D4Ri6TmGrlD8 zFf7<2RVQ|zO(617Sg3k#d(S*i95+R`sxIbZdaPgJo>y|z(z~~GI;ma`?Hgi(ACD>{ z4%#(vlj7}(SB*FBrj2|?XWt=uM`xoA=T@LhDZ^|1cXx_ZX>GSF!sJSa( z3kFw~C32-3*xUu&+B(XL*!wdQo~Y1mkNMm%r1SavsScFB_FR11aoeI}j7ih|I?bn* z#ZSsIFl@Ea$X{c}C@PPlW&N#Pm0f3GV1meyxgjc#8b7k1w`ti{lS$XlwXl*}OnCUc z9a_;Y?Ocf`_+*s*7U*bo)O`e|y8(S3LoXeFMBkjZ84urhFuxy944+iIh!&U7=+If? z&lcaGuajWxEmj)hZ7O%$^jS9$c3FZ#!o3qhQwKiyI_@l%3m*DoM|Cg1L^g3 zz-yTVsj+#vV@B}z>@#!ky`Ha7^o0Hdw|66MHgRK;M-d;ji6j+tu1m};qyVOT7dy4j zu`MY)cAfD?@0^T&OkF>!bvP&*knz^l^y)ql$zTol)!e9;YL~q1<0fODV~J)feEQb? z?W0Yz>Dni1uPY0yJVcub=;c9y4jZInQ#VLnqcmZktK`QTi0eY89CE``a|_M7sB*+<;!EApd`^Vpx_Z%bc1kc}qBee9bq zF(5~AiDjQ)zEW(DSj|n-O`rL75FvPoZU@i%^U=@RE;G2KAU%Y|6uNOsc4Hk#y|&=y zUYa)zUOJXoa1Dab#^Em6p_u8fkT79L5Ntx4E+dj>gbYhTOU!as4{IZ3cec2c^uDjC z_qABmxMMPO*|d8hozj{O@TMdr_dSNDm+uEumu^`ATy(n`zGcx>G3U_ z*o(`6Mz(1dbf6nyz*8PH6&O8HX0Jb7rmndn1x22On5n>0t3xo};8oFlRy4*Q`S#`f z$SRFp%;-8e@vNO|-Qk=n#?|Fja9O^PL6_m3R-5;FdMh)nD8Y|IdZao0Sf7u%T^yAe zE=Y|>8PF@9uu=?ago%1;#u*Bj2|VC$NUIcxv@DRL4vaBbnKQTLOQ;`RL=7jJ1Vq^J zc5o=Hsr6DRBOb|>ZV@3q$^HCdl?Piqrlb=Jqg<5xHo>QKxv3|s0Y-_HI@pZ=>vuo} z9_>WTwDvBawy*P?d>-l>JnUwsgYr1{CIN*w%~f9JHkFD#nu$G!`D*5`z-Gkwk2;^E z4P~lJhu$RSx1&nR;o13LTzOdK?_hYR#eJ14o+E<>@+2-tHWDhi3*)wxHl=cXDuxIh zKx#c9)p%it?8B%;?*5NvYr&a#GUK%jxh5mM`y8+mcsr&#U&0o2ND&?(zjsJ}Nq=f# z6_Q;wjuDa6;zzpR$y^ATnQ!x3yLE|*-C*qDFZyY0O?0uH&QJy? z+r%+t1rii+FNudv_^@`%fZ4WYsboZg>jf>+FNyrhtBC$KaM&VR(22WN<+fQKf*DX@ z92-WfIKG5~?w&>t2cv6EgY2R^I!;wCH82#3mN%{NA;}N_$5gg5DM)jK6tXBj~H;f(^!_c|PIc5h>&6`Z}Vo z?2kL2nGCCM4wtm}HR~043BqOX^>}*%X~-nck>mk(UWg<7T#8zo`-QBJT4zii&E63b2RxS|JcD8EHJ0fiiI!CQ8P*`dcfAy89@f!E1ZP$?H>j zBQq4&wHBJZ(I}!BL^vr?80{0h80dSyq7uYmWP$KC(;HzxW|Eu-@c_xxv)9c-5( z`=iEqrX&n})_b^MbsAG_0RDQE6M}+G6gK1LUKtO;W3?C5uYFdiT>8nZrwu`>USCh- z2imf~b@Oc>XlEob+xIa!4(f-6o;_aL`Ap0T-E8{DKJ@^lhur-1ZF|o;arZ1Ecm?}4 z7G7BVIa=_*o?%u*j!&n=<{Gx-fk~bQ&*tI0`cv3Ybd>UV1mq&zO572#H({PuLhLf@DDsvC1uM>9a5O=E;Iu z(h^*CvawVjyE&7Y)vAr-Z3>51LjrXZ+5;d%=G5Z|u$s;M82j)Fl;}h9{UP8(KfT1PU;Jtgkt8t!mkcAKj9OwD5?>HMFqzZ@`*~Z6G$X@UmMb%N1w0m-HE%rIqvfEY>4!{q^1^Cem z95t#wq;;e)CwqKgh0WO<$@AT_edjzU;}gF0bwiWHZH$H-k5BA>@4xO*z z=IL!@^=Am{_(T{7R_Y(Ze$BFbH>lp;aT|wmU~Hh4JcpA80NHn8;=E*W?goq$+e|+3 zepP36-@~xWdO^(X`Xry%s<0pvvUq>RgY{T@02seMcv?gyD}1vki=98fl&f;Y896BSj7oCb8&1>GMue^wM=rQF6E2Er7za z0BPTA27^4dE94>DBy-LqnsBOPibruyy9iekOsi2Jg+>u$um;sr(8ce!M2q1OP8Aj< z6ZBslyJsu~`bWOjr8^j105z#X0 zJP85}lX!V3x7N;EwMmpw$)4BWYbZ9Tg5vddKkYfJr#PPEG4A=haabOhguV8jRX?yHMr#b~ks*kV(O(eT^)vqh~t3HJ(lVN}bqToeWL7#qB zd|Dh)LShMdSTXzIEFaTYLiy7Sh_V@&bdiZ+_9IAz{j*->Q+wzA0Bxb3-vBZMt5&9~ z;`Hc9E+z$YKHavM{Jig_X;#~BSYf;e3J?8Sl&8D+eBsbj3UhJbv76QF+O$3lU^-YJ z@i3iKXw>=+#(@>Qvfm_yb<@o_Bc90V5D2kgkMDNbb3+aANMM8LS|{(4B#=q}O`Fj~ zt;7HDA%OMRdc$AS;{q3ZI%t$aaOb;587SxzsHg{CQdvj4K%MN~rSM3q$^u%iDq#J2 zZ9f|bcx*aq$f;3&`j){i@%mO4%lIlC-CM;)wNFvnP`uX>6QqG8b({TO>u9n3o1w=a zwClm$c?L+@Yi0=B`;sv088xo)b-uol_V(^f6); zpp?+|PfCbesH^V~%jymS#7yS*7C^qDeXWi#H)e$VfP}Y59Ey0}1s8hKK$14yj61D= zogZIqaK`LJ54Zd&l{PZXzUXwZU9MHviib7!6P(_A3Z6iM+4)L`T?#xQm!hHJHqni6 z8dBDKXN(wlX69z4^YLt7YK=gDL zK|?Z~>|Byk#pY1aL9bi#E14dqM_FsVp{v=!iDO4i*`ue$a%QqGLXqxTu}Ed>-U*a8 zQ08|*{>l!PSt{l0MlkS6s}9{Z`xp-woo`F+3;bsC^zQ3$Z2QYm`hh$)h3;w^5C}uy z{U@%BkG(;Wa)?Wg>iF7}HKC(ydsX-pN}ZcBKWOgcH*SktTdolv*Tm;-;qvhs$ASJ9 z;Ca=E>{C=cJJofcSLwlbH~@@#{IZ^$`&`mx=rz{aM=6cV$xsHDl^SW+Kva|zlK2Wg zEfO#IxJJm1*e4gi5W&khvenlpv~9MdB#71L%9X^l0BR`y?pOePeLZ(;5n3tiN`TGF ziw7!HypsyryYwFL-5jD|Pzc;WJ*w;mIaGBc;e+)6aK1qYvE__X2AgC_?-_t1!&PNl z-lCXY$s)OHZk^M_wql$D+MttP zJI(lG9&dmfB%<%%0m}Nr)s;1r8*I{%ZLJT>7|?PdUM7*Sa~*c z-`UOkMw5zTIZXs9NE_G8W)}IikqatAD&WnGK;TobUh~96EltNj-2Q_+)OvEg=hql~ zZh}ixj3ks|ihB#oD@gr?~rEBz{zvZ&auTPJx%xJrvk7b5@z9IxhIip)oD z1ww1K_DYTfW*A5qX1H|^L$O{E`vbT(S*^A|log(b6j?f_!5ePTcHu%QOIgua#Th=^ ztVjRO6vChOZ&DTOET;hF%H={rfC}zKT$3$|Z&GA``e|Nmy>Hf!O(=>}dqj5LKG-aZ zFLWOg#W_$=Xzm7)GMI>ma9om~{Qz&C{JCn8D#7BtDN^V~`G?u{Ir{V!`Q`KL` zpVe>geD?(>&AxfQL;M)+HiRYn2yZ2w_2gCs-EIhXlYFtu2W-8%C*7dRi5u{Fc?u}g z%cs8NlpSX0BP&8fKj+O4SB)4tkTFYw1d`1GjgWy9k#H^%5@MF}Oyb}kN@P}QrCez` zinnLPT#Sl#->z>pia)ax!*$zt!Q;`9UF#r^75x-#mi*Ce*ujg&crQz}zjK;&5!S38 z#!OrFX4&VkYz==LDqms8%=-&@V4Z2Id8uTnV z=?I8>i`$?=b7t}D{P5$OdvfUx*>{P#2FNGN1wkOqdJ=KjTB8EPLK_7;R4Jw1*y|b% zl5!qDUC}F7=XsFzeXDZ}A_@;~m{AXddgQa965^z;{nchPW9y(Q=}?UvByuH}K?d*l z+Fr>S(_4mF9C-I61mrcJ-odsJ4a*f&o0Y;deAT-k0e+uV#!P<-D&AHI>6$^P>%gz1 zp)1fJUE4V3Hp*7F^d=0QOalhIcX>>f=8f*0Q+Rjv`kRHxfJd}4pKFW_uh<#dUQ2-I zZ4dujl29Zhf!alcv~~w<%0s+8cQRbm4y?kkaBYdzp|%Z4A%Nj?A*wo~ZM-O1-^N?S ztavLO?5jwn0ip*jy&a(OC9qkaIMxtD4cbsbj2qPu@=hWqEqT6Zl4Fw;iW|ztn9b~p zDO2DUQSW7oF$vOF820B=Bks4$7!rl(!ngzYumPlEY^lx<8PExQ1vFw_QlTd>g_HVn z3JU!VG1baw@YE&q;n!XJmWN3?mY8xOTSYX(2bVLkQIb4$bYM?E%beB)bU<9Uy;Ixj zj&drg3~6$RS=xNx0uggt`=pyLLl#pN3X6d#27+=(xc+0DO}|u7_9lK}E5o1<{64xE-(y@q zgT>s8VoXB!5M~&vFJNEpDTnk+(yS7y?yflCPUv1WFCl&Zm_jg~C!6I)VJzXf6xg?G z>$>ivdu?)83o;u&*?DlM^vSjFB1Qk0;!_{$|n*+%U`9l2k|dCM(PAve2X zmKdRwSw-8TJeDpdy83zM@#TUcb>0|0@1l&$I=lvt*r^(7sVcra*V1c5vabC&E*<#*+P)T0IuwitPj(cPipqP8Y&5RTVT zBru?zD?F5i90Q>5JXKxdQreLmaJjw~mn|sp)kUgUmSV@9`pM&d37PxRKC>zJ8*h0D zRR}cV9r@&|0fpt307ob3C&9PgT>8C0lxrA{6gP;AE-cf6BZsp4Tofs~!(pXjcT8G( z`j_ZF7JlPms~mvJG+q5{w6mqyTuKtqq(>epSgoRDZk<(%zgXkE9-{ux_*^n``%WM1 zkW#V9#_sXLePMRRLx{DGL(MhP`IWb^_8Zt$q+TjKeSieU`Ly3@NKu%TAo|3 z=fEsez1fEONdr&5#kEwE)sS|`InMBIMS5SDG%t@KuV~Q)!V-S&dCl?%myh)3HyN?0 zkgqLIA&f66w%64ZqPoWZhpJwQTpe9M8aljZ5DECaxcqR6vj-2rvC`Q(ej>1t8W-I` zTSF4_c~u-{!%R`(B%5Lx^u$BLlcg8yo3{;oEFJj$=S@Z&os!bT}$aFnsDoW+f%1}J}2 zC&4|u_e==%KNNAW&#h~sDX;YtW|3@HZ_v35kK{7lf}+K+T8ZD=r69#Y31}dl#J2Ld)Gazx6vkx1BG7UG_V|V-p6{Y#own_!`)L=s>IByM_AJ zJGrrb<)mn>?Oy)cy+xo1LzyQ~yL;<0&vVvs6}kS6xpQ@)olUUH>xtB=gvnmk0+wcDZS6Q zRh*WUAw^OKVHqwNk*kcsQOzY}Q*>c$oCkh0)bk8f9I96Z+daxjkq$JB=}w&9HA7HQ z@evvWD(Xlzoi-GkZ*=hJR>v~4jP&ZC_o{(HV2CS zS(3BZOg@M>QbuYaVWT4tYx&vDE_8GZC`SvSyh^612YhopIao{)rf@BK$3|uo4((uA z0gHvu<(%B4PzN9R2fiT*kajG#CQ%`YR>!-BP5kaov(`3>Nh~u&ql?#FJf%mD_UM^k zR&%KBhqTG}(d39-MU!(%;G$2fO#z&PpykB3&JdS;>_i_*~IS`KT?1%I`VBdt_Pf|atptND7lH& z#gom9x)!?1zf*Y}39HwFn@G8~d+bJz zKYfVmB8+j#?Qk!OO4*U!EkG^{bJY}d^Z)?t)S$70;=TrA!jUwdNu*sXoW!RD`>%6y zJS!NF2jL!GQHxatg8LbX{Q9xmlo{zB^bQF+gZDQLVEcTd`FQcFQ@lmh?TGtAtd!%^ zj7%WZZx7K-+=^d^6CI66CHx0(I;5p2e)0fSHhR`W_iD=yQ^~lSlF(v3wQ;C4cCn0{ zbtPpY1%qL=$5g*d{-xP#D)wG#P~k^GOTHX3 z_0~=v?oEp_?yJCM-o1L9tNA!-4j$KUFZbK|1t&SP`VyhafD9?amkS)I0?I_~P=w>Q zGHk^RvEQ*Mb!C(r-axX zS!?<@TvcMAqH8#1u{4|bc4yFPnop1MV8bNE-uIfq#0w@$Nq#uL>M%*jYMk#e+g2Eq zOuIPxq?Pew$y51uCuA}8*BY~J<7k5MyFcs6?~1(x(v75@36{jS3BMWp37hKMwe0ZJ zfobdX>^G-@#H-0$-7a9_bR>O?s_T{n5N-7h2cY4?noz%i)&{ zBjp4ibm*u_ zGLGC`aeVk`I{P`@#zU=3;$m;i1Af$1fE+43F89u0n>`d{2=L@DF$-GBh(O7 zqoketr=1LecXFH17s9;{5Lxx|Ni5IbLd9zfKCdZ~A^n0qv`vIF&Ipzn2f)Na^QrW1 zD{?MqF?o7i_R3i5` zl`^C1)NQvD<5UWwd1g)+k%W5X{@84C^8q6Y>ac-}Z@&`6LuA0M#W{;FbVWSGs*RZ( z3MGLEvmE%MmOMFhKGe^fXAO>F=OL+I#@s!JG;O57X+sj~TS6|wDb0&5W%^%St0f|g z5Q2vk%|m2qlyayQ6^%o_?<*uw*-lpDL%t*3d>Gd$7<@qBEYZmix;k5#kQWxF$hUe> z^a~R*Ol2@BS4r#WHOPXF=x&?F$%5%2G`A$pp+fEa+DOEO1`RFgnE;OjbL1cAtR+?M z$Bnq6p+%ZdiJlBQ8cr?8wZfOhPk$kwBanhu0&T!av(rSRLtfzCc?d;IS>JkH9ESz> z!aw(W%%YnYW9w#|2F-pnv(yeEnXq;-4BGyR>^q-M(x)V4euu(-`0PP*gIx$(MFe)| z^@xWP-!a~8YVS=CG6d5lR!;F33^{0n3^vhG@6`yQFEIJHR)T6@PervUwwS7X_C%eh zTLydpy!@dE6?hqohR>#dh*lFJYwedImXSLibuI?uscr=pOFg*Q)YP?N|*?2q3Q@VJY=V+&uh1b~spf^kajkp?r_V0}*1 zMN3ovA~i?6zRi7m18g@TZ*Qvs)X%kxOOXKkQ)o(*SoKCb-Uepk*ylJot_JAa=kyQW z=tvxeH@>2s(L8y*(dD?Xq-T>v)P=R3l$Yy zC$Dln>qL=~4Ia(6L0TE?C zwHZ5PDC*IUXUAAN;YqnEF2)Dgdd!#Ipb;2bJ7m=OD3BUs9tBJ3<_A6-1?^@OlUh0&`D4{C?<(rIAm91Dq7}UPi)P z?&A`Ck8g61+M2eH=F}HRcQG&y7w&h+-JOP&Ge9<4zg(=PTimq~?Uk-{*c;0T zbvT`S=s``BXH@grRV?9{-H*pgxP~@BlJEqC)@A;}SbR$iibECkd#5%p@7(CxwVdf! zwHU`~1Q!t%vheVW>}`lIxk$c1*lv*gqCor5HQd?yK1vnOFvlEj)iiiA zbUnSbFEd6~>Ra@`lFD<*QrUhNkSTi?aFa)OR|!Y4xf=R$A*~4Q1YA(KCdv)V19nq( zha+RQuIN27O^9!KJMSDqr^f1SDA`Og7giwRU1u~meqzK^wF*65!7bd1!1Us1=g=vK$IyXt#U|pFMnqOSi8+L7hug)h?q}(Ra#t%H>UGx-n zsN4M}NSu|8&VtK}?aY{>D5wI@aXdI;*7eLsp|{(gF5;QnjVJb%t_m!MXl9(04P&}1g?@+qI}dK&Rwv6f-VlAy`6y4@|M%a-QI62wbgyBAFS)zvjxD=_dcRHKP(kRu?z5h5T0KJeJeW%!bn-D5>ub3XG_!CMbE9v|`J27Xr9}P@g%kcU;cSEmG zV2e44Ua(|$8(e`tVz#D1WOaumxtyB*Jd%SyjbG_7*_Qt6Noy`PPL1taZFlyb| zlkwD;_op0U?*sWd=H8%S$^GhbJol5{t_Am(!xk6Q14`MIZ?@_rFGR%NC&1$8`*!Mq z_lwZkZU}3VQ8XrqsMFE=h?wMy$iQ$#kdyfB%XZqQaLDgHeHCae6=ROyL9qo&;5F*ln| zXVs68rE9^F<+;>JF8khRL3PZeZgCni$KD?6HPouuu2~+kvpy%iI7U6|-%tZV533MW z=m`{^?O)bbocW%7%Z%T7o+llt1g;(6SzlaBuG}P3qs{9NfLlpM&YK<Z%#=Z{y{fhoAK%`H}v*%uv+%MZ!z{)1gvsNPn2XRY(aajiEOkA zExU@kuRa(R6>6*{Y8I-xm$9veXdVXDgxE@ArOF(c+zbPQXbxG2*MZ%TsGEMjBHW&) z{r7ptbvN1up3K^de5_27CLv`7x$%sc6-`BdOP|j_A&^jD8vI zpBm&R4vuosKlRy>l~pn?LAq@E|JDDNcJ()2yMpTVKDknb%u~>%Wy8}~H6!L%VWd>0 z+XJ!5+a|BessOGos&SSkEt>lkZBwB2y?dUWSl+PC9}4$p=IgJpHXr9eXI%b;zfa(a zr_MU>V(DlBHA51L1_<70F2F`5oCF}LH@H!^+ao9+b%+-*<9 z6wW|cOwl961cwgZ-YRAI*^>bU|95sak|l6X@kF8|8B%^A56;((8kJR+fx{RBzYd)s zrqRcyV^re_~s!qx~>66CqDy zr7SbpOAI%|$0^R;;nLv%ve{5wn!^>h-wJ}P5-w|;@aDJk6zqg7g(xy1^Hzg>-VmV| zrfOvprMue9!r&eJmHxJ>gbseQIl)JNjG)2l+0%dmbbQ3n{loC=mZ<4yOp&|4#yB+N zn7Zv55bMwpr$>>cx>#U}ALoCf@yl12aQI8f!=95OzJ~&PFz>c$>~go1BvhOcs=FKq ztowvK{Ydh2QNFx|Le1Py=jhXDhO5zhcYD-P;?>U~ZKyR7ylOu>I|Lp?FYLFD7$(9L zV>9;JF=kmgHcAXRQkEK=w_h6r3PLY5C zaI(p*^UG0~HPDGY2QJvb6j-g(TqOc{dRvDd=-k4zToxXJN+Q_saijCYOC6r(jsFCK zzA>EzKmYNQVK>AEstB_e*)EA3Q+9_$_Xw^`=duv7&_<-LBTADq1oA50u=rpj2598$ z_u=XFADX)I9he!ah=_H%-Qaprk9!$lxo+m$SZqCC)T8g-iN?7X5ROy47R}jKeywb| z^)o-`o1| zEWoI}sPT>YOGL@%)B82v{Cki6gq*dD zVV7$X+&YEA%~`ml)<+J$q2=`%NW#O%K`0e^(;#+#=d zotU0pfM}EQ6=^^}pVH`Sf4(%sF*5F5s6R0IS+IOJ+_wa1o{~?;MFVHEm)1m6^Dg>E z5k>iw;W5!-TUpM2nycJR+_SNlcw2b&)Mnu-P_n_P*C&5!PD8Sna@m`Lgk1 zOjus7yi%^)C|*AAl;U+#mmqZhC5k`&~Y9mLYkN-wEsS;VTw-Y$P4)r~VZLt1HxL?4H!gY=Q2W%2t;lX)cwM3Mo z0`F@Qf6Hy0$kk;{k$QpwwUG}`Hgit2P^2p6;f$!Zc7Q&ONxP^dE^ASUTn2rC<@`Jd z16fDXG`CoMrQmK7HHw4_)w}wr_>8fP`XQjFM#>8H=VJ}T0CMf0%d5w5 z%}2A{OI$0Y(^xSIAq3Q08PhN3%AZDQMNa6IvqAjX(tLBT`+(Kw;O}bDB@W*+XliO- zY@)9eltB!f5&hUJyRlbp-pXNZwa1crO}ETtKf_v>tXz7w*j&UGAd;5ou?*PK6h$-x zHWshK+iDIi`PKXeO#%Rm_!mu|WpifnI$0L_60i?br{ryTVGT_r_7^Ssb8ITZXNId3 zH*Nx7;w+L!pvp;RHKW;pyI!EbyUc(6#FfGpW zK_Bm2jaiHnnT7cJO;02q9e(7%A7LY#aGV#qptL_#PvAgNPKkfx%lAkA2zV+}MH$Dr zj98rZKOX^)IkZ}USY~M3O#^w62-{p`&EFZl!rCcxW$0TuJd4a+$YeIx(l|{VN;t>b z6L700!E*x>^Oiw8&fdD+9teG$nerpV^v*C(cBSz$6OEW)e#oJG<%?sn69|nmJv0>H_l6m*z_o_Sm8RN%Ys{lJ9 zAyDVmnP&Z+PVhK=bUn9D_YvoCo+Fqczt0x-mXeOJEOb$49QjT!7ce-1pPo6q_q{j# zwF&e;1F(zM)<2Rsd9c|MP1Sa6dx+Ba#WCK`p33q!&4Y}qN2U;D1bb&3kF{Gb%vP4Y zO-L5qr#@A7zK-okH>Gq79p5eg`FVejRO(&g^U*N$qj`YRV;$Gf>LB zl{H}>VC*8paVOJ=i*@u?h(J+NHPlBraN3sGsw- z>+Bq__jye^M?ig6D|M2i*COzJ(UXe~5(Eh`$H#|9*Mc4KnYao1#2dFtm&C^ z^%;`SRdg`>1rH5hR30-lxC~UR0=!3^Gz5q*2(DK=+aFup3%84~f55f2N=&SJB{~N< zgpMBUY8W+g3@I{m+T{L5GJE~(!U`1W8{W6rRCz-vPjvAM z?zFUlhd!)!i1`?pHoUH-r%KteNDpKZX&uOmS?owc-v_k9*e;S<-e zHiWZbBj!XiyU8z_8z^T$lBk%(9_I|6Q3J}~WGt1Vc_iLy(B)el$J-V#+I*5Ys|U2y z7w;Dp{g5{piozn;mM&?O^9#=UJoK&KpR;gS^v8~Ocf}FhkR{eOSW_C@$!|TKbfdhw z5049I4a*CF4PK%T21!o%)r1RWgHTT9VY_&L$Z+NaC8ng62pwnTU5qkb+%(b?;yT9P z)~7bk$tzy2`N*kJ$9IMgJM}a)!mjJDW;M6`stCsL&?7q$)l`3|cm!>PKob*b`9~wq z12=fX;5K$Aa_)`pbBmtK6>Qj?d86!Y2$~%8Cbh@J#TbaE>5=Zr!%sFDZaqb(P>Wl4xt(TiF~BcUlv%U5 zR~x`tp`B?82y3YfH1ZX9Pa&?1bYBw+vTekrNbFN`s&Wgf&iNo~&6KT0TKZuhz z9Kk`9M6Q$^R|N!L{so+yg9h|ZOd?m9@{}DDsG|#f?M%<`xxvq6;dw!=rMM1SH!w2| zECp|IX%vZz;&dEBFf7{NrW^|hc8?eKNwx*|`Hv?F;VSQujM}HGYgO7VUO$5Pqc=`x zb|yTK_pRtt7tg-`8Q7>LXi_)_4hl?S9n?Wq@&B=t|3$;($G==InoZf)`1cGpa9|Q`;3m1{|F8Y|pPN=t^q0#e z!fWXNs}_K48U5Jz|7N!TUkC+R4axK@6)OewHkF|W){?Z947K9>pl%dWd`fjS8v+_y zWBZs(2LJvee9iz`6nqa}+;JA6WqzYRt`6Ra=!k1cdD#|)gzDGw{}c+bXG-+6spq89 zyNU4qO=#$>tYVD!EHXY?s?r?iX3Crlj5NB9$ngXgjH!SmGA80;h{&KBa&cFQBj21DXe|i7k5+xBQre&F#DHvf6fd)seYJ%0qhM}erhE!|3@<%gW?%N9; zhlYTBC>KxC2MCPdj#8NoUZCJO@3zqSmI>7Oju@esE%z3F`bF)>>F%Q4_(RIQ=m(Zl zW0A4{lBNGmRp23k#m)w)L%^l|3HR#F(D72 zG7;7LM2nKNZSsdjS<5}GNXko8sr^)4{^{PXc>CTdnRhdUmKqIKrr)IPgWb?SR1Z8k zc>SU1Cts=Q?VD`)#i3m{snDqCwYRO~lY-wLDu6mLMUjE=SLq^&y>>JT-5}QV{$O=4 zN$ktYRcdt&CsU+Zp~&A_m@K$z^*R60jdfU%B4HOE3P#C)$S~O6keeifUEyF(q7(eq zu<3#R_52%I6CuNm3yRK7AxX$?WmHjhHi>jvO7FoS)hMOPjsdX;be zcgatwtp?l%P3YCr9RJ^S^IwAH+)i0Q2nPbU)a!hyFI7%>Tg#>AvJF|MI3>^%>wMX2Uh|kF~q;L2K?5^k^+T=9?kDSrprkg*ciRkfm1K zgM*oMVtB+0dZgBg*M+48*7y}Ed`mMS=N%SV=YCbDOb-~RWpokr+ZS#pg7j?wIqz~d zsQ=i#g9rE@{o(_^dai#$Gy4&B+LI$%hz%u;(LM-ObE9qdqa@Th0cDOnKv^Bj?$5<# z-(;o%Krt#2nWH-ZhSNL-!f_fT2V^_efhYu!@E=T8gI<*ti-NjmZ$D6HD}_ZJh@?Wb zPbz>Z`%oKJ-HR{Z?wh8`x=!&?(nn#grfPePHLVFIx!7k*K>lr8=-OV=yFT>$_wL!k zAyt5(Tj%GXe=Gs4^Jg^+NyIuPlewrM5D8G>BHdyJO~KxgO*R+wLC6GHmt?pRaL5>~ z*_N41PXX*3iU9Cf=2$NQX4RqaZifUH!i<6|{YLU%S4yWPcn3Ny16lhIph(C7{zv|Y z*VnB0S7d6}WC2%XiM_g)yEp_6ke{h80IXcd_%;chu6cjFC#C3YF(R79MgPeXL+QUk z)nWJBF{{&jooO)-vM3?jXuO1EasaO{NMjx`59m&gi7r|Aylv@HXs3q@GzFy+qm#(j z*;c4rs&v3DtfE-4(vf-NCcddTbuei8U$XZf9MFBj-I z1iMBJu}wdd|BLa~e;J?4xGA9|G70giz&rRcb`AIBS{B$ihz`Roi1rMIjf`t`)Z2wj z;zVwW-JbSQFt=P|4q~1qdR0b>|5GV;K8Ax$5RgHv;fKevK1T!<2+>JU(2{%CNt|gS zoK~wV6{r=+NgW?D0hPr(`^m09X<#EUMbKJ)i`6)}juhAc;xM3%Krts&p(d&?;(g;KM#re~uZ{I0#3vQT9Bg zoO;oFs|G{;avE`mcS}stA)-f`^B+20Ojhczm8fe6^3LOxnp5m(k)zyfBtuXU2S7W{ zEk-_9%v(o+OFj1k-r1&Ep^YY0b zKPPS}nBBbd?rVT6Y=-bGDSg^DkcD?2?dGf6q8jV_6>gr6<^1TsR$oX_(AyQJUwf+i zbGe$vo24DL8(0g~TT6{*FB=^LYP^+&{@rMfz-{{v(}@M}H?7?3NT8T{4I7j?fK@(T zwlD6I4DMPsl!~LAO3wV1rt}~C*%uS|#MhKzx3O1~EVPJYKwn$&%`%u)pCg-sx`EyB z!emf)Dngv^Eq8O}g8}!n8O4Mz5h1nUDy3bqK5kfQMQPB8d+F4_Bs>x z*L1dVp4a?`sQw*CjRI3hQnSo8^B?-?f2bufo4=72Tzqy6|IK*B-_wJt=aBU;2?S3{ z#sy|FI$;hs&Oam+JYFCPmT>Wi%7#fR0VXCTilT4S6cpd)LVJ3uj?K(yom4Oq6EO)0 z<~|cUP6V2bo}1k$Ffp(LGIz=5*5ih8n7GFK`?PR-$y{Z-yPB$ zeaeoQQ8&k8BsWi5vPK(RW$+%tLR=mD`xFLC<-0H})<)l#c!CHO*Av9v{uneXA^7(9 zydln@!@TkHgACoMu6z=SrH1kEB9`gzN*xBiczipEy-VKADFehEmF(mXJl;Hyb``7R zEohbj+Zemwo=I-%&!u;9)i>OV*&Df)4>5@akQAJ4!gDLHJf z_Nw}4imXLl{U;Nqs*D>|$D3{ln=kiSmqbIJ+8^hC4Ts9ts`@zD8wMBOAFN3PDybYY z8MRpD+%&uTUnUXg43%*Hx|PjNNMOo;?)Idj=br$&$ ztV&|yknD7Tlu+s1IP=6qRE$lmF+G3eH6Nz2Qoft-maeoj%&;^wXbwHi$SWzaJG5_f zZoRpF7clj;$jv);UJynb0{1mgB{)577|@XM!dP?WTweOYJ~Lk4D;XZk=|Drn!*bvS znQ!Y*i6l@%=Gb;p1H%D|HhA?6uW`tg&%d(15fX&=!-KYBMF({r7e0-7@@$;CctwO$ z)M=f)g~$w6H3GH9sYEfz5+2{IH~1C`tJt3nV@mMUeMQro& zj8pX1`~AK;gc?W8PX$gYzS_V%;&{LknLtw)^yIb}Ej$qhd8-&$IgR7+j_}ou+#!Bn z0jx0Q<9%)^p_Z=kyvMb@@Cjl0w8>c&>n<+4za6{Wkk#dIYBcGm6|XN@08Y~Xa?qI> z3o=~XeD2UWhp3YF*9I*U*4F>Y$Ekd(2J0_3Q)mi7=XLJm=uYntvHP<>R00e#S2g#K z*Rzf92{T#9r^~YGevrB2ODF~sP;V+bMVZiTLex4sX7cc!IT1XC_!t`h!U`W3ASIW(T^h;6W(gM?)~vm!=iID zQSDYG`P+`HMIY_Cf}U;S#Y^?a*!3QlrO#D}+~gmBeZKyJ7CCUt4g%+WD-qi1FkfzP{;itAVbA1;)H|5i232D{ zft$(al2-Y2<6o4@7O<@(AB^}SJAyY{IpV}ui0mOHKa^`Rx~ND6W%;9`BK1{o#bPHs zer#`6#mHj+TvOI3RWMwrktz7+U{M5JyZv8BK< zTw%W5fq8sM^hbk2a+b(zxcn#eq?A;gp}R4=pj#T?o7Z{S@FX=ei95Hk&)re{Q*;U? z9cU}0b+7X+*F&AT-8NkwN3nFJ$`|&iR;t0t;499)aw&;%?WSYYz_9Lldq|kWm#t%< zWB_3aYn}QNDlvH`+dVmkdf;7y^}Q8;0Mi7isFpr!rc1rs`IO?3uzQj#oubF-GFhLr z?CU)rnhmPU;V6u{x}T_L}H^KQwUuz-`ATPt5+M#^R2UY;6)(;cL7i z#KlUxLu`kG(VtD02NwRR-O`rw=?$5XvXMuf4f1ESlN7dHPrfG|iYM6X9uGrx^@Gro zKKA2J>n|%xttU|~k?yba-9R~M?ORcZgk0B0Cz;}#kq|>5? z23UX7#!91FO+q3fm8J!et`-35C|<{V&FsPgpB3fCX2e{91#V*-! z@1~y>yizLUK#P&!3JsC(&58M~WQ>0a^}uBO-B28f-PCxw@~XUi8He|g;bC{Xwz1XG zk|E#FK-u#Akh3LeCZBDZ#T~&1QN+tHOri@h17QPkb(x5O7%J+(2b!M}EP>BT442z-#n6hfdaJy9GS3z{7$x>fN(MCRxX} z(M&GQ-RHPHx0*h#`#*cX^S5Uc3IX)OF7K3{`zH%`*m;z&KYM5uiUL*}6?rO6XpA>n zW20a=9bq&a`{%IC(KoPQ9+$kn=h%pN*3|jj98hXl8xGl6tcGSL<*gftJRUG#XD{?C zw`oqZrCl2(<>pdn^Z0F(Zj8H)q7p0e$L#{vot|zEers4h-`ysKvA-xS`?5_yb9&@g z+&Koi`AvEbyx5(kL;e?N+7mNfL^SVw}h*c-kt{y9%*@F3?Wkz^SBDD49~DtC#> z%pw%c{w2yAZ}DSITXLyk9J^;A7q<^J91<(BDmU1A>U{hfn8lFO;XY&LD&sr!Gb3ia z^$Pbe1W(a;{7rjAV&%R4HA3F+lX}I%X)?IQMiNHR_pGS%cHxy`Mw&z&<6Aw~$A?Ql zer?l4)Fn6%MU2q!o`~9*&VwN5{CaD~&{RZul{0&q%IjZmOz;t(C~tJMv<6R_c?l(g z6R9N+n(m%_N0H8FR5!3xh6O$4(<^>9_l!qBo}qjSg)HGzGZk|Cp*L6Kxgm}o%vfB_ zwy`RszL_-gvmd&BP>F$q<9S$1XM_IF6Y|Y7(*d-23DR)?q&~qYj9>Lhj*a7bwL}{V zfI!r?6d9jy*f6g1YsR7=NzSDN2hE7zlweOUeNHc03W>qOV1shLg3QF*-+~wUvs3G# zQMDG!F^?IY)+5n-PMHWVb&9{B6WM#Da;Iv4eI%kTyu6$as|nx^RZP5aG<72yth$ zP)*4uCB52hte@6c?kLQkqm(OhZXvHgOfyY@zTZPxxxjLH z%Il0zv+Zfhk;`~2E|k#O>bD+?ULcU!lrvGsGhd%dHq-=`J%gj;Ba6NPr^1f?!NI9y z%e%dN_IPJ?;9Bf`(C%=G(aL;~g#c_fxMra8ax`Z~!yN8Ux9)-8?(oav0cU1*i15cD7fq7nuftK(>r1_D>;)UxhiIhHrTTrV^a}XfoOrDC|V~36o%{`sFUF zKV_04?jUy+GRJQhE~bDShF<|YT4+Y!dVv0oO2BdLc<9jd3Se{i^*W6L)` z=sGaR(C%lKH{3v3#(}P0yh}oH*N@*byU`Vn_p~lF<~*ce9VD-WOdud*HP#HV8zjrX z*1?y22RPyUPS`r3<$Djc#|IxmX&+~nzPTpT9YHlTPI5ddc({Cg&b_yP`rB&(2>Vu< z^gBU3_zY_lN6yD&=iq!4l#2g7BDijhzi9wnGeoRC`DE(vD+actR=v5HSJkp0#T=OZ+-ZlC4vc&e(W~{A8F;hCm327KbGCMdpkA7<$UDhl(A>eRLuL2#H=(TxLaTKHRY@5^dWHZiEFLAdCsCE?1+pEzMc+gsrhXVKV9p&Xn5w8ba|bgpesUL zOOSU5!A9lPfFkB@gJ1^@7LBo$cJOH=KmA(Gp2l@DmO0{sZ1vF?jvg#xDV0M@VB64b zqH2x>uH;}@C!)G(!I~}Xk@Mj;5aH6CEVIW*v_Gz+7hOCjC$}7#iiYk4cyWeg1(S7I zjqJJhOezy;tGw2R25tY@%ULUTOKjewh#Fkfhh{0ZRatPiH+9kZTi;}r0c*-{v2|Y% ze@CE6m_QRGqpodktK{=$^;F!}PYS1RV=mk|TXfUpU6SMrEVL6EE4xQ9_xPBbe>{!Z z^x1_bHtpl>cj(J<#q$23nXOE(Ztk`UY9F`US4T1))2n>gNw}K{K#4raz$aj{DXuiW z4C)|dZ=c#J&2I0}8v2R8x+J6RcNIqx+iOn24;frR!sGZbC=#j$u&ZM$7XvUET!r(K zDjCgd8k90jb%OTr-c0M99-Pf}lL<(3{O9v^JH?UZDna?LRa1AHCGyGt4|`t~6=&0} z8Qdj6aCditLj%DH?(PJ4cL?sCCbJ%Q?5RX3bi|dM~)>>aKU! zmgm`3wYRV}=Z978`{;wMGH|sA;8^qQn`!Q6LbCwRdAGA zYkpUF9d5rJ%i7l*u5eI_jpiDOG^|aseVNX^>H7yRCq*CD+i z(k7;m@h&Hk{FANfcwwz5mVK6hP(Rr_f^Btfdjfx<60l9c*PON9DEzGNe!4wbq32${ z7QY_DD_C0^UtF8k{=xdZ>D+;-;G50si@rT`;{L)9UGG?9xkVHDNkGkj3Sp{PC8JF1 zAuz5^Y|%qwwC(a^yxfY2jRyW$v`YR5xi+|Vq@XU|w1%9dS_SHW{hdRmCo4Yqewi<$ zea3LeiFDUL#ZHKC`?9ha2}IMzVb-`eH!)3-`-cQuKH?c?Czx)v-DA>mW-F z)~|FwV@FSy(arord2=b*1NaZl>2gf5S*`it;TP( zf-daAmyYrGQoX<1iWmsFK#q83mUj)dd-r_4!>hTi*LWpwdqS32IzeH|(D>ZOmQ%i@ zjzC1>o}68mW`Ppf+4m>iilYjWR0jtu+e@GzBgX7?}d9t0Vq> z8ZKmscTYML1=jKUh~Sbr-I(KvpSfC}zn7R>2Wm4;e@Ykdj3wl$L$XSL=8s@M z6GR^PvQ3`D+jDIP+kxVj!h+9*brqx?%HQ6r*n^fxrtzz2dIT&mKf)5@zcyV=Jm{-Vu6JTf#F5A%BSL#MgL?S6I-^cE9aWaod$Qk2=GO@+E4TLTi(gj-0MPKGC$Ce95uy=Ci8} zhP4~%h8845#G?3;5v0UqCn`U{%JKNzaHkUIE1(2sDG%bzXhrFYj5SMssV3KTbJ!Vc zQVO-kj`rJP;NbyQ%{*#W;K|oT&8CH?iP&E;m0W6;Hdd_k<9M1Ul#b|f2KnovQ#EX) zwEKxWtkBkoi)UaycGOkiTHx6PT<2^E7T;Vm**FxscBk!ceYrlIK4s8j3 z@fYNH+|pBw6w=)fyEOIfq3%A(l$NL(Pt0=&)m`&gY?D<;a%0_6XWcQ!mrFY9*KPII zMgqf!dtHn83PObjdxMo9nW<IQ@L0um>Y>|>Yfeb;%8U_8UvTWr2HC0>w#b%__ha+V&A&$&v+4Pt{JR~opjx% zCUCac)g=?^`%x=cZYC-HsH#+jiyTDvY`^6K$Q;~5GPIAVY?yQU;ZEeUzgI)h=b#VE zV|RbMCBZFW$b?bQr?^nkQd%{x+41RTmP9xX&JJ{oc|JlUK}3d0`vemjIf;>$ra5>Glkk1cf0^auwSJ^SPEcKdMlt^dJq4~1PT!{8OTR$F1s(VNs%ctUBLqxGbT^zowtKmS#=Ww z5Hs>x%!{3k5|=Z8eXIA1pIdWZMHUgUv?Y5a0UZ!MW07o2s(N}O4d%l9W``dXJX)9d&Y#~#-NbL!J3AlUGGH$r4;q++wt7=KRMs;?U(Qf%h!(ZOBO`4c z`Iv=<;Bk6^{(;|n_tq%DNO&?}`wTkG<#QTV~sN?>Tn~^tdk-_n$h?tV+gYn1`#j$nBg9n_|KRI^(rt(gU;?@(kIf zzMPU`;?nz2av*p<;(t&5nIyIQ0^-FVBMc^zg_@dN18)(mqk?xdegz-Fd|=>$x;H+X zE#HZ()*A$6x1{$hmdu7gJ+*VZG<+K7@NItJm1l1{v{V3jQc?4PT7S{g50A#Ew(XH< zoO^fg<~BreuylatFZtB~Cz{3BX_1#CE^^()^0_D1+fV^AGsLV-71JzJARRA8*#XFTY{#6E$nkfHGjTJom2oyJ?`-aKx*0YRSEXf zQ1;MtF`<8|*^bf3WiKGnMfouv5k8oT|G{GN?$}mw&Ho9eta}GP?7PW8mo#3TQdSp_ zQSd{z1iXC%2jIzz)zxy%yGFoi+3WV~&3etMUD^Tm@!bZD4pGkS76?$5{j}`-JYVI< z8y*z*m43Lbnuu{G`oMjYs%U0vFOcK&T^@aXy8oIJzu}r)RJ8 zya8_W)77Slw6FK}b!duk$X&N;R%41#(c2~x5(aqh#&R5g14yYeePhiOQf7+}vtyaF z&md#*z|q4-r?8;+8`;kojuGg(A#nd_yl%(g>!t#tNxCERcny#P-%06eV^CIFyz#2L zn*i43mm1ZbDO5@b=Nd?yxBkP9ZQQE6sZFFfLX&}JeH%;1* z>p$+S=47>dx;toa7s46k=!#w0`_a}>yRTIy$;raw;8Tb2xsV0FWz>eE!JKeOuwDpK zjOI&lm9MIZbKn;1UUHx_`=0lvOaEkN-E|{4+y5&Va8D z*++yt=tLr%v)AgfO5}XQhEg&J0*s$!(W-QQD||_>wPytm6;1JOdRIB`MO9c6t zh%3rAs`*905e@U+IVog;sIPktr$sy}?HLrs`C&ia zW9?><5$)s|%K1YU(nIAEK*O0Ve=wr>%AOi=vxc_~b<|Lg4igyG4pS66?)FI~LP4WF z>H}~LJ#}gf(SF^zH@zKl|2XLt-A3U~Z;D-eS!QX%Wg3Y_!)?9dgZuK!H`5<$3xS8H zj9Z1%{qG!&OJ^HriQ!NPAKs3$VY1Zva0bv;s8;^`QJDn>1l7SKLi)dlevgDn&<6l0 zLL|h;qaK{D=4&|twO{wR5Z-~ysu%v>%5kw5rGqFkyd-nnrGN?t%eX64IggU;(NyJ=wil&BOB z7q7bAk4FO(=ALLP)JchQ4`>iv^#t6O9c(rBmz3NqHWikfVyt~T9A2Zfd-AwXK>Dl3 z%}=niKU-!Iu#7c(&{W*K?=!iBW)8k^1WqDsj?^NW>DGc<2eY6ESj^*@Z3I~^;$)>F zFYfw|jp($sykdXzX?M7-FE_D-%qmG$ry_i$sfCtHVI%A6QdTGW`r`x^ns}D=J?8zp z06?`d@Op6#0Ct+JH+!-jJ0rd(+;NoBNud`*hU0T{LX*UB1GCEc(Rj{ZE&0#y-i3|r z3scNmti3IrW;EWctlh?XwD(@*pT(Bl#`=xC9&fmJV~jNaened(Rvgy*)zXT77i2N# zil8i^W(Q-L86rxk?w{rokfhyWm|jRVIHez2bSzsg@E{FIxt`wH)~GbT;c>%8Qzc?C zXXuBzNe8X)YSqTAWQPq%#kV zh3Y=Ar*k1Oqdp@ukV-!%sx+9@L#n~tQvM*-o3!!R%lF_r^L@4=iTi*6Z|jc=u!LNw1hUB$^i-S*&x75y!g2wE(jIr~bf}{+ zY|cu`SE7PO=z2OMk*;|aL0rA(QfMTQv?_fvt}zH_UB3LE6>YR49=m3f(aVtf8oWFf z#`AP+jHwatplN(H;bL(#(qwv;xXt_HY0Rxl=f0T3s_3lPSX*G+ZlINst<$Z}bOa01 z6D}C3=Nb1s_8SB!Sy{edD=Lh6yO%oi)FYm|p-G|XV0Q1lBTV>yVn`Fxe6w`0PCY#u z`NQudNI=Zh9ch{_4Zv!Rf`q`+QVT0S=UTuWlW|d~L=%eJk~5?AJ9_y2EYp|9hZ#Dv zgG(+spL=3}Q0B)n&J%RdsiEh)oliUTC^z~QyhIWi@a}JbiE6Da02wUW(dptAT|Hz# zXD;L^nyY~UQ6KNKFy(Z^nZAeA z9-d#tlz8-doK0T_e4mto#7G!{QMfiHNT2HrkmW9(dsG|p`26ZRID2pa#ffU!i1gD) zgpuSz`e{Fvmv3Av9yWNFD}=ObOh?QXg#<44)XbC+)Z7f)_IoC61Kk{))B|gtp;MDiA`>s8n@bpjjPRP&NK${7N~QZzZBaDAaW`2k{XkZK^>F2;@!if-$7Mzg?$QT^^&Aw?xI*CXlST092t*tsifm^~zejNI@BgJ@4QhM1Zh|{){ zyCsdcySr5Vh}Lf|?r6718$>J`XfyNph&Nxo`|&+(EK*fIpPvNXv^}`md)Vy32iDT^ zAon1Fn^}LDMr%;0Go1*+>*wGyKPQE6abEIoo@?7OGu-MoOO%?6pDkNaJ}VC~3fB@! zL(nO>QrCXkO_zgAx-O&L?)st+;OqYcuXu6);?ORkGV@+xuLa83*gH{ zQjdYlELDVkO=CK#DN$iMMh@_)5?W+-m{xBT@vaReP>1u->KplZ*qtcYJOzN^Vz67< zpn5nhtv3Jc!=+YIcQ(D0{2^E#9E;1xabaiA;fZk_q+Vw@OAggNXDgtK3PY|6LznCt ztn{`SG*uhnY-k5i&sr)4MIVBh$VOC)sCMXQ*!ZPvX7<+CyNC(|jrm1AI^x1RFX5MR zjl6pc`O!F~36*v_4ZI9c@Li{!SxRwE@cMi4aja);Jqs8{UZh=olfhQP`q{WM3(VGYF9v{tr0_UWfZw~ z+H??#DP!S}?lmFrJJ9F5oBWLwLGqIoAW!@4O2WiyPYZVz zT$JeHG?vbN5KESrF@f=Q79!H4I~oy#0wtdy?2IP)AH;y z>?UDZKoyrGmD(3&sQ_qW>OdYXC)JrI7MW;@Z$!35uVNONqq}NC)XA7oel|Gn;@LZZ z77`U`D9_PJonW`t>&_wds)|AexB*x3kwLVz7;c>x!-k>DnqzIh(Zm8(I9UfiTr8Kx zQPq~vh<*3b-ToQZ;QPQnMkyvDLxtB<3b97rOU@j~ufc zYckG=_j>erhEi`^aFeiaXr(J2^_A3p5T4`xJKjBqmeWAEvavEVtJ`aeMT@1Wa~Hyd+f!LWgU8ds zFJ~2Zp*4bQzC}uWr@!@d3ho&wyjnPy=j=c5f$VbizbG8WcQ9nf%xMR0oBwF zCd2^R@M8TN?szxaPl3^-|C*W)^|}XDib`|TxZ29iSBzS4DLvFOoeKptV>ctMW=*jG z*$>86YL3OCa^-lbQU5jWk8LqRFsp&@C192!VRNekb3*=}>i?d0xH6Yi^@%y2QF9;|z{}hwzUFa7>0Se2bMr<(mZ$4NaK(Eo#qrjLD$G zQSTPqm=MSU)0e?s`|WSRt|LLvqxyXBWu1^WoQr+?Avg{qU#Ow71+y$#@>Z^1HXVbL(w8(6k zKB-pi_D7?=(MOR>99lBE#KJ`XGt~YKv2S0h5fhob^@rl=GNH4DDQLLLPnKqf>#a4i z9=_X9xoU})a31U|rzh3ej#%w+J&6>I^5z-uJSOf&Tsw)ELxVR`e_}&ro``f40xMM& zYD|alcC&8Gx>^mW^jq(hf2zwa)NL62!H=gD-VLoamRE>o>U!+f%cUC3L#dw`z{j&r z)K&cw|CW3-4S)oWtv!<14Dn+jWxFH=GTZk`IiR1c#v(kVP{Mo zgN7w({;+xyM`7GZc_uei4C?cg+30TT!=#zDRLHO^70-Q%5;dVvjRqnPll5c`q?ua2 z=uhfwRgnb620QKiSVVFBkKQsE)N)^7*m5HIt%yI<&Z)cbJXPs}xylR7%xre|9DH)qG7C z9?RnQKaHlx$w_oMU>~|Lfm3aYR}ytqY+FC0YrcI8LU6v`7xF9^0Sx7-Lj^*FWpSrT zrC@eE-zR)6GVaXIQvizJo-Q&nq>j7l%V+QuV=*apJ+%3R@HuUCYo&8o*DN<-((}8Q zaSsRJ*JtqdtdrU;d(?PLoH^ZhGCTXNmLt^H*z#?%nn zguSC)5efNxPS>j#Uq>{E>Ss7%b z72egNhkCq%T`~D?V|P5$I2jfzh-ZkCEYcYWQoKWPpoE}ZU&Mxi5}-;Iz(H_ z$7IOw-`&e9cdus02;}o2VACFKeEDTfmC<3E)|pHrJnKawf5lh;^12-GrmsoX=s zx$&@wr8{o_)|bv9&!@a4BeD2I{12A`Udm1}O7QZ9!3#H-p)f$no-Vr~_p_85Kxsr! zG)n+rh6BktW^`KIep-xH7WKv12I+iyLFiTS zM+9y^-gwU<(5d9HIc`XHGUJvRboh<=$@r2lM_K6ccz^s&NG+Wq2S)TL_90ys@+)@L zE=~C62Ysh{1Sh~#{`O+T$n|yaQS|lAohxeHL`rF@UNNCNs(#GBJ==LaI3SHL@-?&ME3H~{ z^F@6C61OY=C#jNY%dx^6nquwulubv@U3_pOkeYPg7*q4)le!4?Tbvg7T-Rulaq182 z5&`vjnr%*9zH@pC07u9ucv==l>15W3A)MC_w0}oNZ@;5-PARXE{eaP_D2z0}G4abrg8kM^3(5QjJrGEh>@$m!Wby3=MD4$5h~vdnwD zgocH%8WDvp{GD$>dhBMycEes<65%g(SGcGo1e~X|T~@BuUpDNGk|96yX8^rKeuwOoCh-=DM{LYRcEFvmh zuEUhds3#7TSVm1kVMMW-v877q*i*Isx~<&$$!sW|t<;XCsT;4tZDrOx3^psAfIF7+ z%e;PKDM^T+6>p#(d6j9`qx}i_MzjroQE>}b-pmRP2DOaM<u-oBG+wi&lSYSNNW$3-&H)>lK+Oq57LjZiCoCml~(ZK^mB8-Mx1I#b~(x8vR(Xn&Z3tfJ(?*hyzzo$OheB>~M5V zcEbT!#*ivX@yO|BXAyc{@7uhoyFk~mSA^29oR*Waze6~JMEp!;9wKk@q$b!ed)&9w zF22p8WsEOy1QrNUaF7&;|6^)ykQ%O{NPZ3H3TVeb4>`#9f1Ex1Pm@mu2=j0^>RBVe z)3uncX6#j(RKhGiPk~XhdqjuNB=Wc`C%5R-Kl}nGH^EV+qLAW+KN({pK_L$(3*qnZ z8i4UF4(cP+->Uit>IOO>{N5zhA4E1IQk&z%bBF6r ze6K<(xMAZ6=9KK%WkM$u=C{rD!1qEz2wHu%ZegYbc zN+eZtjKB;ND|KMKxTXLE2%!=O%0yS_e48X~mf|4!7pn@K7k!sx<)Kgj-q4o|hzyo& za-+Cdtr7@Kg-w7@mQMH=d?~;V9eoK{1JY5R7lG|_U8#IQs+DC6K0yeDJb^Ze{9k6` zF%6$)hI9zX5`~N-2U8y6KJA!o@9tBCzeC_S^!@5_I$CAFKA4R5t~N(CB$|wfBmR?X z1z14(*x!zZX_&BpzsuNuMOLmREW3E$^Ri~u(pW((UwAHPnv{Jq?VVemp7G9f&~q(TgIN?Ysvzl)y(Fj ziIRy_3UqLHb`A1<;o}#W8iTVaQ9DZta3MN5tuQhpNH4;P$Gk}VJ=mP(OU`Cch6RJjE%C4+K=4sTmql9>3Bf^PDa}e;E@$IY*&3c1asT;FfNgYe z*m2@vPmzr84D`)3?K-X`>EgdSNtH>d1gF9*k|WOUQnPh5GNeRs&7 zb$soJt`I6N?aKoa5NOfdMi;gFMk_9>nv`gEB$G%vWHudkWp;@pX7-j7lgMghYjvybT9@6!sV#|x%1Qt z13}kqM8``9xaaOiPwlGZQ}W9B@@LUb^y}ZAFOJ}xcJoYzBrcOJw@(y+QmHl%s%)&v z?ODGSg6c;pR&#b*3&B<@wfbyEsZ}!#a&d?!GeI3nXeqkNYIzDJH$9e&qEeX^V7I-* z)w;jCQmTan9Q`#1f(R|vp{ zd*v{R9{38_!WPVT0~h38J<$=<9*X$sO}TzA^l5BH zI+d?jZnM*CaXm^!&Dzp3$d~I2o&2SyK&RZAp(IKuT%%J_3iIjHw$~unLSBpPx-g~5 zuI}XbD~Dpu^89Jb>nz5sml)IE&a%62J_eVC^2BV|7{ycOt!Ejo4Bv;K(<;a!ATf&u_MjC-MlV+*Fuou$IR~_2QyGkaSX*fvp zx3G3Dz0CoIZ7xfOPJ*pH_=fD~<2LZY?tYWQ|H@yUX5d}_k> z?LjRmcL00}l7&LCeX#1C-arI0o^z;U%|7$*oAuHXo2EUJE<~uX=wEI(i&V8yJq&{M z#lqoHvu1l1Rk^9ypm2eI>{vixpz}$ZQjiA1QT{GcL!;9zE0KHt)>x+fm|15ftmw4E zL~K_gIg=->6AOvKV(0TGnqK(_@21$KsBfbDoO;DzhZIsu0{W*kT(6P~LjCKbdvrzSD z|FBUyw*%h5owWYFXC4Lv9VGl!m5(E*(h#o;;CWjY=OWv?bm`KVkjSpaw-x-&1h^rw z;cy@Sw1f1jxYp?1hM=EsPLN~(Y8Br}*+_Cd&r-%XddJtEnGbO~`L;E8HwN(C_V$;S zUipYo`&4D#$sXQC;h(S`&v3bR*hGC;c0iJzO~&Wy+jHy$?)ZdgIbjrFIEeSN9Gg+d-nw57vayW`=HDPuJ~Aqwce{7LirFiPdAq zKqTB&|F<1Q&w?W<%gIBkTATF-K98*D8&<9IEXIe!Er?0)bKs=^pu5CHmHfi<)ttNe zLhy(Fl|9szhRcz-$DymX{?gh$V(P)6fEV_Sa*+9wWR}O-m_`0ssliYSrbfojdnZZL zCccDcEufm>zw!m}|K#$d@~MPsH#Zp=Tk!k%w~8-eHycAPx7S88=Lb}198Z$u_GuG^ z6L?QZd-7Ju%ORA~iQ7*1>u!Z&y@Smgrb8;S1&mEQRT&Q^dr` z9Io8<=dK!P9+%NHD&TUfqn>=O03#R+{)$1A4L)u{k}cx1?oC9tkv^cW@)*owipvsk z>}51^XgfXdZiPk|V~>kpw|0^sV$p6<&~)tNb)NM(v?q%y@CSgh_{{Y-Y5oi3enJYQ z#Iur=71}U!x)~PV%Hm^I&o5xE~~8jJUA# z?mk5z;{nFtliBx%mWH5-2Lzf#(N%VU1}Ls7}!Qzu30LjKGhIg~?Bg;S*bTL-|e z@dF5+=EO*5(}UDE-M~EM216&zM;V8r2f}Ala}pDdzxc!-nV7x@Q;HfX_G~FC)@Ip{ zNvnxtK-12>urbGzNjexrn7>T&&yedsLmo9bXh;yQZE{4|3qR9VaeBCWeS2=a%K!wv z!<$+7u6WKy2Ma#b^p`*P0Dx(<04YEsP8V`saN}Un^79X2CO!rT3;PTcT69vaNvh<+ zBfg4E%xAIxwhaHd%F70jl_exl$3M_LPD7tt@5?y&u;2|wd2QS8Y%&6uIQWLn|DtDL z(frvzR~i8pKZ$%Zy!|@aDua({vUxn^^k7wF^IDVkfVKv!NNM;0iG?(87AX4PfBfc; zih1>qc1c23HjEgH+RZzQo0p?DvtVN(Y!$+$T`9~-(sj|ZyPo>S6L>r_UmDaIi~3w(w&;bcgS& zRI7*M*pp($bnHp>OT>{i5&7q@;%|QtSNOsoxh>pWX(pqhzAw**tJTnp7aXwjXg!N? z_a#bZNYe#d(*|2v2hP>*5aZ8K7q{0p8(oqIk7HTT*{@W3Gj_bm#-Gy_+U(2QYaTmz zmYOZPzvg~ki2`qL@@;Fa>}rpvYf`U|W+zX$6lkJ84AEh(9URdOLg|&3u*6s1*pX~- z3iL_7jAgQ`=S%{NlIfB@@x)0|887Y56+b^IO~wYUQZ^kYe^ci#Y{(UlpR&IaiVJV@5&1y$X%99W+{f zd5fLQs}LhQv2J=U?!Z+P+`uNQ$t9C>@Okm`Pk%UhyT0p)+#bvj@p8AMkMi@D4865y zQKY{oM*trfsN~FUZF+E^Kgrsh66?r&(!Eo1#r*p;u7Hp z&{fCpTBthxyYANrTWB=R8VJc@v)qp>0CP|F@sYHT2CNG<~ zXW}FrR4HOF4uHzm$+`>dLpZ|EAGSt@A%*;)4g20%ho1RqkxIt$5^f8@!)W5w+i8o# zwmrm1?~zMp*xG+r*=OL zkACvVxbjgYyw?sJd`e&40;8UIIOfo!tCvm$cCZr(WCbe`d~mSAk4!+S3qrR|2fQ$> z+k2VkL0FSR&LXF3zQayb%B_1IJ1vCKT#Dk4ras?Q;O`1wdJ zeyLGxX87QX zxw;~YIx!ktp(Y%1JQ(wuvT5XHgrw3$S_t!+#QcYED?h0~+JZUn5 zhEt%uUj_}Cdy0tWZk6W%#88@0{dBpyjN6$onTk1c0(pp&R3^3B&g{w3<;a<==|F|| zjX8V$OR;`&QA0LH;%!87jo+2NR*|dg?z1>1fUtLX9H3|A+ zbL8lSe^4XoEp=1enfD1`x?K!9ZE0$u`R%TU(r)*t#30vK1Cwv{@Z+)z=Ppfq?mWV6 zx<<)NvPG{!3H!BW;lao2$h-T90DqQw>(=vjdT!po^!db{d=kxzJ}Nt|O_wLmqEU9h zD^bXnUaP^Y<+<%%cuHZ(zXzSUwc)FEdz~|5N~gWOk}tK}89%dud=7&~WfRG7FRxXB zo6odSEaUOQz9^G*d2$i0${M+AK>a7q=*f3;g|8Qt$>93v&2Cn-xxV~5cB{=yP~Hux zmHt^Yaw9yBTXl44-`-mp~`3`{lM>i-rR^V!IC#`c=q2?Iut|m9j$a zC&CpSEF;^~3*POO%k^Q%2g<8=KDliU2t!JL5OM@yzVS**CV40xoYpjCGqmm4w>wA6 z2cW&6!367732rGw5iW5F>G7ZV&Yc+jJpA>ff|6f|D#S)>saaY!n#QS%LG6-U>-^+( z$p0;VsM&99^74WIWjhbmotRHQJ{Eq7EW>OUXFW{WT z;CtdDUK}|hYuLpo*Z5=(9ayc)0gpg-2uK6iT7N>S&xgs}!(l9ICp2mJjtJkXt(FNkI#l~ZMv7o2PfnF{1Q0J`&)rpQx0NgjF zM!Qrnb1IawJ$xYA;B&t6D|7NYo;A zHyr>6LZ@XD!e0@4bg?CybLnKQ(jZ8GJz;&Yv9WKe2)_CO<23BjCRyc3Gj92G53V#I z(Nycb#-^q@osz!j$0+iMDRGxf%-4ygn2!#N%h6869C6yf!jN?n0ddJqg8cjFVyC;0 z;j$}}W%wL|Xl&=C1#JXrobw|~7*8Ou$H>d}tqW6v4Q2-`S(Dq2FBuWHZuG^h4vQ{L z1(jH+*sPRhsvX~I5!~O}x4Aw(qWP<$} zDruYH41EJ?rlAyyVCIo8#_i25IJ8T!#IIYrMTBkhX`YS&BBtnbjDuX6nacE$01*2XbRis7%7#67H=~6gA*F z4g6VubA?}d9~eK#`QMJgz0}97B#vkV?UdfZrinm6deUcF0_TWME_Y*e7WL0?VG0Xh zJ25qAfvk!_!`R~oL~1n)PXK$@-Bvmv6s=}e=<;ggwP$+>*5KB@f^N`A?aAS=J4w3@ zZ2KNaFS#+yRV^ph?MQYFQ-3YMV&TT~cJ|+$!Se}RTS^~jNWWr}&-wK(c|szg-goZ( zK|x0wM_oq?&FOjUAas<5|CN;Y%g<& z#{SMJv=Q~$cJG$&dbR<*!6qVznt}H0HT~mks~C7~Z2Kl*KELP)p?6!OId1j0oINxQ zgA~B%VUP@b3}J9%P?a3;PKR-pdB>xeMEGPiI!BOhthZbMEM5S-k5_4Gg zGsj>!Nq25c{XkUN7ADQObSd*sIVa(w`Y!(~;Z#V^T6le%+f5c@rKE!wWrJGM|I7YHRioZ1Wn%2XS-jmi$~H2 zT-zL;R0(@Vt@VF#wq;{YUkvvS+-=WeZ%COXOLaeiTG{Jm|AK zXW@~O#-;L!>9!fO(XADAq&xOEU5NnAzI5EO+h4#|Uc6t$7$sCtv4$VzTeQ%K+K=|B zwRp8KPrDH1@d3~TB9xi63){}JFI1gl2Bz;RbTEA!%I0%cT67_@jb+pH-^p*7e0)#} z+F?%T5Hjk%L3yWi}ZeP&=P? z_l;bdzOeNpLSUn$c^azc2l4g)Yzi&I!R4pD%zWEk@m`tw))>T^3Bo)3wGHXsrDf=rEaWJyF*sFK&k|^8Yz1h zNHQOsZgS01<%V0S&f>94s^dBnEm_9*2oOlH%CTLp;C^C#ywlD097rhWw`h5>t+{cLG-lP@GZF=8-v_+5tU78qHnyv^BDIE0-<$rl`RS`AK>AKSVn}!47cW# zNq~h)(w;nZ&wuZH1GDwkY1>K5(`3AYYEc3axVL> z?f_DM?26F`Jf1W8XQsjw399T?8&N!3mk?nB}d;B`%yI5#qcXJ5?H+yEhSm;|uZ0X{vuW^PwH>a}>ML%Yk zvx8uoFB_7vNw|EbUI1GT+>sgrCe0)(YvnaJHoTHNY~33pVG!ks#jZF9@q0+E$dT@y zE|phypGF3Mb(MA-6&t_1=)Oy953#mNi zv)}v3-G3erKXX}@fV#fP6Vk7lkg@o$=~mVvlF5YlNpw z+(^n&tR3o<+Q4njlyeg&8>OIuB+jpWwm(v&7M*eqvT(2($a}AP1RaZB^bfIe^jD+8 zn3AbPDCk(>=cxB9DDAf`Bc=Bj-doUPl|1&@e;UBi>ftGrXC;9Pf;FYYKQE>Kv-2{7jg+vqaPNGmsgtG zw2_L62_2pM0JXYFAA;S6A~*Gvs=5-kwTwsr-MNz*+fGr3s_!zW+E?b2ItcR`d1wYr z?z@_(`BXk-2phTTba%UhR!Hz}oyz|b0h=rLLaWP9`_pwi6M3NLhqLc$cnm&pVqx-Z4&5JUX5wf+pY>5oYsSPIS-ZiE!M)mk$a1C&*1T~IABi4 z*r;ar`k?W*_&FkoM@+t_a3PyCxjY)$o2ItJIe2$aipWg+F8YQxywNFQAc3=3Ma~38 zd^t=vI!`t;yjY7V@9IK?oCz{ErrD6kLCEOLLGG$XIQp)52F57YI4Rcd!4hQLbvZEm zeseIuZ)F42boRm%H2O`)=9)Rt_299|+{2yR!^8!xgdmmZ?9+w5jG9YxSt<^LH|;5r z^;HdQc+GGOMKF<`F}{X>VfEq4lS;Vjs1V=F1uMJh&mlLWLAAW;p12@MOF+AsaBp7) zK(1)auF;VQ6Gm%YDb9`&^VWD0Purz)#=Cxspt(>^2O7Xp|MZvZodN4{!citt zo!MIuipoZ`ONm2utHLSKJpU7VUWeMQN%1e+Pdz14=gP-O3H2%3*ADDFHqLrK7fksq zbY5rR(}ONJE3nV%!cq8cDlEfmjr)=!28saZY%QvbWBX4YQT|SFd@8%#-#=jN1PT7=;q_FAp?_v6L z9DZzI_Cro`3Vk)?x;C0QmAYbNQMILNjg}dPj1M|06=@B8@)P;>y7GqGrjn;!feNM*AmM?#IBWMEU!$l$vl<&v$QLgbb7RFkgbQwN`1n2*os z=BJ`Z!woic_vFz`<4xATRfP|kR;UN2S1#mr&T3f(1& zgmT-!N)gok_+mg1@)W(`r1c;h2Wecn{y& zw)Eq+vMkZgnn+~|u&W*{&BfPyMneo);uKo$K3w8wKXIG1B^WUpbS=S=lmeMvF^NdR zPjN2i!TQ!!Qg^1!rr|}|xm=AnV}`G7O}ZYVa**W^1m`^-Sc$oq8@W}Q5adWUXg?oq z7jE@5eR3<;zpCNq{A}YM5Z%aq@Q%`sm6x9IFb;_WWto7NtsCmdYa_U;EB3}uK9hb$ z0iS!lelmCpfJIGVpWkw?nEs?2VI8X~ChlWpHs`JH+SY5vyBquXidZV9(_aSg+BjBl(MC6}6q4Vn z30g;(A0ib*5_=RrF%Ae09@6B#I9$V-(7=>X(wkbxP9C~&2wT(4Msj8e_ZuiSO_uiA zWvrG!v1sn8A3uTKs#LBsm|?Bf&OkYE#1r<3II!sdfF zE9!_V+sp;sg4Dwfq>k~d=qrD3LY&hp50Lc^X27&|V=@&y!nWOL)|?GD4CSFB0q8ck zz;&6z#=NpPr0L#7=p=b!s(ux(=hn$i%xaCH4z;^c;^MXXH;rhy@nRMJ)k%`kT}*gk z$m}t-U$m4n#4;%BQB%2#pPW>de{7YxZH#VIk)pMS?t7{2^{mp|GO2WDI!98FQ@@co zw-!&zN7|)D4$-HLU^%K}-ae1Q$!LkDXX+Bi`gs=&t1M-Wyn_h#0d!!P^8|SisiTE zrZ7YLD(zk};n`=t-)nNbM9H1XdA!2>&X#J*K>c)ClU?uZV-+-8V<(G(lhgcsQqmTeHyV3%OKIxcd2MsuE%D4Dqf6lL|Lc%Ejho|G7--c z3h7NOI^C%YRDaaR{#aX9j=yDIN8df2nCBsMH%j~LQ!vd&Xxpt%E3cXY&7tJs)eOvf z(qVL<0zvK3FGmKC}w;{DFoYPJ*Xg5(5D&Gp>+F?TDUW7a-+ zUA?!Y4y4kCnPB*vmq=9%$`mE`uLr>pui||zZ#1gb&X0PP7^v6~)&2<*Q~7m{H=EiX znzKgeF;}`ROXo?}LCp@+S6%71%g-TXko#mvSL{nWv_>4^%!i~^R+l93Z@0-V(eGw$ zOQ!BjGVMDHp0$CQ2mHR8CZIvma-PH05vaw;mxMDBU=Lmwq{(d*%W~kmQYg zEXTB;9UY$x^^Dw0Y{{sw-D(CfBFh?>he~gd#2E(DbNnD7$E9*9ZS}!uYcs{t zX}mjPU1z|*wqp6@X-I-VXW7&Xlo-A6@f~f12653^v8g-fHx^y34a~Tic|Ol zOc7v|Na^Fl$7qJRH7NfL(e#yHyg$Clt71ciFYW=;MUAD9IN!Lh@kD#0gh)^42Ru{L z&V=$Mn5|6!^d}9}0&ja~nA`>GA!-@^qRK1i%|u+fq}mXP+;Z*+pJbgGK5Pc;+V}x~ zFub{eZ;%(h0vp-oSIw@Z3=uR}E{{ej-#W%_)_h{l7+f3W&Dx!8R~F(##cSz`=+vne z=z=%aUz9;x0{U=p6L~b3-kc0K?N+t)oWRBE@CM^JGsS}M^Pr$N9&$xBlksPQPrdsz7rmZIuRZD1UN*+CRoozYy{(hZ$9bZS>YjkS_T?lyD^z-9@ z&2Dtp$l1#<6or}(fJ>`CZnfZ`3B)4Kla5W~WroI~NqT^egK!Ouy?*9%>jVa39{c1y z@QcPga(@+XB8ixp6Pnw!U8E5jQol;C{TF6M^;C{FQlQ1}`wODoG$Sch7VHXx^&$0$ z_N=-lOMR!X`aZv>yCqNKj2o#B(zWsf%`A^rxXi9az1t$JKeD%B?E4vKZ~i!N*gIc_ z9fc;Md7!rm%^=SvT#P4oI&5x5oNV?xCQCT|bTTbn7lf{FZu^`}3;Xzm-|RaqBt3A# zB0)bau5cUWtu~5jazY=4c^do1#D$>a@k@UJoXH$_>H=N13OX{Ln?W)&8DD0N znwIMheZ?!IvQ&z!_o1nV{2bs=f_DZVI%wC_$x{9Wtb9q6$;u$NzHT#1&2(D2c6=tV zIkKln=ZpDNUOXZUBl*j)S)*+7j?fTrlp#1(4M5ED)&{hnRe&$s! zc|<_GfAjnWMR((S>tLmJ1>_^G+yUP4z6uZDTi~fH7I%cjthlbS&Tk4gnQ-G|&LFCD(p4j5 zRwsBgaA3F;0hbh-I`4Xkx@ie7O5rm)vJjWL87^-wqHf$_Z;FO ztL>%$;hS>o4E$c*!siXCE>`b3;bdDlGM)H2^}GAMdkEqgqm;`G>I^o5gc*!jR1V*KHLTO zbu0pb{UXa?Gfpe)i)F5p#iKiQ@fvA&mS#bw$p}Pr$>pxxB1qgQk+?^jGNwwE_UNqw z{x$>S{mu7NUYEV>ql#T~>qC;?r6v#ysSeWH8pa@td7(lk?l#~?Ms{t6a(|(+`g#^A zlb}+Nc%jkPTr6yDSBdlnx2I}BJB2c}%6KUf1~g^NJ{s$*f`7nyf-xQu+;x267s8V8 zMXlP=jVMjmjgtihu1*X`0T_Zs2DXjeW#d7EX6M)2V#_E774Ba(&dGIxdF0Nls&|eT zxv|%NR8GWYMb%%OdM?(=lu?!uXxIecdG?ACjGt2cpdCY^kBE=z;@e4sr5>bz~p1$33pM>S|LM zGH4$C1p<2`j%-}C9IcEa+Lw3#r`ZD@#{FODm~8Q40RE=wxi86-G(a4m$QrNQUg-AA z#f7qO{Wu8d`)Ht_=ZZGmDC38<c=@g+m@IW$24}edET!LsKr_Oee=~0;2Is+b@08mUNL#vh7(S342mj?`?Lj zACyUzhZ)z$6L^8Y7PZE)p0xz&&bs?G1|JY->C_!aJQfBm@vR@d057G!g!t&$^r>eE z`m`72S{8qb2S7WbF2@y2C4|**hOSs`86!l) zgk_V<*b^NetASp$DqoLi@8vH{h4?7A&~#ja2!KHe4U+FUQTch)Pn}(dNO{R)uTM5M zKVoTOMAW!A?oKrX1c)by9jcPYEB8&&|>0}M>ZZAtg}jFL~Q?5+b%)S*8*h|Ukc zhpek)ruSECOvg#s`v$Jfu*O6m73pxW-I~3!PPNvP`gU$q4@yV=+}7Z6ot(&?1Ucmf z0(jH5H^yXTB-s8dQins+t)V0J12Rzz20auzr*}98(gk4x0axPohCK#^+{TYE8x_f zmCOMU4&(U-I@KI~_M^j;FA_P@vNU%KKaO8tZfGf_p=OD4+m4tD_<+YY8RV`ekLNRp z?H|M{844FNI0zr`g0+}50D?K%4P-rXKo=!-S1Pe4U0%pF71g$#Vkb>nQ%XpM(3ar# zfz&eX8HYiWYPW$~Ka{rf16G5(nAZoU%qN7UO80BLQt}($<}^Q6-n%f7%U3*~lG4}# zfnD~ocND?VxI_H!ASJtvrH{L_&ouMfPh77$J(ZFeB3`f@$FB{&kmoX$EW4lS*Jj{T zH63>>@2lAA2xpAuauN&Le$$VkLS>&wW8X^Jzi3#M%g!FWDWtR@a+Lct*f!S~O8VGg zu8PqAB!sIt(jTpw74SP^@@M6yU zu%194Fh3|vdzwNi=G}d@Qockg_>eGGL{Bb3(rO!>RR2zWTRiEZ65&3ZH1xw7X zp;3>`pQ; zXsK(gHhP!EXE<)(I`2iz8yZOt!Q=Oc^oWrT6w^oF{S2Ml#ug(`W(ZOblmj*c4mpvB zwzr@1tOlb)M=r?B15P@SfJ6wb#+vKh7@$^`E(~`8Ft2mk?Sx|KAVrl92Kz5`Vxbvs zg05FKbI`o^lCeQ;+0voLaC&^E-TlGyEs3`CGWORKmPmT zZ0Vq3mdejaR{`Ug)LV=$8}JWRp;|7By)E$?J|pR3y)2m-_Z%_gu4?&FtZFvj0$77{ z+P0U|`;XoUtF!b00rwK+Ochsk@M@c6N%2SOx!K%AFir`qO&DD|uzV<4 zN~y=YkLASHQdfTAvfA%Ogieu%zaj)~^#PD6`DPKv?AqZ1$6$@G8EwRvmRL6-I9opl z{N)#iui>19IhUo7DvhET?r z8Pb~97pcSh29g0JbWPu-joPNag_AG*LQ04~q=Ru|wDxNvTQQaNrx<=7pKx48kV>aL7Lo=? zex`MGjqr%Hf7}2hb6^uPEVN0=HP0f*o`Ol#i&)31Ront1vzMR~DYvVkS(RhMY)^aM z!x;B~qF}r$Eu|LEuC?C9S=u4GD1W$UnqW|=`+>fhZT+}Xq1aWtr{Ggt*VP~KX{$px z36l6=%jQ=rOXz2gkJ=EGFQ#ucQ;(`5(s^z3nkAb*kn5urcYX;UaqU31oW2n>9kkZy zn?DlFyhS`UfRE2MXWMWj4~x0IGf*6A4Un)+POzjjq1;pIT%|D$FtiKvl4RRy3fTQ5 zridT!lC8=gnr;?k#`Xx^gAb*3Q{1P_p}09q$|Ozg=e^|}cvJ4?vW9BSc6G`i5Y}}^ z7mTqJo?<6SIF7m+?4O99ZT}4|pfUTlAzTR6_Fb%%5@9;|Y`T5aNpF*Mn%k`VEItR# z6<#_^^+qZ0CXaU(pUXS{+X)G!oMefY_R^7on7y3Rg1 z?px4#V85#Q42POu31hoyX!)jnPU#sdxUx?qK^n-*n#j(P9Vk9nP`5YWadX#LNXY$k zr-u6FcqpOGhF6!zMtx;JIHUO*1Emv+B8D{tX}f@OyLrx)SXWsIWdg69Dn-43 z{Hk^n9yNBP0LC%N<3ySdkGXzd%wIUKf;J)=eTVNW{;<+1F}qEREr&ti3zbJ2m%}#> zd4;Q3X1DaPz_av7NR^9q+J!pp1n9HVL-q`nM%;|gy0o@y^JW{{bZ~?IJcL5sR{I3k zOwetikcZX9yfo$kR+YtIVCHiT%V-SvYf7$yUvP->a~R!fEl#$^C(BOIB9Mpnhosfk z3~bm76!iX^hcbY@V5Y1WvneS(JjmMqYTu94vz~PuEk&(s*>=}5a9FnzcAloiNya8b zVGiuuJZ|%qsVlAz2O(+?^;LA(jAmvdyzt_j%qc!V~5XF zg=lbxzr7KF4$I5(@NH z%>j@ukniaAs(w4UppUvAgxcvjk(G$DYDsn22R+BKR7O zFB8(JyHw2?GbMlFOSJ9Y>=wI^3Cd(TSP0=KV-`=t1e8&XyHw}nlZ^6w!(Luo$?$po z6eAa2@hL10y%5C)Zv#F~H)$T*bKNqGfs5Bx3xlIx7&@)Fo7`R?yJzwNAc%)zm8~7f zCSjAqn0s*AF(I%#$l^UAxvEK85;*P9g;pFL<;P=9+iJH&4;;)TT7!ui3yz@5$AQh> zjWzV?=E=07q-JZ=!}Io>s}*FC#VA`J?8mcAIG?#%soA1u5qqR*EQq*F#nVNSx6`Q& z(kd!tLc3*3oa*b{3zbcSM{)Pmk=+gxPN-C@7{+@+ko!6(u$KG_{r7IrW8zB%aDoxx zxA*acpGdn&56X-?93dSM1X(NQNALZ%WnHRW=I^m;@kBfq@*V(<23y*g1K1nM^)an|{`R4@fF~)6Tjs7i zDRS1~Y~;!1i%gFox3l{IBPH(RQSWsTVomGa+4~{XlC(9^pGde2WHW!Le5v1fwG<#z zX~mkNifoG5(`2X6%aiqfZZl$H@eo5Z^<|+VYwb4*iL3O(kO$a1IP)6Nh-Ez^d?%qdEs}dvw`FjTA zO7rgCvQ@pf0fif!q0YP zi95VKog95T9J2FfvtnP(4?VI0k@*noR zw$4m)!5JqkniW=sq?F?NQSaV9k~8n%F|*C$N4Lv$h{b?-kZhM49~}3YPtpd@ zmcpxOOq(C}$BS`a4la`OW`utG2D2`%SGmQLLu+Noa?+b0TI2dj>N!-WfUYghUozk4 zD177kooEe1`|?v`Sf+{1kZBHzU*BN!t-p64twU3txI*{dO;MXvY=I$Ih##TpyolGr znWTedlOpY2cOG)Jt9boXIqj;4z|yC}Fv%*FbE(FujsMltxr?b?Fj}ag%E8u~n=ex0T5}_29sj!LR!Q49sOBTUW-Q+7@LN@XLcL z%ZzjxroHqZ_h_R<)!&S7lavrRs7XcV{CGo)iK%+NTSv{NvBUQ{TyXFQ5`55kX9&%1 z#_s!bmQRpgjSxm#R{~f+n&m1+4s0BIJV>%wkJ6rYelRiZABTRp! z3pULV8R&a!8#ugmxy`(us~zL=*W zfL-CH_%@`Q9(R+ksc&)i$5mD(HD50H09(*!73!w7mvV~vE-Srij~n>GHC*YV`w{uY zL8z^*;lZ8UznF^v7j@?38H$z7(FMVqS=fDQx|d8COhe96=Rh=l9m9hGV;5PkKMt4s znM+1>l+GY2e{~cOQ8<>DsE4UdN)_WVB?LQFP?E&^SvhHiS@M8b7o`E;YB@2Vi@%u% zfo^XJa9IzGDWRs`b#YqOh{0q0-F3aGex>fYVa5LX)g4 zuhWvuIwaS34IxwRiz4XaUzhHBZu$a`+ybfc_^aicr)%3(p@+EB^o$=ik{j+ygwIil z5a$Y>DH_bfeA7tINbea@ldXP|AKbUkd*l6pc;TeeI{oqJA{_B6#*VTE#Mr?tyQ811 zo_hgkC%)(lvD!i>s&~3hXYbt#pX?VgX3Q#hP@YdGW6wT>?T6@ z)J4&E?@3?)F@5cxPIV$0hzjv2dvR;}>PHytUIxq{&^1Ce;%^=Pr*^l7nO7;P2tZ%mJ)6KUSHSLGyM(R2`!-9%`Fdm+F& z!^iVvJ;BWC)1PVgCqBW$QN~(F>th4wm|7%Zy5#=1Z@=nXEVjF%iP+z&5o0}P6s^^$ z$IgP?3PsePIZX4;(ccu!pyAnj!KAqqVzRY*R2jdzFVt?PVj*wVwf;D2cQf=7jUsyL zz^VzonH@e4ZCvO{2Q2XBJmTDBltYh0*ham__81nC#Ovm_S|WPbqF()#FGdA%^(k{z z3}iM+oLTamCFQF);yEql_qjuiLr=v2G_M~L9hRWStPG_|V0Ax5_U=$7;0{c!{nDCT zorL$!^m*S4vZv-_{wlU3(4V*VBB3@o8^2<)i5OwnHsG|mPsit9;JpIg8w*MHotcml zB?Uz4aF3(lw2URm!$8c6P~;(F`a@hzofPh;$s9WC7!tK@g(EdKocgQAz%f~4@7W%@ zFCPv*n&T2yetqKYDwoO7sY;2Gd}uWqyxQw0LA4M}KCNKH1bep{+4RffDA~;CGYA$m zjSFe8x;Z?+3yUyqrdg@r5-p=SeU#36oOQLyx2`46R{T|P=ylsdb<(5`BSA);ENkK; zBj0K+8jnO_FPqD?(v**@Qr*LOD(K;bJ*xRQ8q39It~x2A?XwJ4X=3nhbzBtFS9a*1 z?mz&l=5g^3N^tg0U$cw%{d;^2&v_|cOg@c=t_Mb5mqt=pPDeGSlUaW3w^@BehegpJ zLOUB(9;@~cEy)V3cVkYlLMV72g$WhSpBLHQo$P5RPnSqnb5j%B=EBariAjB9Q)BVf z^ZLO0?FOCt*O`7Juot8r2oIV<`l|xo*fVC3ulx*co3#ccKBgOrXQy(nM&M}kWJNP9 z_z3ih^h!`F-7mQ^KWO~p1@}94id=LH``iNXngZhZ#?d+{U%Q&-A*Asf;n?#*fLUhF zl%_AgJh~h@IgS|C0=Mg|O} zS_!5Oth7Odn<0vlGUJEwvxub=3DtTKTsYHI#g6OEqzt6yO>n5dgS}bXX-LGx(;UiG z<@=*`W^4cnED24-$B*lgmc;|&uz+H}ZPPfpFiu2{OilbBE9xSSu_a~cF)PV?5 z(uhsz>y--{P1wP7sYC$ML3k5bx1)w#SpZl-GxrLR_f zSZT{|l1@4c%6yHc-Bx?K7kI53`qCBvcW0CaXyFqr$ltMUp5LVYvLU+>nk*8EXn>vt zU3{qUm~RWKt*lI83ZHM>hwgdhH)a*vHF{FC#>R!AuWRW;4j_953Wk zOsKgU4%@=&TcO|;&ETn72_#a}V<^YG9hHY+G%TEq$Nqo>VqCUy9kaJUWZQUG>B#!S z>bCKO8(;4Rb{EHal(HeKXi{Ky(tBiv>@dk-cBLU|i>ZH}HMPYUlZpm);a}yNcYCaa0dl#Dy((LBX3DSQ|V5 zTIAJ6zYwsC(HT55qYg)0)!$@0jzo46%}K;M3W2Up9DCw!G4LWjAog}*gD55E;emHw z+6I=s9$Xgq#zZ>2qpc3DYkE?)*VIMc1*?;X0t zA&5DV)jReTjthFD`-dSaWdrJ&{j4Ut=Ug|t-x)e6yExOA(r`PJ!TpeHn`=MNh|0Z&+RKEdu5Jw8p21!!qwBSTEAVCy|c*XtE!E!|8~ZUxa5= zFFy_LTI9QrTiQv5sMX)-UaVJ_<4D81?=s*o{Z1=Op>yd$kI*~udy`0XiQ_MzkG#T0 z11@7axh2lW4{!LFNKmX}uCa>`$R#+BW}2yK z+X^*S%e1?A0*t`J`*4^3>Xa5|%RMH)=k&9)$4N9AgGsf9$0f1)60sv1Dq2F(8XzfH zu84$%UdF9-_M6h9quB-9;?Y?eP_ypp{%qO2_v7sN%OXJ58h2qCwo6f>uedfJSoVMrpC$juqr}bxCA-7?!1vwmcIuZV<-7YR1 zh$WE)2DGH{y4dogM1KmSO(mo8{nUgU={e$DLMwm3Yn?$_=5Lo zv>#Rg1{dDdimPyOX+w zsh!j4n1I8@pjfpp*9x!;#k0FN0;oAtepBwG%Cg^1O|wEGhmBl~8|+1}w{rW&A+L8H zRIsBH9bemt&fkET#6=JqhMoeqnXsj5=>^&dDSq8o{3?Y|IST4=>ps28+d;#d}5ZRQ#{sKYR)Vz*I!+};tEGVOOTA8 zp+0EP=G&9I>6Un+R9(8^yu&)-J3}h$n^F2GojM@y{#g&L)%~`qv&*G6wBGnC2MwFz zv?$8|*Mfo+?1^?N@=DLXa&%(Vyt2onT$awmgNBCUQ|fjr;4;P{pc~UhF2v9=wCjEb zl8m<{8O9zV+f9X6R(46o8_hljmZ($Y5cG+8@3%`A;(te`YCiHLTfr)1+eUo!Puhb9?Nc;H@nSh5(fIjZ8 zS9WsBT=hG~}QD{>eEb0OyDaCnEndtA9KIb+^mf73+5V$zOl}D6n~+`%~`39-n*6d`5zUo?LD)cyN#$07mpGW!Nx zFH8rA818lj6bpbu^q5xAhGU8FhXj>2{}o3-O#(+8LZh*+S%dr0op=>_F7>4&-K$GH zCJJRke0k{WGq3c8%Q-oJpFmYW2k>NmTvbDc_wHJ?(}9MBGB;jFAZwdA)cRJK^Sz<- z9;2@)_^lNl1)vep5cuYHlx*nL{v%y#%E04Xw=UK`DR!#rgS84*Z>OMf_lC)cXJ=uV zenA9v2N#ClH#>%*m7(HQ?72uG%d#nzjKAqq8KXZfl`CRfBMrCl5bW;qv*M!y-Qw`t z-D&QN_53y&-dE1k+NR`LemmS6cMoIS)s~}SCZw&W`!P`kDH!@gd1DhX@U<2(X%cgyll~Q(c30AO7A%y(y2#q0=-W85p}OkWK^$oI z@c{wFJ@7XO@w9M>J}vcIrt5b)eW?@X(IMC_z7%z_OnDiNYNf@6F%7@b4k`FgO~7G& zKcNNJ9?GmCQJ-kN*YhMViDM_-6r)8y==k4-;WH^9I=+?DB)p@w_M9263;d)<@3{mM zWDF5i7V)8J>hS-_Ya;{D8{%F*W-aW#l6lPy>4v(&4e&95n)zn| z_){O{0Xl&tfS8@`_ogukQrp_cZnAgMP&b%)$jm%KQIec54z04UbD+xaB07I4W?X@e z54+LESC623N0Fgw!r^)^o)}8Gy1O3-6Ccf}8c9fg>~#Ifxm^)wM# zuYn#;rQ^RfDi_yeS;P)NA@;tNsyj<}6clMvz|>onjtrOxs>+tIY!ig7!X;aoUNyM?Bki3zwI>>~EQ#g1g# z%_G`hU352{54peZ`(4*mlmOh3>;XSD+sN`5*>N7Feq_;yPtl0${=@mMUZL|GCbhtq z)Y8P{hl0~B)1h*A{Q#QF+>6v(iqRS175(Kbfrl-6fR$*9N~&xHUPZ`N&}wpj7V<>i(P_2`xw@E#h-0gb*^f|^?FGNr(hpnRHggWm z?z{tLE>;9B2HU7c!i95Jqvm@_d)j3=y6O?uJ4d~43%^@dGUZqT?!5=KC4-<@RJ%283U$8i#sPq zji>k`9q#PCyiarN^@EH9lDqm=sL=jvbEG~b5J|0Zc1XkATY8RLA9N-&bD`qUDXBq= zXH@?Y$m$VM9~JK80)MMJAKU`($5z0fMnSi<%#V1h5zSTkCwGAyhoU@rNc{cRg@f3eLXN(2gLd@;lbN7{2qd^6s1n zFGzgF6W-Bl=*5xhYFaElH8WxEl|gotSb!HXAP_`6D&l7?0?Ttz>dmoJf0a~W`5)eL zxySjLro5fc_6~Zz%J;sW2FEs|UW^KU(Vw#OBiLSqK|RBJp&#yp72okbDXHS6Jma1> z3s(@&=>AALemJ}jFWfdmQcyE4UWG_dYTu{0>eLJ2i~y(FPD}hp&Q+Mqzjem{Y;qPy zuD`tvJ|rr@x5d3OncpQM_@yQA_KL#_B)zP?*Mci!qotX-^2k=$BJn}&>RQe>G5BG& zSw=YMxw{37bg*03fXg1vJAW35%a6p+g_JTZ1zKr>Rm!cQ(ytwEUs8U6Y>8}((1h*e7FKJ6n;Kt==eS8;BFt+w#D1S zyB|gsN3GHKy2&MI##6(kq%*t#C*pM8UPU%S!a0_v?MTkAD~;QjI?H9c$oXni4V{wa zeG6?_(@QTLtHQl^v)65k6{n3wx)%sA|$CiI?c%pAFKd3r$Wv5pcTe- z=ZL$M9v`w}3yLJoNJ-AB1Cl|;&|}%Zjlc>kNZQuLA+Ji>;hd1T#R)8OZ z0UMSsrQ(0Da5llW7fi2hgz=*G(tX=o7>Qn$eb{I;toqo%^V`h+Wnp_7R!I12Vu{nt zPusoBf-nYW`dON&KE*y3+tFHyr~l1}m%#>fD+$YOz$<&p8bZp#bJ&exPy)x-aZte8 zu7y2r-VkvN$5)QQ`@c0J`O5-dCH`J9TQ00vFX24VY5Hu(3ER;})1)S9{poK){Fkjj z$gD+<>4zsl*m}I^pkn-EiDi!Zu8~#3)7*B?e0j7^*j|l~2 z;$+slaVZ_B^OpOuA88hc+20iY;bVhiyG0pjm$nJK)LltFCOi=kBC(%}t9ZT63oTIh zk@a428O7_PsiX&NQE>-*^;DDPu^+9DmxC~ASG}34ecCP{1x|PeSxsR#4XptzW(LLT zrQow-)*-wdoWIB}lZ~}E-y|Mr`cX1`Rig`|PfA;J;q|X=q*0C0Hs^pMC57+nBS+& zMUs>JF;=dXnbbrh^sdtdx!c#>o6kH}i$q{+2weT|+!LghziIFAU%%S%(GJCcKXb$( z?3Owyj7qP&at^<8x*O3jcg1|-8z>nY3uC4oj2VSdWc_FI8-PvYkWL9`G#iKJameH~ z9cVKDI_doqdVkJ|lfAk5uST=3^f$rr|Jfzm048DT;tz5nWS_2DDR+w%XV0%+z#T7Q zMIq@Fk6-!w9xQneIsL}jm>khSM^{8r_SlATXMI7T+mx-0?1&K3f?2N)?ycWT5~KoK zYI8#h{2K1hIrFVa{J#yCZp;XIReK(;o4=m?yHyA`YNN7-MDE|3PL7mWdi`VW!3xG;uI@k_E?|*;>)T0fm&JdPz(M%W zMqgj+-hMdaIybxr4KLXTo-YI4+JahVsm%W7*f1|d(`u4c2+b=Cb2T+vHa7q}+*Fsp zc;Zn)@vQGzvWL2L^uL1$&LdLX51V|gxE~>~HT&#yIxzgj$vt~RI62Ro_f$BYE8cw1WR|4iR*mbr5cj>%6!F(T{OqR3`me8o zB|^rY_RlXZ?r$rALS2De4{TxW9j--Dx<371!r;Qer_Xo@zef7f)P($IJIMrL<$B8g z@$Ff92)e;_P8(ICCloE51VLCfmL{{~q=}uQ8$|T22Tzgpi+&V;K3=&YbvSy2xXRM+ zBD2LBEbw6EM+b_F_Y+6v7b{3%M_K5sfpo58+B&oRX~ZI1kwwZKp{YMFT4NOmCepie zZm&Ckw9AlDnLa?ri0Eu@H$Th&NhBZtn?DV8j_})*J+C4UNpJ77u9+WDN2$x>^ zv5O;=*iLynkCFF(x$Z!<-L@MYp_3<{Ng#wP=?YhBAcn#ZT0JrauojEmYl}RoZXWibiO?abR_zSfmL;D_2_fTea3Q0CSYl@Bu;L89CatW z)I_(aAxW@f1ZWG$ZbN7P?<=Jmvd`zwf!;T!XK|2C1QVMVsUjdi!RDk=vlmQpw<*4) zs;w3;wDeFZe_Q$1AF%j$b5pTs7$jL40Gftl&^}Ei|I?Ddr-Knj#?61l;FmlE+XM%1 zp!^Zw{Fj}9%3J}tHtx*&&pW^a2zb;VDpLI;NPj*2U*X@#|9_ Date: Wed, 21 Jun 2023 14:17:59 +0200 Subject: [PATCH 28/32] cleanup workflows --- .github/workflows/cloudpod_release.yml | 4 +- .github/workflows/main.yml | 16 +------- .github/workflows/setup.yml | 3 ++ .github/workflows/test_cloudpods.yml | 55 +++++++++++++++----------- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 41ac5e8..5fa88f0 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -9,7 +9,6 @@ on: - 'README.md' branches: - main - - cloudpod_workflow # TODO remove permissions: contents: write @@ -35,8 +34,10 @@ jobs: uses: actions/download-artifact@v3 with: name: cloudpod + - name: Display structure of downloaded files run: ls -R + - name: Prepare Release Notes run: | echo "This release includes the Cloud Pod of the sample created with LocalStack Version \`${{ inputs.release-tag || 'latest'}}\`." > Release.txt @@ -49,6 +50,7 @@ jobs: echo "If you start LocalStack with \`RDS_MYSQL_DOCKER=1\`, please use the \`mysql\` pod \`release-pod-mysql.zip\`" >> Release.txt echo "You can click the Launchpad to inject the \`mysql\` version of the pod into your running LocalStack instance:" >> Release.txt echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt + - name: Create Release id: create_release uses: softprops/action-gh-release@v1 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecfef68..c1e95d7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -61,21 +61,9 @@ jobs: make bootstrap make deploy - - name: Smoke Test + - name: Run Smoke Tests run: | - awslocal --version - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output - echo "show tables:" - cat output - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output - echo "select Author from Books:" - cat output - return_status=$(cat output | jq -r .status) - if [ "SUCCESS" != ${return_status} ]; then - echo "unexpected response: ${return_status}" - cat output - exit 1 - fi + ./test-helper/smoke-test.sh - name: Show Logs if: always() diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index feb3295..5f3dfbb 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -63,16 +63,19 @@ jobs: make build make bootstrap make deploy + # TODO should we run smoke tests before creating the pod? - name: Run Smoke Tests run: | ./test-helper/smoke-test.sh + - name: Save the Cloud Pod if: ${{ inputs.store-cloudpod == 'true' }} uses: HarshCasper/cloud-pod-save@v0.1.0 with: name: 'release-pod-${{ inputs.database-type }}.zip' location: 'disk' + - name: Upload Pod as Artifact if: ${{ inputs.store-cloudpod == 'true' }} uses: actions/upload-artifact@v3 diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index a189a93..97f220b 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -1,9 +1,9 @@ name: Test Released Cloud Pods on: - #schedule: TODO activate + schedule: # “At 00:00 on Saturday.” - # - cron: "0 0 * * 6" + - cron: "0 0 * * 6" workflow_dispatch: push: # TODO remove paths-ignore: @@ -11,6 +11,9 @@ on: branches: - cloudpod_workflow +permissions: + contents: write + jobs: get-releases: name: Retrieve Released Cloud Pods @@ -46,13 +49,16 @@ jobs: download_url="https://github.com/$GITHUB_REPOSITORY/releases/download/${{ matrix.tag }}/release-pod-${{ matrix.db }}.zip" curl -L $download_url --output release-pod.zip ls -la + - name: Setup Python uses: actions/setup-python@v4 with: python-version: '3.9' + - name: Install Dependencies run: | pip install localstack awscli-local + - name: Start LocalStack env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} @@ -74,6 +80,7 @@ jobs: echo "Waiting for LocalStack startup..." localstack wait -t 15 echo "Startup complete" + - name: Inject Pod run: | localstack pod load file://release-pod.zip @@ -82,29 +89,33 @@ jobs: sleep 1 state=$(awslocal rds describe-db-instances | jq -r ".DBInstances[0].DBInstanceStatus") done + - name: Run Smoke Tests run: | - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "show tables", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output1 - echo "show tables:" - cat output1 - awslocal lambda invoke --cli-binary-format raw-in-base64-out --function-name my-lambda-rds-query-helper --payload '{"sqlQuery": "select Author from Books", "secretName":"/rdsinitexample/rds/creds/mysql-01"}' output2 - echo "select Author from Books:" - cat output2 - return_status1=$(cat output1 | jq -r .status) - if [ "SUCCESS" != ${return_status1} ]; then - echo "unexpected response for query1: ${return_status1}" - cat output1 - exit 1 - fi - return_status2=$(cat output2 | jq -r .status) - if [ "SUCCESS" != ${return_status2} ]; then - echo "unexpected response for query2: ${return_status2}" - cat output2 - exit 1 - fi + ./test-helper/smoke-test.sh + - name: Show Logs if: failure() run: | localstack logs - # TODO add slack notification - # add https://github.com/marketplace/actions/keepalive-workflow + adapt commit message https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs + + - name: Send a Slack notification + if: failure() || github.event_name != 'pull_request' + uses: ravsamhq/notify-slack-action@v2 + with: + status: ${{ job.status }} + token: ${{ secrets.GITHUB_TOKEN }} + notification_title: "{workflow} has {status_message}" + message_format: "{emoji} *{workflow}* {status_message} in <{repo_url}|{repo}>" + footer: "Linked Repo <{repo_url}|{repo}> | <{run_url}|View Workflow run>" + notify_when: "failure" + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + + - name: Prevent Workflows from getting Stale + if: always() + uses: gautamkrishnar/keepalive-workflow@v1 + with: + # this message should prevent automatic triggering of workflows + # see https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs + commit_message: "[skip ci] Automated commit by Keepalive Workflow to keep the repository active" From e692cc82ef2c85115a281cb29817a1996bdc2029 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 14:33:52 +0200 Subject: [PATCH 29/32] fix cloudpod testing workflow; add troubleshooting for pod injection --- .github/workflows/test_cloudpods.yml | 4 ++++ README.md | 19 +++++++++++++++++++ images/screenshot_docker_desktop_setting.png | Bin 0 -> 142406 bytes 3 files changed, 23 insertions(+) create mode 100644 images/screenshot_docker_desktop_setting.png diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 97f220b..e8b87d9 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -90,6 +90,10 @@ jobs: state=$(awslocal rds describe-db-instances | jq -r ".DBInstances[0].DBInstanceStatus") done + # checkout to run the smoke-test.sh + - name: Checkout + uses: actions/checkout@v3 + - name: Run Smoke Tests run: | ./test-helper/smoke-test.sh diff --git a/README.md b/README.md index 2f3ff22..4b6b049 100644 --- a/README.md +++ b/README.md @@ -222,6 +222,25 @@ Then run: localstack pod load file://$(pwd)/release-pod-mysql.zip ``` + +### Troubleshooting Cloud Pod Injection + +If you are on MacOS using the Docker Desktop App, and you want to inject the mysql pod, you might need to change some settings. + +The error message in LocalStack is visible when you enable debugging (`DEBUG=1`): + +``` +Different lower_case_table_names settings for server ('2') and data dictionary ('0'). +Data Dictionary initialization failed. +``` + +To fix this, go to the settings of the Docker Desktop App -> General, and then select `osxfs (Legacy)` for file sharing: + +![Change the Docker Desktop Setting](images/screenshot_docker_desktop_setting.png) + +Apply the changes, and restart LocalStack before attempting to inject the pod again. + + ## Contributing We appreciate your interest in contributing to our project and are always looking for new ways to improve the developer experience. We welcome feedback, bug reports, and even feature ideas from the community. diff --git a/images/screenshot_docker_desktop_setting.png b/images/screenshot_docker_desktop_setting.png new file mode 100644 index 0000000000000000000000000000000000000000..05529ad986ff1abf3c162ec8517160e7cf609599 GIT binary patch literal 142406 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

AifS^9%~Hj_(49t@wN@XTU0m67IbfUS3jF^0!>T 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 OlYXFZKUdtq_x}J*++*JW literal 0 HcmV?d00001 From c55f26833c73d8f28a03bff087aee448df6f8f5e Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 14:42:37 +0200 Subject: [PATCH 30/32] move checkout of dir --- .github/workflows/test_cloudpods.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index e8b87d9..31b771b 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -38,6 +38,10 @@ jobs: tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} db: ['mariadb', 'mysql'] steps: + # checkout to run the smoke-test.sh + - name: Checkout + uses: actions/checkout@v3 + - name: Retrieve Pod env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -90,10 +94,6 @@ jobs: state=$(awslocal rds describe-db-instances | jq -r ".DBInstances[0].DBInstanceStatus") done - # checkout to run the smoke-test.sh - - name: Checkout - uses: actions/checkout@v3 - - name: Run Smoke Tests run: | ./test-helper/smoke-test.sh From 0c1f8f0c10ee342588bde991b7a441a3a6b05f3d Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Wed, 21 Jun 2023 14:52:02 +0200 Subject: [PATCH 31/32] increase LS startup timeout, remove push-trigger for cloudpod-test --- .github/workflows/main.yml | 2 +- .github/workflows/setup.yml | 2 +- .github/workflows/test_cloudpods.yml | 7 +------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c1e95d7..9796b37 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,7 @@ jobs: LS_LOG=trace localstack start -d # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." - localstack wait -t 15 + localstack wait -t 30 echo "Startup complete" - name: Deploy the application diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index 5f3dfbb..ead4313 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -51,7 +51,7 @@ jobs: fi # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." - localstack wait -t 15 + localstack wait -t 30 echo "Startup complete" - name: Deploy the application diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 31b771b..656ed9e 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -5,11 +5,6 @@ on: # “At 00:00 on Saturday.” - cron: "0 0 * * 6" workflow_dispatch: - push: # TODO remove - paths-ignore: - - 'README.md' - branches: - - cloudpod_workflow permissions: contents: write @@ -82,7 +77,7 @@ jobs: fi # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." - localstack wait -t 15 + localstack wait -t 30 echo "Startup complete" - name: Inject Pod From 088ca53c68555c1113bac036b9bf8da8dab79520 Mon Sep 17 00:00:00 2001 From: Stefanie Plieschnegger Date: Tue, 14 Nov 2023 15:15:37 +0100 Subject: [PATCH 32/32] remove mariadb pod creation + testing --- .github/workflows/cloudpod_release.yml | 14 ++------------ .github/workflows/setup.yml | 14 +++----------- .github/workflows/test_cloudpods.yml | 10 +--------- 3 files changed, 6 insertions(+), 32 deletions(-) diff --git a/.github/workflows/cloudpod_release.yml b/.github/workflows/cloudpod_release.yml index 5fa88f0..c7f8208 100644 --- a/.github/workflows/cloudpod_release.yml +++ b/.github/workflows/cloudpod_release.yml @@ -16,14 +16,10 @@ permissions: name: Create Release jobs: build: - strategy: - matrix: - database-type: [mysql, mariadb] uses: ./.github/workflows/setup.yml secrets: inherit with: store-cloudpod: "true" - database-type: ${{ matrix.database-type }} localstack-version: ${{ inputs.release-tag || 'latest'}} upload: needs: build @@ -41,13 +37,8 @@ jobs: - name: Prepare Release Notes run: | echo "This release includes the Cloud Pod of the sample created with LocalStack Version \`${{ inputs.release-tag || 'latest'}}\`." > Release.txt - echo "Please use the \`release-pod-{database}.zip\` you need for your configuration." >> Release.txt - echo "### MariaDB" >> Release.txt - echo "By default LocalStack uses the engine \`mariadb\`, so you need \`release-pod-mariadb.zip\`." >> Release.txt - echo "You can click the Launchpad to inject the pod into your running LocalStack instance:" >> Release.txt - echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mariadb.zip)" >> Release.txt echo "### MySQL" >> Release.txt - echo "If you start LocalStack with \`RDS_MYSQL_DOCKER=1\`, please use the \`mysql\` pod \`release-pod-mysql.zip\`" >> Release.txt + echo "The pod was created with `mysql` engine." >> Release.txt echo "You can click the Launchpad to inject the \`mysql\` version of the pod into your running LocalStack instance:" >> Release.txt echo "[![LocalStack Pods Launchpad](https://localstack.cloud/gh/launch-pod-badge.svg)](https://app.localstack.cloud/launchpad?url=https://github.com/$GITHUB_REPOSITORY/releases/download/${{ inputs.release-tag || 'latest'}}/release-pod-mysql.zip)" >> Release.txt @@ -59,5 +50,4 @@ jobs: name: "Cloud Pod for LocalStack Version '${{ inputs.release-tag || 'latest'}}'" body_path: ./Release.txt files: | - ./release-pod-mysql.zip - ./release-pod-mariadb.zip \ No newline at end of file + ./release-pod-mysql.zip \ No newline at end of file diff --git a/.github/workflows/setup.yml b/.github/workflows/setup.yml index ead4313..0cbeadd 100644 --- a/.github/workflows/setup.yml +++ b/.github/workflows/setup.yml @@ -5,9 +5,6 @@ on: store-cloudpod: required: true type: string - database-type: - required: true - type: string localstack-version: required: true type: string @@ -38,17 +35,12 @@ jobs: env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test - MYSQL_FEATURE_FLAG: ${{ inputs.database-type }} run: | mkdir ls_test ls -la ls_test docker pull localstack/localstack-pro:${{ inputs.localstack-version }} # Start LocalStack in the background - if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then - LS_LOG=trace RDS_MYSQL_DOCKER=1 localstack start -d - else - LS_LOG=trace localstack start -d - fi + LS_LOG=trace localstack start -d # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." localstack wait -t 30 @@ -73,7 +65,7 @@ jobs: if: ${{ inputs.store-cloudpod == 'true' }} uses: HarshCasper/cloud-pod-save@v0.1.0 with: - name: 'release-pod-${{ inputs.database-type }}.zip' + name: 'release-pod-mysql.zip' location: 'disk' - name: Upload Pod as Artifact @@ -81,5 +73,5 @@ jobs: uses: actions/upload-artifact@v3 with: name: cloudpod - path: release-pod-${{ inputs.database-type }}.zip + path: release-pod-mysql.zip retention-days: 1 diff --git a/.github/workflows/test_cloudpods.yml b/.github/workflows/test_cloudpods.yml index 656ed9e..bf6d482 100644 --- a/.github/workflows/test_cloudpods.yml +++ b/.github/workflows/test_cloudpods.yml @@ -29,9 +29,6 @@ jobs: runs-on: ubuntu-latest strategy: fail-fast: false - matrix: - tag: ${{ fromJson(needs.get-releases.outputs.matrix) }} - db: ['mariadb', 'mysql'] steps: # checkout to run the smoke-test.sh - name: Checkout @@ -62,7 +59,6 @@ jobs: env: LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }} LOCALSTACK_VOLUME_DIR: ${{ github.workspace }}/ls_test - MYSQL_FEATURE_FLAG: ${{ matrix.db }} DEBUG: 1 POD_LOAD_CLI_TIMEOUT: 300 run: | @@ -70,11 +66,7 @@ jobs: ls -la ls_test docker pull localstack/localstack-pro:${{ matrix.tag }} # Start LocalStack in the background - if [ "mysql" == ${MYSQL_FEATURE_FLAG} ]; then - RDS_MYSQL_DOCKER=1 localstack start -d - else - localstack start -d - fi + localstack start -d # Wait 30 seconds for the LocalStack container to become ready before timing out echo "Waiting for LocalStack startup..." localstack wait -t 30